Kibana插件sentinl實現郵件報警


     為什么會突然想用到對日志的異常內容進行郵件報警,是因為在上周公司的線上業務多次出現鎖表,開發在優化sql的同時,我也在想是不是可以對日志的異常內容進行檢測並實現郵件預警。

    在網上查詢了一些資料后,決定使用插件sentinl,sentinl原名KaaE,sentinl這個插件完全可以滿足我們的實際需求,接下來我們開始進行安裝這個插件。

    首先我們得知道我們的kibana的版本,因為我們安裝的插件需要與我們的kibana版本一致。歷史版本位置:https://github.com/sirensolutions/sentinl/releases ,我們選擇對應版本后復制該版本的zip的鏈接。例如我5.6.3版本的對應版本的鏈接是:https://github.com/sirensolutions/sentinl/releases/download/tag-5.6.2/sentinl-v5.6.3.zip

然后我們進行安裝插件:

/usr/share/kibana/bin/kibana-plugin install  https://github.com/sirensolutions/sentinl/releases/download/tag-5.6.2/sentinl-v5.6.3.zip 

安裝完成后我們需要重啟kibana,才可以讓插件生效。

systemctl  restart kibana

最后我們可以在kibana主頁的左邊可以找到sentinl.

安裝完之后我們需要先了解一下sentinl的界面里的各個設置的功能。主界面如下圖所示。

Watchers表示的是監控計划,Alarms表示的是預警事件,Reports是記錄。

接下來我們開始創建一個監控計划,具體步驟是:在Watchers 界面——》點擊右上角的New——》選擇watcher后就可以進入監控計划設置界面了。

General界面:是設置這個監控任務的名稱和設置任務運行間隔的時間,圖中的設置是每五分鍾運行計划任務一次。第一個空是小時,第二個是分鍾,最后一個是秒,大家按需設置。

Input界面是設置報警觸發源,這里需要重點說下這個,因為這個也是我踩的坑。這邊我復制我的Input,大家根據自己的需求改下。

{
  "search": {
    "request": {
      "index": [
        "amazon-log-*"//索引名稱,我們要在哪個索引日志里進行預警。(這里大家注意對索引名稱加上雙引號,不加的話會報錯)
      ],
      "body": {
        "query": {
          "bool": {
            "must": [
              {
                "query_string": {
                  "analyze_wildcard": true,
                  "query": "\"nested exception is org.hibernate.exception.LockTimeoutException: could not execute statement\""//這里我們也是要注意的點,
                //黃色部分是轉義雙引號,因為我的匹配內容里面有特殊符號,兩個黃色部分的內容就是我們要預警的內容。 } }, { "range": { "@timestamp": { "gte": "now-5m",//因為我前面的全局設置是5分鍾輪詢一次任務,那么我在這里只需要設置檢查的范圍是過去5分鍾的內容 "lte": "now", "format": "epoch_millis" } } } ], "must_not": [] } } } } } }

 我在上面的Input的結果就是:在索引"amazon-log-*"里過去五分鍾查詢包含“nested exception is org.hibernate.exception.LockTimeoutException: could not execute statement

”的日志。

Condition為報警觸發條件,當我們在前面匹配到我們的預警內容后,我們在這可以設置一個閾值,比如我們設置為0時,就意味着只要匹配到就會觸發,設置為1時,只有出現大於1才會觸發。

Transform是一個附屬條件,暫時沒有發現他的用處。

接下來就是:Action也就是觸發后的動作,我們這里選擇的是郵件。

Raw是對所有的設置進行展示,我們如果在此次修改的內容只有點擊右上角的保存后重新打開才可以在Raw里看到所有的配置。

在這邊設置好了我們需要在服務器上配置郵件發送服務。

這里分為三步,第一就是對郵箱開啟POP3/SMTP/IMAP服務,並獲得授權碼或者密碼,第二是kibana的郵件設置,第三步就是mailx的郵件設置。

首先我們來解決的對發件郵箱設置POP3/SMTP/IMAP服務,這邊我們建議使用163郵箱,因為我在使用QQ郵箱作為發件箱的時候發現是發不出去的,QQ郵箱需要SSL協議的支持,但是我使用163郵箱是可以正常發出郵件的。(雖然我們也可以設置SSL,但是我們這里為了方便就沒有使用)

第一登錄163郵箱在163郵箱-----》設置----》選擇POP3/SMTP/IMAP。獲取授權碼。(保存好,是等下我們在郵件配置的時候需要填入的內容)

 

第二是kibana的郵件設置。編輯kibana.yml在末尾加入以下內容。

sentinl:  
  settings:  
    email:  
      active: true  
      user: 發件郵箱
      password: 密碼
      host: smtp.163.com
      ssl: false  
    report:  
      active: true  
      tmp_path: /tmp/

因為我是不使用ssl協議,所以我將ssl設置為false。

第三是mailx的設置。首先我們需要安裝mailx,使用它來發送郵件。

yum  install  -y  mailx

然后我們需要配置mailx。在/etc/mail.rc配置文件的末尾加上以下內容。

set from=demo@163.com 
set smtp=smtp.163.com  
set smtp-auth-user=demo 
set smtp-auth-password=demopass 
set smtp-auth=login

 配置好了后我們試試我們是否可以發送郵件。測試郵件發送:

echo "this  is  test" |mailx  -v -s "Test"   "收件郵箱"

 然后我們可以看看收件郵箱有沒有收到,如果沒有收到看看發件過程中是否有error,也可以看看我們的垃圾郵件里面有沒有。

有的時候有的服務器廠商是會將郵件服務的某些端口屏蔽的,所以我們可以在發送失敗后用telnet郵件服務器看看是否被屏蔽。

如果上面是成功發送的話,那么我們將進行最后一步了。就是重啟kibana,然后手動觸發下,看看能不能接收到預警郵件。(一定要重啟讓配置生效)

以上就是我在安裝kibana插件 sentinl實現郵件報警的整個過程。

 


免責聲明!

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



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