天天看點

基于阿裡雲雲監控的企業級監控平台建構

随着阿裡雲雲監控産品的日漸完善,基于雲計算的IT資産監控越來越友善,結合已經開放的API和外部回調接口等功能,企業級客戶的監控系統可以變得更加強大。傳統需要在主機上裝agent的監控體系,例如zabbix以及類似其他的商業軟體都不再适用雲IT資産,主要展現在:

  1. 除了ECS可以繼續安裝agent以外,類似雲RDS,雲Redis,MaxCompute等雲産品根本沒有提供這種agent資料采集的入口。
  2. 雲平台的系統事件,例如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.進階實踐

結合雲監控中應用分組,告警模闆,告警聯系人等功能可以做更多高階功能的使用,如下圖所示

基于阿裡雲雲監控的企業級監控平台建構

步驟概覽

  1. 新增告警聯系人中的電話和郵件需要驗證碼,釘釘機器人可以不配置;
  2. 預設會有一個報警聯系組:組名為阿裡雲主賬号;聯系人為主賬号中填寫的人和電話;
  3. 建立應用分組時可以将相同業務的雲資源配置設定到一個組,例如生産環境、測試環境、開發環境;
  4. 當伺服器和其他雲産品執行個體非常多時,首先建議按照業務視角為資源建立不同的應用分組,然後通過應用分組來批量管理資源;
  5. 目前告警模闆中支援“同比環比”的一些方法;
  6. 報警模闆說明

ü 報警模闆隻能和應用分組配合使用,即報警模闆隻能使用在資源範圍為應用分組的報警規則上。

ü 每個雲賬号最多能建立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 資源執行個體所屬的雲産品名或者産品的規格 目前支援的産品有: 展開源碼

ECS(包括阿裡雲和非阿裡雲主機),

`RDS(雲資料庫RDS版),

ADS(分析型資料庫),

SLB(負載均衡),

VPC(彈性IP),

APIGATEWAY(API網關),

CDN,

CS(容器服務Swarm版),

DCDN(全站加速),

DDOS,

EIP(彈性公網IP),

ELASTICSEARCH,

EMR(E-MapReduce),

ESS(彈性伸縮),

HBASE,

IOT_EDGE(iot邊緣計算),

K8S_POD(k8s pod),

KVSTORE_SHARDING(Redis叢集版),

KVSTORE_SPLITRW(Redis讀寫分離版),

KVSTORE_STANDARD(Redis标準版),

MEMCACHE,

MNS(消息服務),

MONGODB(MongoDB 副本執行個體),

MONGODB_CLUSTER(MongoDB叢集版本),

MONGODB_SHARDING(MongoDB分片叢集),

MQ_TOPIC(消息服務TOPIC),

OCS(舊版雲資料庫Memcache),

OPENSEARCH(開放搜尋),

OSS(對象存儲OSS),

POLARDB,

PETADATA(HybridDB for MySQL),

SCDN(安全加速),

SHAREBANDWIDTHPACKAGES(共享帶寬包),

SLS(日志服務),

`VPN(VPN網關)。

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監控體系做深度結合,把中間件,日志,容器等對象的監控名額和圖形展示結合,建構完整統一的監控平台。

繼續閱讀