程式每天都會產生warn,我們不能及時的監控到問題,下面我來寫乙個shell指令碼監控warn日誌,如果有warn日誌就傳送郵件通知
首先我們定義乙個配置檔案:vi config.ini
在配置檔案中配置一些引數
#收件人(只能有乙個)
#抄送(可以有多個,以逗號分隔)
#包含欄位d(多個以逗號分隔)
include_fields=exception,error
#不包含字段(多個以逗號分隔)
not_contains_fields=aaa,bbb
interval_time=1
#warn最大行數
warn_max_line=100
#info最大行數
info_max_line=10
#檔案路徑
info_file_path=/root/gateway.log
#warn檔案路徑
warn_file_path=/root/gateway-warn.log
然後新建乙個檔案:vi monitor-log.sh
#vim monitor-log.sh
#!/bin/bash
config_path=/root
front_time=`date +"%y-%m-%d %h:%m:%s"`
while :;do
interval_time=$[$(cat $/config.ini|grep interval_time | awk -f'=' '' | sed s/[[:space:]]//g)*60]
after_time=`date +"%y-%m-%d %h:%m:%s"`
front_time_s=$(date +%s -d "$front_time")
after_time_s=$(date +%s -d "$after_time")
interval_s=$[$after_time_s - $front_time_s]
if (($ >= $ ));then
include_fields=$(cat $/config.ini|grep include_fields | awk -f'=' '' | sed s/[[:space:]]//g)
not_contains_fields=$(cat $/config.ini|grep not_contains_fields | awk -f'=' '' | sed s/[[:space:]]//g)
warn_max_line=$(cat $/config.ini|grep warn_max_line | awk -f'=' '' | sed s/[[:space:]]//g)
info_max_line=$(cat $/config.ini|grep info_max_line | awk -f'=' '' | sed s/[[:space:]]//g)
info_file_path=$(cat $/config.ini|grep info_file_path | awk -f'=' '' | sed s/[[:space:]]//g)
warn_file_path=$(cat $/config.ini|grep warn_file_path | awk -f'=' '' | sed s/[[:space:]]//g)
warn_log=$(tail -n 100 $warn_file_path)
ifs_old=$ifs
ifs=$'\n'
#迴圈每行warn日誌
for line in $warn_log;do
flag=false
#處理包含的內容
if [ -n $ ];then
ifs=$','
for inc in $include_fields;do
flag=false
result=$(echo $line | grep $inc)
if [[ "$result" != "" ]];then
flag=true
else
flag=false
break
fidone
ifs=$'\n'
fi #處理不包含的內容
if [[ "$flag" == "false" ]];then
continue
else
echo "處理不包含的"
if [ -n $ ];then
ifs=$','
for uncon in $not_contains_fields;do
result=$(echo $line | grep $uncon)
if [[ "$result" != "" ]];then
flagi=false
break
else
flag=true
fidone
ifs=$'\n'
fifi
ifs=$ifs_old
#grep日誌詳情
if [[ "$flag" == "false" ]];then
continue
else
afterstr=$
beforestr=$
logger=`grep "$beforestr" -a$info_max_line $info_file_path`
recipient=$(cat $/config.ini|grep recipient | awk -f'=' '' | sed s/[[:space:]]//g)
cc=$(cat $/config.ini|grep cc | awk -f'=' '' | sed s/[[:space:]]//g)
if [ -n $ ];then
echo "$logger" | mail -s $(hostname)"-warn日誌" -c $ $
else
echo "$logger" | mail -s $(hostname)"-warn日誌" $
fifi
ifs=$'\n'
done
front_time=$after_time
else
sleep $interval_time
fidone
說明:在配置檔案中配置間隔時間,每隔多久迴圈一次,檢查日誌的每行配置檔案包含欄位都存在,且不包含欄位不存在,然後傳送郵件 通過shell指令碼監控日誌切換頻率
在資料庫遇到效能問題的時候,可能從io,cpu等角度能夠下手找到效能瓶頸,日誌的切換也是影響效能的乙個因素,如果日誌切換臺頻繁,等待時間就會在日誌相關的事件上,從資料庫的角度來說,肯定是io的瓶頸。可以通過如下的shell指令碼來得到乙個簡單的報告。指令碼如下 sqlplus s db conn s...
hive e 重定向,帶warn日誌的處理方式
有時候執行會包含 warn 開頭的日誌 hive e hive sql 語句 grep v warn 輸出檔案 注意 hive f與hive e 作用是相同的。f 是指定hsql檔案。e 是指定要執行的sql 新增 export hive skip spark assembly true 到 etc...
Zabbix 監控日誌
監控伺服器指定日誌檔案,實現過濾日誌關鍵字報警。確保在被監控主機的配置檔案中 hostname 引數與前端頁面中的主機名匹配 serveractive 引數中指向zabbix伺服器ip 1 建立監控項 配置 主機 監控項 建立監控項 2 填寫監控項資訊 名稱 日誌czd.log 型別 zabbix客...