本文介紹如何在ARMS告警管理中接入自建Prometheus的告警事件。
背景信息
開源Prometheus支持將報警上報到Alertmanager中,通過配置Prometheus.yaml文件中的<alertmanager_config>可以將報警上報到云端的報警中心,更多信息,請參考[alertmanager_config]。
ARMS告警管理提供了與開源完全兼容的Alertmanager報警通知能力,通過集成Prometheus可以將自建Prometheus報警上報到ARMS告警管理中。
步驟一:創建集成并接入自建Prometheus
- 登錄ARMS控制臺,在左側導航欄選擇 。
在告警集成頁簽單擊Prometheus。
在新建Prometheus集成對話框輸入Prometheus集成的名稱、描述和告警事件自動恢復時間,然后單擊保存。
說明 告警事件自動恢復時間:當告警事件在設置的時間內都沒有再觸發,告警事件將會自動恢復。根據不同的Prometheus實例選擇接入Prometheus的方法,然后單擊確定。
使用Prometheus-Operator管理的Prometheus實例
在本地創建arms-alertmanager-config.yaml文件,然后將以下內容粘貼到創建的文件中。
- scheme: https bearer_token: ****** static_configs: - targets: ['alerts.aliyuncs.com']
說明請在控制臺獲取
bearer_token
的值。通過arms-alertmanager-config.yaml文件創建名為arms-am-config的secret。
kubectl create secret generic arms-am-config --from-file=arms-alertmanager-config.yaml
在本地創建prometheus-patch.yaml文件,然后將以下內容粘貼到創建的文件中。
spec: additionalAlertManagerConfigs: key: arms-alertmanager-config.yaml name: arms-am-config
執行以下命令獲取Prometheus對象。
kubectl get prometheus
返回示例:
NAME VERSION REPLCAS AGE prometheus-operator-160879-prometheus v2.18.2 1 4d1h
執行以下命令將prometheus-patch.yaml文件更新到Prometheus對象中。
kubectl patch prometheus prometheus-operator-160879-prometheus --patch "$(cat prometheus-patch.yaml)" --type=merge
其他方式自行搭建的Prometheus實例
修改prometheus.yaml配置文件。
此處以2.35版本Prometheus為例添加配置如下,更多版本的配置格式,請參見Prometheus官方文檔。
alerting: alertmanagers: - api_version: v1 authorization: type: Bearer credentials: ${token} scheme: https static_configs: - targets: ["alerts.aliyuncs.com"]
說明請在控制臺獲取
bearer_token
的值。在瀏覽器中訪問Prometheus的配置頁面,檢查prometheus.yaml文件是否已修改。
其他類Prometheus可觀測系統集成ARMS告警
Thanos通過
thanos rule
命令的參數--alertmanagers.config
指定alertmanager配置文件,參照上文填寫上述集成的地址和Token,配置詳情請參見Thanos文檔。VictoriaMetric通過
./bin/vmalert
命令的參數-notifier.config
指定notifier配置文件,參照上文填寫上述集成的地址和Token,配置詳情請參見VictoriaMetric文檔。
(可選)步驟二:編輯集成
ARMS告警管理預設了自建Prometheus告警源與ARMS告警管理之間字段的映射,您也可以根據需要在編輯集成頁面新增或修改字段的映射關系。
- 在告警集成頁簽單擊目標集成右側操作列的編輯。
- 在事件映射區域左側單擊發送測試數據。
- 在發送測試數據對話框,輸入第三方告警源的JSON格式的告警內容,然后單擊發送。說明
- 如果顯示上傳成功,但未生成事件,請根據原始數據配置事件映射規則!,表示告警源與ARMS告警事件的字段沒有映射,實際發送數據會被保存在左側記錄框中,以便配置映射時可以直接選取對應告警源字段。
- 如果顯示上傳成功!,則表明對應的告警內容已上報至告警事件歷史頁面。更多信息,請參見查看告警事件歷史。
- 在發送測試數據對話框單擊關閉。
- 在事件映射區域左側單擊并展開需要建立映射的告警數據。
在事件映射區域右側配置告警源字段與ARMS告警的映射。
- 可選:在選擇根節點區域選擇是否使用批處理。當告警數據存在數組節點時,可以指定目標數組節點作為根節點,將對應根節點下的數據進行批處理。
選擇使用批處理后,選擇需要批處理的數組節點作為根節點。
說明 當告警數據存在多個數組節點時,ARMS告警管理僅支持選擇其中一個數組節點進行批處理。 - 在將源字段映射到目標字段區域將告警源字段映射到ARMS告警字段上。單擊映射圖標,可以修改字段映射方式。
- 直接:告警源指定字段直接映射為ARMS中對應的告警字段。
- 串聯:將多個告警源字段通過指定分隔符串聯為一個字段,然后將這一個字段映射為ARMS中對應的告警字段。分隔符僅支持特殊字符。
- 條件:當告警字段值滿足指定條件后,設置的字段才會映射到ARMS目標字段上。
- 映射表:設置告警源的告警等級與ARMS中的告警等級的映射,僅告警等級(severity)字段需要設置映射表。
ARMS告警字段說明:
ARMS告警字段 說明 告警名稱(alertname) 自定義告警的名稱。 告警等級(severity) 設置告警等級的映射字段。該字段需要設置告警等級映射表,且映射方式必須設置為直接映射。 告警描述(message) 告警事件的詳細信息,用于告警通知。最多支持15000字符。 告警樣本值(value) 監控指標的樣本值。 告警圖片(imageUrl) 指標折線圖URL,用于映射Grafana指標折線圖。 檢查項(check) 告警檢查項。例如:CPU、JVM、Application Crash、Deployment。 來源(source) 告警事件的來源。 分類(class) 告警事件的對象類型,例如:主機。 服務(service) 與業務相關的來源服務,例如:Login Service。 開始時間(startat) 事件開始時間的時間戳。 結束時間(endat) 事件結束時間的時間戳。 事件地址(generatorUrl) 事件詳細信息地址。
- 可選:在選擇根節點區域選擇是否使用批處理。
- 設置事件去重。為了減少重復數據,系統使用相關字段作為去重依據。ARMS告警管理支持預覽事件映射區域中的歷史事件數據的去重分組結果,您可根據需要調整去重字段。說明 事件去重僅針對未恢復狀態下的事件。
- 在編輯集成頁面的事件去重區域選擇需要去重的字段。當選擇的字段的值相同時,對應的多個事件將會合并為一個告警通知。
- 單擊去重測試,可以預覽去重后的告警分組。說明 去重測試針對的是事件映射左側區域中上傳的最近10條測試數據。
- 在編輯集成頁面的事件去重區域選擇需要去重的字段。
- 配置完成后,單擊保存。
查看告警事件
- 在控制臺左側導航欄選擇 。
- 在告警事件歷史頁面單擊目標事件,可以查看告警事件的詳細信息。更多信息,請參見查看告警事件歷史。
管理集成
在
頁面的告警集成頁簽,對于已經創建的集成,您可以進行以下操作:- 查看集成:如果您需要查看集成的詳細信息,單擊目標集成所在行,在集成詳情頁面查看集成的詳細信息。
更新密鑰:如果您需要修改集成的密鑰,在目標集成右側操作列選擇
,在彈出的對話框中單擊確認。重要更新密鑰后,請重新配置自建Prometheus,具體操作,請參見配置Prometheus。
- 編輯:如果您需要修改集成信息,在目標集成右側操作列單擊編輯,在集成詳情頁面修改集成信息,然后單擊保存。
- 啟用或禁用:如果您需要啟用或禁用目標集成,在目標集成右側操作列單擊禁用或啟用。
- 刪除:如果您需要刪除集成,在目標集成右側操作列單擊刪除,在彈出的對話框中單擊確認。
- 添加事件流:如果您需要為指定集成添加對應的事件處理流,在目標集成右側操作列單擊添加事件流。具體操作,請參見事件處理流。
- 新建通知策略:如果您需要為指定集成添加對應的通知策略,在目標集成右側操作列單擊新建通知策略。具體操作,請參見通知策略。
后續步驟
您可以通過設置通知策略將上報的告警事件生成告警并發送告警通知,具體操作,請參見通知策略。經過通知策略分派后生成的告警可以在告警發送歷史頁面查看告警的詳細信息,更多信息,請參見查看告警發送歷史。