随着阿裡雲雲監控産品的日漸完善,基于雲計算的IT資産監控越來越友善,結合已經開放的API和外部回調接口等功能,企業級客戶的監控系統可以變得更加強大。傳統需要在主機上裝agent的監控體系,例如zabbix以及類似其他的商業軟體都不再适用雲IT資産,主要展現在:
- 除了ECS可以繼續安裝agent以外,類似雲RDS,雲Redis,MaxCompute等雲産品根本沒有提供這種agent資料采集的入口。
- 雲平台的系統事件,例如RDS主機發生了主備切換這些事件,隻有雲平台本身才會感覺,除非內建雲平台本身的API,任何外部監控體系沒法探測到這些事件。
是以當企業客戶的IT資産逐漸雲化的過程中,至少Iaas層面的監控體系必須依賴于雲平台本身的監控體系來做,這不僅僅限于阿裡雲的雲監控,AWS使用者中CloudWatch也一樣成為了第一選擇,大量的商業監控Saas工具圍繞雲平台本身的監控資料來做,這也是阿裡雲喊着“被內建”的最好案例。 本文結合阿裡雲雲監控現有功能,以RDS for MySQL為例,列出了在控制台,API以及和自有監控體系對接的最佳實踐。
1.基礎實踐
雲監控中RDS 監控頻率設定
雲監控關于RDS的監控頻率分為三檔: 5 秒/次 60 秒/次 300 秒/次
· 基礎版及記憶體小于8G的資料庫執行個體不支援5 秒/次的采集頻率。
· 預設為5分鐘一次
· 修改為1分鐘一次
RDS開通1分鐘監控頻率的執行個體檢測

配置告警規則
NO. | 規則名稱 | 報警規則 | 備注 |
---|---|---|---|
1 | 連接配接數使用率 | 連接配接數使用率 >=80% Warn 連續3次就報警 | |
2 | 隻讀執行個體延遲 | 隻讀執行個體延遲 >=5 秒 Warn 連續3次就報警 | 基礎版除外,配置了也不生效 |
3 | IOPS使用率 | IOPS使用率 >=80% Warn 連續3次就報警 | |
4 | CPU使用率 | CPU使用率 >=80% Warn 連續3次就報警 | |
5 | 磁盤使用率 | 磁盤使用率 >=80% Warn 連續3次就報警 |
RDS 初始化告警規則明細
這樣報警規則生成後,監控和報警就會按照正常的設定進入到報警階段,監控資料會在報警規則觸發後發送到相應的告警聯系人。
2.進階實踐
結合雲監控中應用分組,告警模闆,告警聯系人等功能可以做更多高階功能的使用,如下圖所示
步驟概覽
- 新增告警聯系人中的電話和郵件需要驗證碼,釘釘機器人可以不配置;
- 預設會有一個報警聯系組:組名為阿裡雲主賬号;聯系人為主賬号中填寫的人和電話;
- 建立應用分組時可以将相同業務的雲資源配置設定到一個組,例如生産環境、測試環境、開發環境;
- 當伺服器和其他雲産品執行個體非常多時,首先建議按照業務視角為資源建立不同的應用分組,然後通過應用分組來批量管理資源;
- 目前告警模闆中支援“同比環比”的一些方法;
- 報警模闆說明
ü 報警模闆隻能和應用分組配合使用,即報警模闆隻能使用在資源範圍為應用分組的報警規則上。
ü 每個雲賬号最多能建立100個模闆。
ü 每個模闆最多包含30個監控項。
ü 報警模闆隻是建立報警規則的快捷方式,報警模闆和報警規則不是一一綁定的關系,即修改報警模闆後通過報警模闆生成的規則不會被修改。
ü 如果需要批量修改分組的規則,需要将修改後的模闆重新應用到分組上。
添加告警聯系人
配置告警組
建立應用分組
包含了“事件告警”,針對RDS,有如下RDS系統事件:
事件名稱 | 事件含義 | 事件狀态 | 事件等級 |
---|---|---|---|
Instance_Failover | 執行個體主備切換 | Executed | WARN |
Instance_Failure_Start | 執行個體故障開始 | Executing | CRITICAL |
Instance_Failure_End | 執行個體故障結束 |
配置報警模闆
可以在一個模闆上添加多個雲産品的告警規則;此處我選擇分産品建立模闆,友善各雲産品負責人維護更新對應模闆。
告警表達式包括以下:
除了普通的數值對比外,增加了“同比環比”。
3.API生成模闆實踐
上述實踐中的實施都是基于控制台的手動配置,結合雲監控已有的API借口,可以把這些配置規則全部腳本化,友善批量部署,結構如下
No. | Action | CMS API | URL |
---|---|---|---|
PutContact | 建立或者修改報警聯系人資訊 | ||
PutContactGroup | 建立或者修改報警聯系人組 | ||
CreateMonitorGroup | 建立一個應用分組 | ||
CreateMonitorGroupInstances | 添加資源到應用分組 | ||
CreateMetricRuleTemplate | 建立報警規則模闆 | ||
應用模闆生效 | ApplyMetricRuleTemplate | 将報警模闆應用到分組,生成報警規則 |
需要提前準備的資料清單:
報警聯系人
ContactName | String | 報警聯系人姓名 |
---|---|---|
Describe | 描述 | |
Channels.SMS | 電話 | |
Channels.Mail | Email位址 | |
Channels.DingWebHook | 釘釘機器人Webhook | |
Channels.AliIM | 旺旺聯系方式 |
示範資料 展開源碼
{
"Contacts": {
"Contact": [
{
"Channels": {
"DingWebHook": "https://oapi.dingtalk.com/robot/send?access_token=***",
"Mail": "[email protected]",
"SMS": "186****3996"
},
"Name": "test1",
"Desc": "test1"
},
{
"Channels": {
"DingWebHook": "https://oapi.dingtalk.com/robot/send?access_token=98d8ca511f903cdce23c6ba77559e5ef4316a621b19e7698f572f551ae102ffd",
"Mail": "[email protected]",
"SMS": "186****3090"
},
"Name": "test2",
"Desc": "test2"
}
]
}
}
如果API添加聯系人時,同時添加聯系人的郵件或手機,阿裡會發送郵件或短信給聯系人進行确認。此處與控制台配置的驗證方式不同。
報警聯系人組
ContactGroupName | 報警聯系組的名稱。 | |
---|---|---|
ContactNames.N | RepeatList | 報警聯系人名稱。N的取值範圍為 1~100。 |
報警聯系組描述資訊。 |
{
"ContactGroupName": "Test",
"Describe": "測試",
"ContactNames": ["test1", "test2"]
}
應用分組名
GroupName | 應用分組名稱。 | |
---|---|---|
ContactGroups | 報警聯系人組。應用分組的報警通知會發送給此處指定的報警聯系人組 |
{
"GroupName": "生産A",
"ContactGroups": "TestGroup,雲賬号報警聯系人"
}
應用分組資源明細
GroupId | Long | 應用分組ID。 |
---|---|---|
Instances.N.Category | 資源執行個體所屬的雲産品名或者産品的規格 目前支援的産品有: 展開源碼 `RDS(雲資料庫RDS版), SLB(負載均衡), APIGATEWAY(API網關), CS(容器服務Swarm版), DDOS, ELASTICSEARCH, ESS(彈性伸縮), IOT_EDGE(iot邊緣計算), KVSTORE_SHARDING(Redis叢集版), KVSTORE_STANDARD(Redis标準版), MNS(消息服務), MONGODB_CLUSTER(MongoDB叢集版本), MQ_TOPIC(消息服務TOPIC), OPENSEARCH(開放搜尋), POLARDB, SCDN(安全加速), SLS(日志服務), | |
Instances.N.InstanceId | 資源執行個體ID。 | |
Instances.N.InstanceName | 執行個體名稱。 | |
Instances.N.RegionId | 執行個體所在的RegionId,例如cn-hangzhou。 |
{
"Resource": [
{
"Category": "ECS",
"InstanceId": "i-uf669udf3ficd8huv1q3",
"RegionId": "cn-shanghai",
"InstanceName": "财務人工管理系統FMS"
},
{
"Category": "RDS",
"InstanceId": "rm-uf66dbs496flz4118",
"RegionId": "cn-shanghai",
}
]
}
報警規則 example 展開源碼
{
"Resource": {
"Name": "生産資料庫模版v.19.05.28.01",
"Description": "針對生産環境的資料庫自定義的監控模闆",
"AlertTemplates": {
"AlertTemplate": [
{
"Category": "rds",
"MetricName": "ConnectionUsage",
"Namespace": "acs_rds_dashboard",
"Selector": {},
"RuleName": "連接配接數使用率",
"Escalations": {
"Critical": {
"Statistics": "Average",
"Threshold": "90",
"Times": 3,
"ComparisonOperator": "GreaterThanOrEqualToThreshold"
},
"Info": {
"Statistics": "Average",
"Threshold": "70",
"Times": 3,
"ComparisonOperator": "GreaterThanOrEqualToThreshold"
},
"Warn": {
"Statistics": "Average",
"Threshold": "80",
"Times": 3,
"ComparisonOperator": "GreaterThanOrEqualToThreshold"
}
}
},
{
"Category": "rds",
"MetricName": "DiskUsage",
"Namespace": "acs_rds_dashboard",
"Selector": {},
"RuleName": "磁盤使用率",
"Escalations": {
"Critical": {
"Statistics": "Average",
"Threshold": "90",
"Times": 3,
"ComparisonOperator": "GreaterThanOrEqualToThreshold"
},
"Info": {
"Statistics": "Average",
"Threshold": "70",
"Times": 3,
"ComparisonOperator": "GreaterThanOrEqualToThreshold"
},
"Warn": {
"Statistics": "Average",
"Threshold": "80",
"Times": 3,
"ComparisonOperator": "GreaterThanOrEqualToThreshold"
}
}
}
]
}
}
}
TemplateIds | 報警模闆的ID。 | |
ApplyMode | o GROUP_INSTANCE_FIRST:執行個體分組優先, 即應用報警模闆的時候,以分組執行個體優先,如果分組中不存在這種執行個體則忽略模闆中的規則。 o ALARM_TEMPLATE_FIRST:模闆執行個體優先,即應用報警模闆的時候,不管分組中是否存在這種執行個體,都建立出這種規則。 | |
EnableEndTime | 報警生效的結束時間周期, 選值為00-23,表示00:59 到23:59。 | |
EnableStartTime | 報警生效的起始時間周期, 選值為00-23,表示00:00 到23:00。 | |
SilenceTime | 通道沉默周期,機關為秒。預設86400秒(1天)。監控資料持續超過報警規則門檻值時,每個沉默周期内隻發送1次報警通知。 | |
Webhook | 報警發生時會回調指定的URL位址。向URL發送POST請求。 |
{
"SilenceTime": 86400,
"EnableStartTime": 00,
"EnableEndTime": 23,
"ApplyMode": "GROUP_INSTANCE_FIRST",
"Webhook": "https://oapi.dingtalk.com/robot/send?access_token=98d8ca511f903cdce23c6ba77559e5ef4316a621b19e7698f572f551ae102ffd",
"TemplateIds": "139182,139185",
"GroupId": 5217650
}
報警結果驗證
傳回資料格式 展開源碼
{
"Resource": {
"AlertResults": [
{
"RuleId": "applyTemplate0fb2127a-98df-4cf6-b563-22f19d16ced6",
"Success": true,
"RuleName": "連接配接數使用率",
"Code": 200,
"GroupId": 5217650
},
{
"RuleId": "applyTemplate06d81824-e95d-4d94-839a-a9d32f35e8a8",
"Success": true,
"RuleName": "CPU使用率",
"Code": 200,
"GroupId": 5217650
}
],
"GroupId": 5217650
},
"RequestId": "1E754CA9-932C-4859-B814-69E7460508BA",
"Success": true,
"Code": 200
}
以上是基于RDS的阿裡雲雲監控最佳實踐,其他阿裡雲産品監控體系都可以圍繞雲監控展開。此外,雲監控的資料展現和告警可以和企業自有的IT監控體系做深度結合,把中間件,日志,容器等對象的監控名額和圖形展示結合,建構完整統一的監控平台。