透過 Kibana 觀看心電圖及設定警報

本篇學習重點

  • 如何使用 Kibana 的 Uptime 功能來觀察 Heartbeat 記錄的資料。

  • 當發生問題時,如何透過 Alert 設定主動通知。

Kibana 的 Uptime 功能介面

當我們透過前一篇所介紹的 Heartbeat 收集資料後,接下來我們要將介紹如何透過 Kibana 的 Uptime 功能,來檢視這些資料。

進入 Kibana 的主畫面後,點選主選單,並從 Observability 的區塊,可以找到 Uptime 的進入點。

Monitors 主畫面

點選進入後,我們可以看到 Uptime 的主要 Dashboard,畫面蠻單純,直接列出監控的彙總結果,包含多少個 Monitors 其中有哪些目前是 Down 以及過去指定的時間區間中,UpDown 的 Histogram 圖表。

在底下的監控總覽的區塊,會條列出每一項我們所設定的 Monitor,並且包含這些 Monitor 的主要狀態資訊。

指定 Monitor 的內容畫面

點選其中一個 Monitor 之後,可以進入 ES Cluster Monitor 的頁面,如下圖。

這個 Monitor 的畫面會包含幾個重點,以上圖我的情境為例進行說明:

  • 這一組 Monitor 項目的主要資訊,包含這組監控在指定時間之內的可用性 (availability) 比例 100.00%、監控這組服務的 URL http://training.onedoggo.com,監控的類型 HTTP 、有哪些 Tags onedoggo training web、以及 TLS Certificate 多久之後會到期 Expires in 9 monthes

  • 這一組 Monitor 項目,包含哪些從哪些地區的監控: taipeitokyo,以及這些地區各自在這段時間的可性用 (availability) 比例及最後檢查的時間。

  • Monitor duration: 這裡會列出每個地區在監控時,Heartbeat 所收到回應的時間,可以看出有沒有在那個時段或是哪個地區的延遲時間 (latency) 特別久。

  • Pings over time: 在每個時段之中,總共 Pings 多少次,也就是代表發送了多少次 monitor check 的請求,以及異常與正常的比例 (圖中都是正常,所以都是灰色,有異常會是紅色)。

  • History: 這部份會詳細的列出每次執行檢查請求的執行結果,包含結果是否正常 UpDown、檢查的時間、從哪個 Geo Location 執行、HTTP status,花了多少時間 (Duration)、如果有錯誤的話,錯誤的內容是什麼 (如下圖),另外如果有開啟記錄 HTTP response 的話,包含 HTTP Response Headers 與 Body 都會被詳細的記錄下來,在追查問題時很方便。

TLS Certificates 監控總覽

Kibana Uptime 會協助我們將所有 Monitors 之中有包含 SSL/TLS 的 Certificate 彙總起來,在 TLS Certificates 這裡可以看到所有的憑證列表及狀態,這個功能很方便,可以直接一覽所有憑證的狀態。

另外也能透過 Settings 的畫面,指定 Certificate 的過期通知的期限設定。

除了 Kibana Uptime 的功能之外,可以匯入 Elastic 替 Heartbeat 建好的 Dashboard

若要使用 Elastic 替 Uptime 建立的 Dashboard,要另外到 Github (https://github.com/elastic/uptime-contrib) 下載,並且使用 Kibana > Stack Management > Saved Objects 的功能,使用 Import 將對應 Github 裡的 http_dashboard.ndjson 檔案匯入,匯入完成後,就可以到 Dashboard 選擇開啟 Heartbeat HTTP monitoring 的 Dashboard。

設定 Alert 讓我們能主動接受到異常的通知

當有異常發生時,我們想要主動收到通知,這時就要使用到 Elastic Alert 的功能,我們首先要建立 Connector 來設定通知發送到哪邊,再透過 Uptime 進行 Alert 的設定。

這邊要注意 Alert 的功能有蠻多會是需要使用到進階的授權,不是免費的。

初始化 Kibana 的 Alert 設定

如果是第一次使用 Alerting 的功能,在進入 Stack ManagementConnectors 設定中要建立 Connectors 時,會看到以下的畫面,提示我們會需要先設定好 xpack.encryptedSavedObjects.encryptionKey

要產生這個 EncryptionKey 可以透過 kibana-encryption-keys 的指令來協助產生,這個指令就放在 kibana 的 bin 資料夾裡面。[1]

./bin/kibana-encryption-keys generate

執行指令後,就會產生 encryption keys。

這個指令只會協助我們產生 key,我們需要將產生出來的設定,添加到 config/kibana.yml 裡面。

一但設定完成、重新啟動 kibana 之後,我們回到 Connectors 的設定頁面,就可以建立新的 Connector 了。

建立 Connectors

這邊使用 Slack Connector 為例。

請注意:要使用 Slack Connector 會需要擁有 Gold License 以上的授權。

選擇 Slack 之後,在建立 Connector 的畫面,會出現 Create a Slack Webhook URL 的連結,點選下去之後,會導到 Elastic 的官方文件,裡面有完整的設定教學,當中有提到要進入 Slack WebHook 的設定頁面 https://my.slack.com/services/new/incoming-webhook 去建立 WebHook。

指定 Alert 要通知的 Channel 之後,建立 WebHook integration,就可以拿到 WebHook URL

接著在 Add Connector 的地方,把這些資訊填寫完成,並且建立 Connector。

Uptime 設定 Default Connectors

接下來,我們可以在 Uptime 設定 Default Connectors,讓之後 Uptime 有異常發生時,透過這些 Connectors 發送通知。

在 Monitors 中啟用 Alert 的通知

一但我們設定好 Alert 的 Connectors 之後,我們就可以到 Monitors 的頁面,啟動 Status alert,接下來有異常發生時,就會通知到我們指定的 Connecters 了。

設定 TLS Certifcate 快過期時的通知報警

如果我們想在 TLS Certificate 快要過期時收到通知,我們要在 Uptime 設定 Alert。

  1. 建立 Alerts and rules

  2. 選擇 Create rules

  3. 選擇 TLS rule

  4. 填寫基本資料後,選擇要使用的 Actions。

  5. 按下 Save

從 Slack 接收 Alert 的通知

接著從 Slack 的畫面可以看到有發生問題、或是狀態恢復時通知的內容。


以上的介紹,是透過 Kibana 針對 Uptime 所提供的功能,讓我們能迅速的掌握系統的可用性狀態,以及能在異常時發送通知提醒,除了 Kibana Uptime 所提供的畫面之外,我們也能自己透過 Virtualize 等工具,從 Heartbeat 所記錄並存放在 Elasticsearch 裡的資料,建立我們自己想要檢視的圖表與儀表版 (Dashboard),這部份就不在這裡介紹,有興趣的可以從官方 Kibana 的說明文件參考做法。

參考資料

Last updated