如何優雅的使用TenSunS自動同步ECS主機監控

StarsL發表於2024-11-03

🦄概述

后羿 - TenSunS(原ConsulManager)是一個使用Flask+Vue開發,基於Consul的WEB運維平臺,彌補了Consul官方UI對Services管理的不足;並且基於Consul的服務發現與鍵值儲存:實現了Prometheus自動發現多雲廠商各資源資訊;基於Blackbox對站點監控的視覺化維護;以及對自建與雲上資源的優雅管理與展示。

倉庫地址:https://github.com/starsliao/TenSunS

Consul欄位設計說明

  • 服務首次啟動時會建立一個隨機秘鑰,存放到consul_kv的/ConsulManager/assets/secret/skey,該秘鑰用於對登入Token,各雲廠商賬號AKSK的加解密使用。
  • 雲廠商的每個賬號下的ECS例項資訊:會儲存到Consul的對應Services下的例項中,ECS的例項ID會作為ServiceID。
  • 雲廠商的每個賬號下的AKSK和分組資訊:存放到consul_kv的/ConsulManager/assets下各個雲廠商的目錄下的aksk(加密儲存)和group目錄。
  • 分組欄位:是採集雲廠商用於資源分組的欄位,阿里雲:資源組,華為雲:企業專案,騰訊雲:所屬專案。請在建立雲主機時設定好屬組。
  • 新增的各個雲廠商的ECS同步任務:會存放到consul_kv的/ConsulManager/jobs下,服務啟動的時候會載入這些任務。
  • 每次同步任務的執行結果:會儲存到consul_kv的/ConsulManager/record/jobs的各個雲廠商目錄下。
  • 新增雲廠商的資料來源之後會自動同步一次分組資訊,ECS資訊則會在設定的時間間隔之後才會同步,可以手動點選同步按鈕同步一次。
  • Linux預設監控node_exporter的9100埠,Windows預設監控windows_exporter的9128埠。

配置說明

1. 新增同步源
  • 在Web頁面點選Node 雲主機監控/接入資料來源,點選新增同步源,輸入各欄位:
  • 賬戶可隨意填寫,用來區分雲廠商不同雲賬戶的標識,支援中文,例如用主賬戶的名稱。
  • 填寫的AKSK需要有獲取ECS的許可權以及各雲廠商分組資訊的許可權。(注意:騰訊雲的分組資訊因為在ECS中沒有找到對應介面,是從分散式資料庫TDSQL-查詢專案列表 (DCDB)的介面中獲取的,AKSK需要有對應許可權。)
  • 選擇好對應的ECS所在區域(暫支援國內),以及分組與ECS的重新整理間隔,確認即可,分組資訊會自動同步一次,ECS資訊則會在設定的時間間隔之後才會同步,可以手動點選同步按鈕同步一次。
2. 檢視雲主機列表
  • 可以點選檢視按鈕或者在雲主機列表中檢視同步後的ECS資訊。(華為雲暫未獲取到ECS到期日資訊)
3. 管理自建主機
  • 在Web頁面點選Node 雲主機監控/自建主機管理,點選新增,根據需要即可增加需要監控的自建主機,支援增刪改查與批次操作(指令碼)。
3. 配置Prometheus
  • 點選ECS 雲主機監控/Prometheus 配置,根據需要來生成各雲賬號、系統(均支援多選)的Prometheus配置資訊(有自建主機記得複選上selfnode_exporter),複製配置後,追加到prometheus.yml的末尾,重啟Prometheus即可。
4. 檢視Prometheus
  • 在Prometheus的Web頁面中,點選Status-Targets,能看到新增的Job即表示資料同步到Prometheus。
5. 匯入Node Exporter Dashboard
  • 更新了主機監控的grafana看板,可匹配自動同步方式採集ECS資訊欄位的展示。
  • 最佳化了大量圖表,使用新版表格重建,新增健康評分概念,並新增了整體資源消耗資訊的一些圖表。
  • 匯入ID:8919
  • 詳細URL:https://grafana.com/grafana/dashboards/8919

批次匯入自建主機指令碼【現已支援直接在Web頁面上批次匯入自建主機!】

在專案倉庫根目錄的tools目錄下:編輯selfnode-instance.list,寫入監控目標的資訊:機房/公司 租戶/部門 區域/專案 分組/環境 名稱 例項(ip:埠) 系統(linux/windows),每行一個,空格分隔。

注意:前5個欄位組合起來必須唯一,作為一個監控項的ID。即Consul的ServiceID

再修改匯入指令碼selfnode-input.py中的consul_token和consul_url,儲存後執行selfnode-input.py,即可匯入所有監控目標到Consul,並符合Prometheus的自動發現配置。

注意:

主動關機的ECS,會在同步時候從Consul中清除,即會在Prometheus中去除(減少無效的告警),重新開機後會增加回去。
各ECS的Node_exporter需要自行安裝。
【最近7天P99資源使用率】圖表需要在Prometheus增加記錄規則(採集1小時後出資料):
groups:   #新rule檔案需要加這行開頭,追加舊的rule檔案則不需要。
- name: node_usage_record_rules
  interval: 1m
  rules:
  - record: cpu:usage:rate1m
    expr: (1 - avg(irate(node_cpu_seconds_total{mode="idle"}[3m])) by (instance,vendor,account,group,name)) * 100
  - record: mem:usage:rate1m
    expr: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100

相關文章