🦄概述
后羿 - 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