Elastic Stack-Heartbeat 主機服務監控實做

上次週報快速地介紹Elastic公司的Heartbeat套件,本次帶大家看實作結果。


2018/10/08先前議題連結:
Elastic Stack-Heartbeat 主機服務監控

 

環境架構

Kibana: 5.6.3
Elasticsearch: 5.6.3
Logstash: 2.4.1 (本次用不到)

 

 

Heartbeat實做架構

 

安裝環境選定

官方提供不同環境的安裝程式,包含Linux、MAC、Windows等都可作為Heartbeat服務機器。安裝Heartbeat的主機扮演發出偵測指令的角色,依照配置監控對象偵測,蒐集結果後統計送到後端,後端可以直接是Elasticsearch,也可以先送給Logstash處理再由Logstash送到Elasticsearch。在正式環境中建議在Linux環境配置服務,而本次實做先以Windows環境為範例。

Windows安裝步驟

  1. 透過powershell進行服務安裝,個人習慣解壓縮到C:\Program Files\heartbeat\
  2. 以管理權限啟動powershell,切換到Heartbeat目錄。
  3. 使用以下命令安裝:
    PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-heartbeat.ps1.
使用powershell安裝heartbeat

 

透過services.msc可看到Heartbeat以服務形式安裝

 

標的設定

裝好服務後,要告訴Heartbeat監控主機有哪些,如前篇介紹提到可以用ping、http等協定進行偵測,組態配置檔案在解壓縮目錄下的heartbeat.yml,透過文字編輯器打開即可編輯。

一般概念

一般配置在heartbeat.monitors段落中,完整配置方法與參數可以參考官方網站,以監控http://www.google.com、www.hinet.net,監控頻率為60秒、逾時80秒為例,使用以下配置:
heartbeat.monitors:
 - type: http
  urls: ["http://www.google.com","http://www.hinet.net"]
  schedule: '@every 60s'
  timeout: 80s

認證資訊

萬一碰到需要登入的網站怎麼辦?Heartbeat支援基本的HTTP authentication,組態中定義帳號密碼即可:
type: http
  urls: ["http://www.needlogin.com"]
  username: "username"
  password: "password"
  schedule: '@every 60s'
  timeout: 80s

檔尾配置

除了在heartbeat.monitors配置監控標的外,還要配置setup.kibana以及output.elasticsearch(或output.logstash),這幾段配置很直覺,直接把IP、port填入即可。填好資訊就存檔離開,然後回到services.msc,啟動heartbeat服務!啟動過程中如果順利表示組態檔填寫正確,如果啟動跳出錯誤訊息,就回去檢查 heartbeat.yml檔案。

匯入儀表

到這邊會有疑惑,Heartbeat啟動之後呢?Elastic已經很貼心地預先定義好視覺分析的儀表板,透過以下命令讓Heartbeat透過Kibana API把儀表建立:
 .\heartbeat.exe setup --dashboards

結果

開啟瀏覽器,連線到kibana,點選Dashboard裡面的Heartbeat HTTP monitoring,就會看到預先定義好的儀表,包含以下分析項目:

  1. HTTP monitors
  2. HTTP monitors status
  3. HTTP up status
  4. HTTP ping times
  5. HTTP duration heatmap
Heartbeat儀表1

 

 

Heartbeat儀表2

 

 

HTTP monitor之中,以表格呈現監控標的與效能指標,例如:max monitor duration、resolve RTT、TCP RTT connect time、TLS RTT handshake、HTTP RTT response_head等,能用來評估目前到監控網站的狀態,這中間時間當然也包含Heartbeat主機本身到待測標的的網路延遲。

HTTP monitors status則是用圓餅圖的方式看目前各網站up/down狀態,以及HTTP response code呈現。

HTTP up status是叢時間軸的方式單純看所有監控標的的up/down狀態,可以觀測特定時間點網站正常服務的比例,例如是多層服務,可以看到所有主機的正常比例等。

HTTP ping times、HTTP duration heatmap是把監控效能指標圖形化,透過這些視覺化方法,都能讓我們從綜觀的角度做監控。

延伸

透過Heartbeat可以快速配置要監控的標的與狀態,那如果Heartbeat主機故障怎麼辦?Elastic很有商業頭腦地把監控Heartbeat變成一個X-Pack服務,就要額外付費囉。

另外,筆者在很多的Beats中發現,都是以純文字編輯yaml檔案進行配置,過程還有點不人性化,如果能結合Kibana透過網頁直接透過圖形介面配置,相信操作會更友善,或許這可以當作未來一個開發的題目。

凱迪 2018/10/30
Email: kedy.ch@udngroup.com
有任何想法、心得,歡迎討論。