ElasticSearch(ES)預警服務 Watcher安裝以及探究


最近公司需求要搭建一個監控系統,用來監控程序運行狀態,請求曲線,錯誤日志發生次數,等等分析,保障系統穩定性。因此最近研究了基於Lucene 號稱企業級搜索服務的ElasticSearch ,用了一段時間發現速度還真快,對百萬級甚至千萬級的數據檢索毫無壓力,比之前用的MongoDB速度快了不少。

ElasticSearch服務安裝過程這里就不在說了,有了監控之后應該還需給開發人員發送郵件,告知某項錯誤已經達到某個閥值,應該關注去分析解決發生錯誤的原因,進一步發現程序上的bug,然后fix掉,下面隆重介紹下es(這里將ElasticSearch簡稱為es)的插件,Watcher,功能嘛很顯然就是預警服務。

一、安裝

1.依賴於License 插件,先安裝License插件,在ES_HOME目錄下面安裝License

bin/plugin install license

2.安裝watcher插件

bin/plugin install watcher

注:中間過程詢問是否繼續時候輸入y按回車繼續安裝

3.驗證是否安裝成功

curl -XGET 'http://localhost:9200/_watcher/stats?pretty'

返回結果如下則表示安裝成功

{
  "watcher_state": "started",
  "watch_count": 0,
  "execution_thread_pool": {
    "queue_size": 0,
    "max_size": 0
  }
}

 二、Watcher插件配置(創建預警任務)

watcher目前是沒有界面配置的,需要通過Resfulapi調用創建、管理、更新預警任務

創建一個Watcher任務的流程是怎樣的?

我們先來看下創建一個預警demo的api

curl -XPUT 'http://localhost:9200/_watcher/watch/log_error_watch' -d '
{
"trigger": { "schedule": { "interval": "1m" } }, "input": { "search": { "request": { "indices": [ "monitor_ticket_bargainfindermaxrq_201610" ], "body": { "query": { "bool": { "must": [ { "match": { "collectionName": "BargainFinderMaxRQ" } }, { "range": { "createTime": { "gt" : "now-1m" } } } ] } } } } } }, "condition": { "compare": { "ctx.payload.hits.total": { "gt": 20 } } }, "actions": { "send_email": { "email": { "to": "xxxxxx@xxx.com", "subject": "TICKET_BFM 過去一分鐘內錯誤發生次數超過20,請關注", "body": "TICKET_BFM 過去一分鐘內錯誤發生次數超過20,請關注" } } } }'

當然actions里面還支持模板,比如

"actions": {
        "send_email": {
            "email": {
                "to": "xxx@xxx.com",
                "subject": "TICKET_BFM 過去一分鐘內錯誤發生{{ctx.payload.hits.total}}次數超過20,請關注",
                "body": "TICKET_BFM:{{ctx.watch_id}}  過去一分鐘內錯誤發生{{ctx.payload.hits.total}}次數超過20,請關注 Happened at {{ctx.execution_time}}"
            }
        }
    }

從api的content我們可以看出,內容主要主體分成trigger(觸發設置),input(來源設置),condition(條件),actions(觸發動作設置)

這里我們設置觸發間隔時間為1m,來源是monitor_ticket_bargainfindermaxrq_201610索引塊,查詢條件是collectionName字段值是BargainFinderMaxRQ,以及時間范圍是過去1分鍾到現在,然后觸發條件是當數量大於20,動作設置的是發郵件

Action類型其實有4種,EMail(郵件),Webhook(第三方對接),Index(索引),Logging(日志記錄),相關配置可以參考下官方文檔

如果配置了發送郵件,那么需要在es的yml文件配置下郵件發送服務器

我這里設置的是公司的服務器

watcher.actions.email.service.account:
  work:
    profile: standard
    email_defaults:
      from: '<yourname>@xx.com'
    smtp:
      auth: true
      starttls.enable: true
      host: smtp.xx.com
      port: 25
      user: yourname@xx.com
      password: password

注:設置之后重啟下es服務器

三、刪除預警任務

有時候我們不在使用某項預警服務的時候,我們可以刪除他

curl -XDELETE 'http://localhost:9200/_watcher/watch/log_error_watch'

 


免責聲明!

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



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