logstash根據日志關鍵詞報警


logstash是可以根據日志級別,日志類型進行報警通知的。

 

這次精簡教程,排除filebeat自帶的#include_lines: ['^ERR', '^WARN']寫法,直接使用logstash報警。

 

步驟一、安裝logstash

方法1  去官網下載rpm包,官網地址:https://www.elastic.co/cn/downloads/logstash

方法2  yum install logstash -y

方法3  使用國內一些軟件源下載rpm包,速度更快一點。有可能安裝包報錯。比如:https://www.newbe.pro/Mirrors/Mirrors-Logstash/

 

步驟二、安裝exec插件,用於報警

執行如下命令安裝插件

/usr/share/logstash/bin/logstash-plugin install logstash-output-exec

 

 

 

步驟三、編寫配置文件

cd /etc/logstash/conf.d

vim logstash.conf

input {
    file {
        path => "/home/wwwroot/hxt_reconciliation/storage/logs/laravel-2020-07-01.log"
    }
}

output {
    if 'ERROR' in [message] or 'local.WARNING' in [message] {
        exec {
            command => "/bin/bash /etc/logstash/conf.d/dingding.sh %{message}"
        }  
    }
}

input選擇文件,output發送釘釘通知。

注意:

LogStash::Inputs::File只是在進程運行的注冊階段初始化一個 FileWatch對象。所以它不能支持類似 fluentd 那樣的path => "/path/to/%{+yyyy/MM/dd/hh}.log"寫法。達到相同目的,你只能寫成path => "/path/to/*/*/*/*.log"。FileWatch 模塊提供了一個稍微簡單一點的寫法:/path/to/**/*.log,用**來縮寫表示遞歸全部子目錄。
所以這里寫了絕對路徑,也沒用*替代所有。在自己寫一個shell腳本,添加到crontab里 每天0點執行。
0 0 * * * /bin/bash /root/tools/replace_logstash.sh
#!/bin/bash
today=`date +%Y-%m-%d`
lastday=`date -d 'yesterday' +%Y-%m-%d`
sed -i "s/${lastday}/${today}/g" /etc/logstash/conf.d/logstash.conf
systemctl restart logstash.service

釘釘通知腳本自己隨便一個吧,貼一個我隨便寫的

#!/bin/bash
message="我的ip地址_logstash: \n $*"
curl "https://oapi.dingtalk.com/robot/send?access_token=釘釘的webhook地址" \
   -H "Content-Type: application/json" \
   -d '{"msgtype": "text", 
        "text": {
             "content": "'"${message}"'"
        }
      }'

  

步驟四、啟動

service logstash start
#或者,以下命令更多用於調試output輸出到控制台時候使用
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf

  

 

看一下效果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM