Stories

Detail Return Return

夜鶯監控支持 ES 日誌告警了 - Stories Detail

夜鶯項目( https://github.com/ccfos/nightingale )發佈了 v8.0.0-beta.3 版本,這個版本主要是支持了 ES 日誌告警,下面給大家介紹一下。

新版本下載

到如下地址下載發佈包:

  • https://github.com/ccfos/nightingale/releases/tag/v8.0.0-beta.3

由於夜鶯 v8 版本默認配置使用 sqlite 和 miniredis,不再強依賴 mysql、redis,所以解壓縮發佈包到一個臨時目錄下,直接運行二進制即可啓動測試。當然了,生產環境還是要使用 mysql、redis。

配置 ES 數據源

首先添加一個 ElasticSearch 數據源,進入「數據源」菜單,點擊「新增」,選擇 ElasticSearch 類別:

image.png

在新建 ElasticSearch 數據源頁面,填寫 ElasticSearch 的連接地址、認證信息、版本、關聯的告警引擎等信息。

image.png

關聯的告警引擎默認是 default,如果你們使用了邊緣機房部署架構,有多個告警引擎,可以選擇其他告警引擎。一般來講為了避免跨機房查詢,最好選擇數據源所在機房的告警引擎。

配置告警規則

進入告警規則配置頁面,選中某個業務組,點擊新增:

新增告警規則

選擇 Log 類型,截圖如下:

日誌告警規則

幾個關鍵配置解釋如下:

  • 數據源類型:選擇 elasticsearch
  • 數據源篩選:告警規則生效到哪些數據源,大部分公司都有多套 ES,可以選擇讓告警規則生效到一個或多個 ES 數據源
  • 查詢統計:編寫查詢過濾條件,夜鶯就會根據這些配置生成查詢語句,然後去 ES 查詢,查到之後再根據告警條件判定是否觸發閾值

    • 索引:就是指定 ES 索引,可以寫通配符,比如 logstash-*
    • 過濾條件:就是 ES 的 query string 查詢語法,注意不是 KQL 語法。一些查詢樣例見 文檔 📌
    • 日期字段:夜鶯根據日期字段來做時間範圍查詢,比如 @timestamp
    • 時間間隔:就是告警規則查詢的時間範圍,比如查詢最近 5m 的日誌
    • 數值提取:對查詢結果進行數值提取,比如使用 count 統計一下查到了幾行日誌,作為查詢結果最終的數值和後面的告警條件做閾值判定。除了 count 之外,還可以使用 sum、avg、max、min 等統計函數,統計函數自然是對某個字段做統計,所以選擇統計函數的時候要同時給出要統計的字段名
  • 告警條件:對查詢統計結果進行閾值判定,如果滿足條件就觸發告警

其他的配置項是通用配置項,和 Prometheus 的告警規則配置類似,這裏就不一一介紹了。

其他改動

beta.3 還對每個告警規則對應的 goroutine 的啓動時機做了打散操作,避免了大量告警規則同時啓動導致的時序庫瞬間查詢壓力過大的問題。

結語

如果你有什麼建議,歡迎在 https://github.com/ccfos/nightingale 上提 issue,如果能來個 star 就更好了,讓更多人知道並參與,即便項目現在還有瑕疵也會越來越好噠,這就是開源的魅力所在。一起加油。

user avatar juicefs Avatar u_16077267 Avatar u_11537046 Avatar lywlinux Avatar hzyopsfuture Avatar duiniwukenaihe_60e4196de52b7 Avatar jianghushinian Avatar metaxk Avatar crossoverjie Avatar sofastack Avatar cloud11y Avatar hz_linmu Avatar
Favorites 15 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.