如何快速搭建openGemini運行狀態的實時監控系統?

語言: CN / TW / HK

監控系統是運維工作中不可或缺的一項技術,一個好的監控系統能夠對設備和系統的關鍵指標實時採集、存儲、分析、告警,真正做到“事前預警,事後追蹤”,從而大大降低運維成本,提高運維效率。

openGemini提供了260+項豐富的內核運行狀態和設備運行監控指標,來滿足我們日常的監控告警需求和幫助問題定位,本文將着重介紹如何搭建openGemini的內核運行實時監控系統。

整體部署

監控系統的整體部署方案如下圖所示:

該方案包含監控數據生產、採集、存儲、分析告警和展示等所有功能,主要由四部分組成:

openGemini集羣: 隨着業務運行,openGemini持續輸出內核運行狀態的各項指標數據。openGemini同時支持兩種方式輸出指標數據,第一種將指標數據輸出到日誌中;第二種則為HTTP方式,採用openGemini的數據格式,接收端需使用InfluxDB或openGemini這兩種數據庫均可。

指標採集:如上所述,採用HTTP方式輸出指標數據,則無需額外的數據採集工具,但會缺乏一些監控指標,如磁盤利用率、創建的表總數、時間線數量、創建的數據庫總數等。

如果將數據輸出到日誌中時,則需要使用ts-monitor進行指標數據採集,除內核運行狀態指標數據之外,ts-monitor工具還將採集如磁盤利用率、創建的表總數、時間線數量、創建的數據庫總數等指標。ts-monitor同樣將指標數據轉換為openGemini的數據格式進行上報。

數據存儲:考慮到監控系統頻繁的查詢操作,長期來看,為避免對業務集羣的運行資源造成競爭,從而影響業務效率,因此建議將指標數據轉存到專門的存儲節點。openGemini提供了單機和集羣兩種版本,通常對於集羣自身的指標數據保存,單機性能已然足夠。與此同時,openGemini同樣支持Grafana,且單機性能更優於InfluxDB,建議直接使用openGemini單機版部署,用於存儲監控指標數據。

數據可視化與告警:Grafana是業界非常普遍使用的一款開源數據可視化工具,可以做數據監控和數據統計,帶有告警功能。選擇它用在監控系統中最合適不過。

綜上所述,該方案的優點是部署簡單、易獲取(所有組件開源)。接下來將重點介紹不同數據採集方式對應的部署和配置。

方式一:使用ts-monitor從業務日誌中採集監控指標數據

如圖所示,監控數據以log files方式輸出的方式需要在業務集羣的每個節點中部署一個ts-monitor,用來從該節點上所有openGemini組件產生的監控日誌中採集監控指標數據,然後將數據寫入到遠端監控節點上的openGemini中,最後使用Grafana作為監控/告警面板來讀取單機版openGemini中的監控數據。

該部署方式下,業務集羣的openGemini組件的配置文件openGemini.conf必要配置項如下圖所示,各配置項説明如表一所示,當前配置會將openGemini組件的監控日誌每隔10秒寫一次到/home/openGemini/metric/metric.data中。

表一 log files方式業務集羣配置項説明

示例

[monitor]
  pushers = "file"
  store-enabled = true
  store-database = "monitor"
  store-interval = "10s"
  store-path = "/tmp/openGemini/metric/ts-sql/metric.data"
  compress = false
  # http-endpoint = ""
  # username = ""
  # password = ""

該部署方式下,業務集羣中ts-monitor的配置文件monitor.conf的配置項説明如表二所示。

表二 ts-monitor配置項説明

其中monitor的必填項需要與業務集羣中openGemini組件的配置保持一致,query開啟表示一些與數據模式、數據統計相關的查詢結果是否可以向ts-monitor上報,report中填寫的是監控節點的有關信息需要與監控節點的openGemini.conf保持一致。

示例

[monitor]
  host = "192.70.3.42"
  metric-path = "/tmp/openGemini/metric"
  error-log-path = "/tmp/openGemini/logs"
  disk-path = "/tmp/openGemini/data"
  aux-disk-path = "/tmp/openGemini/data/wal"
  process = "ts-store,ts-meta"
  history-file = "history.txt"
  # Is the metric compressed.
  compress = false

[query]
  # query for some DDL. Report for these data to monitor cluster.
  # - SHOW DATABASES
  # - SHOW MEASUREMENTS
  # - SHOW SERIES CARDINALITY FROM mst
  query-enable = false
  http-endpoint = "192.70.3.42:8086"
  query-interval = "5m"

[report]
  address = "192.70.3.43:8086"
  database = "monitor"
  rp = "autogen"
  rp-duration = "168h"

[logging]
  format = "auto"
  level = "info"
  path = "/tmp/openGemini/logs/"
  max-size = "64m"
  max-num = 30
  max-age = 7
  compress-enabled = true

方式二:監控指標數據直接push到監控節點

如圖所示,監控數據直接push到監控節點的方式不需要在業務集羣中部署ts-monitor,但這種情況下要求業務集羣能夠直連監控節點並且會缺乏一些監控指標,如磁盤利用率、創建的表總數、時間線數量、創建的數據庫總數等。

該方式下,業務集羣的openGemini組件的配置文件openGemini.conf必要配置項如下表所示,當前配置會將監控數據每隔10秒寫一次到監控節點“192.70.3.43:8086”的“monitor”數據庫中。

示例

[monitor]
  pushers = "http"
  store-enabled = true
  store-database = "monitor"
  store-interval = "10s"
  # store-path = "/tmp/openGemini/metric/ts-sql/metric.data"
  # compress = false
  http-endpoint = "192.70.3.43:8086"
  # username = ""
  # password = ""

Grafana配置

Grafana安裝過程略,啟動Grafana後,通過瀏覽器訪問http://192.70.3.43:3000 ,添加數據源選擇InfluxDB(openGemini兼容InfluxDB)。

進入創建數據源界面,其中name填寫為新創建的數據源的名稱,URL為監控節點上openGemini的地址和端口,database為監控數據所在數據庫名稱。

圖四 數據源創建

數據源創建完成後可以在Grafana中新建看板來完成監控用户感興趣的內容,如下圖所示,建立一個Panel,選擇Data source為剛剛建立的monitor,然後通過圖形化查詢選擇界面來建立看板的查詢語句。

看板創建示例

除了使用圖形化界面查詢,也可以點擊“Query Inspector”來使用直接輸入查詢語句的方式建立Panel。如下圖所示,先選擇數據源為剛才建立的“monitor”,然後可以通過查詢語句“SELECT mean("CpuUsage") FROM  $database.."system" WHERE $timeFilter GROUP BY time($__interval), "host" fill(null)”來查詢數據庫中cpu的平均使用率。

輸入查詢語句的方式創建Panel示例

除了“CpuUsage”監控數據還包括其他的一些指標用來建立監控面板,例如跟集羣整體健康狀態相關的一些查詢如下表所示。

表三 集羣整體健康狀態相關查詢

 

總結

本文旨在幫助用户快速上手搭建openGemini的實時監控系統,希望能對大家有所幫助。文中並未提及單機版本的監控,單機版的監控與集羣相同。

任何問題,可通過社區聯繫方式找到我們,或者提交issue到社區,我們第一時間會進行回覆。

openGemini是一個共享、共建、共治的開放社區,歡迎大家參與!

更多資訊,歡迎關注openGemini社區公眾號