通過配合使用ARMS Prometheus云服務接入集群和ARMS告警管理,可以按照阿里云標簽對資源進行告警。本文演示如何通過Service標簽對ECS的CPU使用率進行告警。
背景信息
阿里云支持給云上各種資源打標簽,提供靈活易用的多維度資源管理能力。通過標簽可以完成資源管理、分賬等功能。在實際的使用中我們通常會給應用打上各種標簽,例如env:prod
代表應用是生產環境,service:iam
代表應用提供IAM服務。通過這些標簽我們可以從各個維度來進行管理。如查看生產環境的應用列表,查看IAM服務的資源使用量。
原理
ARMS Prometheus云服務接入集群支持將阿里云標簽導入為Prometheus指標(cloud_monitor_instance_tag),記錄了各個資源上的標簽。
在告警規則上配置特定的注釋(_aliyun_arms_enrich_desc),注釋內容是一個可執行的PromQL,在告警發生后告警引擎會通過查詢這個PromQL,將查詢出的標簽添加到告警中。
配置注釋為cloud_monitor_instance_tag的查詢語句,為告警添加標簽。
操作步驟
為ECS添加標簽。
在ECS管理控制臺的 頁面,單擊目標ECS實例。
在標簽區域單擊編輯標簽。
在彈出的對話框中設置標簽鍵為ack.aliyun.com,自定義標簽值,然后單擊確定。
將ECS接入阿里云Prometheus監控云服務。具體操作,請參見Prometheus實例 for 云服務。
創建Prometheus告警規則。
在ARMS控制臺的 頁面,單擊創建Prometheus告警規則。
在創建Prometheus告警規則頁面,設置告警名稱為ECS CPU使用率大于75%,檢測類型為自定義PromQL,自定義PromQL語句設置為
arms_cms_ecs_cpu_total > 75
,其他告警參數的配置,請參見Prometheus告警規則。
告警添加標簽。
在創建Prometheus告警規則頁面單擊高級設置右側箭頭,添加注釋。
告警中使用注釋對告警進行打標,由于Prometheus不支持標簽的Key中包含半角句號(.),因此此處通過label_replace對標簽進行重命名,重命名為clusterId。
注釋說明:
鍵:_aliyun_arms_enrich_desc。
值: 可執行的PromQL,支持通過
${xxx}
引用告警中的標簽,此處示例為sum(label_replace(aliyun_arms_tag{id=${id}, key="ack.aliyun.com", service="ecs"}, "clusterId", "$1", "value", "(.*)")) by (clusterId)
,示例中使用了${id}
來引用ECS的ID。
重要注釋值的內容必須是可以執行的PromQL。
執行PromQL查詢出的內容只能包含一條時間序列(Timeseries)。
PromQL執行結果中的查詢出來的所有標簽會被添加到告警中。
配置通知策略。
在通知策略頁面通過設置匹配告警事件規則為
clusterId: 標簽值
訂閱告警。具體操作,請參見通知策略。在告警發送歷史頁面查看告警信息。更多信息,請參見查看告警發送歷史。