Elastic Cloud 比免費版還多的功能 系列文章索引
Elastic Stack 主打的 Observability ,含蓋的範圍包括各種 Logs, Metrics, APM, Uptime 等資訊,這些資訊的收集對於掌握系統運作狀態非常有幫助,這些資訊非常的多,要靠人員主動觀察問題會有些不太實際,因此當有某些異常的條件發生時,能主動通知營運人員的功能也就很重要了,在 Elastic Stack 中,X-pack 的 Watcher 就是負責這項任務,而這個功能同樣也是要 Gold License 以上、或是 Elastic Cloud service Standard 以上版本才有授權使用。
Watcher 主要是執行許多事先定義好的 Watch,並且在某個 Watch 滿足條件時,會執行預先所指定的 action 的一個機制。
Watch 的設定當中主要包含下面幾個部份:
simple
: 固定的值。search
: 依照 Query DSL 從 Elasticsearch 查詢出來的結果。http
: 使用某個 http 請求的 response。chain
: 可將上述三種用法依照不同的順序來組合搭配使用。always
: 總是執行。never
: 總是不執行。compare
: 能參照 Watch payload 的資料加上判斷的比較條件來決定是否執行。array_compare
: 針對 Watch payload 中 array 類型的資料來進行比較,並決定是否要執行。script
: 能使用 Painless script 來自己撰寫比較的邏輯。email
, webhook
, index
, logging
, slack
, pagerduty
, Jira
,目前在 actions 的設定時也能指定節流 (throttle) 的機制,也就是同樣的事件,在多久時間內不要重覆通知。Watch 在執行時,會先依照 Trigger 的時間定義被呼叫起來,並且依照 Input 的定義將 Watch Payload 準備好,接下來會檢查 Condition 的條件是否滿足,如果滿足的話,再確認是否需要 Throttle ,若需要正常執行的話,就會執行 Transform Payload 並且 執行定義的 Actions。
因為 Watcher 支援 Acknowledgement Watch 的機制,也就是另外透過 ack watch API 來標示這個 Watch 不要再執要 Action了,因在 condition met? == no
的時候,也因為 condition 改變了,所以會去檢查並清除 acked 的狀態,讓這個 Watch 的狀態重設。
其中 Throttle 的運作方式如下,會檢查是否有 acked
或是是否達到 throttle_period
,再決定是否要繼續接下來的 Actions。
如果我們想讓 watcher 只能運作在 Cluster 中的某些 node 身上的話,我們可以用以下的方式來設定。
如同 hot-warm architecture 中的使用方式,我們可以在特定的 node 的 elasticsearch.yml
設定 node attribute,例如:
node.attr.role: watcher
這時我們要去 .watches
的設定進行宣告:
PUT .watches/_settings
{
"index.routing.allocation.include.role": "watcher"
}
這樣透過限制 .watches
這個 index 的資料 routing 方式,限制只有我們安排的 node 會得到這份資料,也就因此才會去執行 Watcher 的任務。
進入 Kibana > Stack Management > Alerts and Insights 中,找到 Watcher:
在 Create 時,可以有兩種方式,一個是直接用 UI 建立,或是直接使用預先建立好的 Json。
在 UI 的設定介面中,有些基本的設定方式可以直接使用,不過一些進階的用法並沒有完全支援,進階的用法還是要透過 JSON 的方式來定義,並且請參考 官方文件 。
這邊要注意,如果要使用到 Slack
, Jira
這類型的 Action 時,會需要先在 Elastic Cloud 中定義好這些的帳號設定。
secure_url
,請參考 官方文件。這些配置設定完成後,才能在配置中使用 Slack。
我們在 Kibana Watcher 的畫面,可以看到所有定義好的 Watch,也能看到他們最近的執行狀況。
也可以進入看每次 Trigger 時間點的執行結果,若是有發生錯誤,也可以進去看到錯誤的原因。
以上是使用 Kibana 操作 Watcher 的基本使用介紹,建議大家可以從下方的 參考資料 進入查閱官方文件的詳細介紹,官方也有一些 Watcher 的 Examples 可以參考,對於了解如何使用 Watcher 會有不少幫助。
查看最新 Elasticsearch 或是 Elastic Stack 教育訓練資訊: https://training.onedoggo.com
歡迎追蹤我的 FB 粉絲頁: 喬叔 - Elastic Stack 技術交流
不論是技術分享的文章、公開線上分享、或是實體課程資訊,都會在粉絲頁通知大家哦!
此系列文章已整理成書
喬叔帶你上手 Elastic Stack:Elasticsearch 的最佳實踐與最佳化技巧
書中包含許多的修正、補充,也依照 Elastic 新版本的異動做出不少修改。
有興趣的讀書歡迎支持! 天瓏書局連結