一、云监控架构挑战与突破
传统云监控痛点:
❌ 多区域/多账户资源分散难统一
❌ 无服务器环境监控盲区(Lambda/API Gateway)
❌ 云账单爆炸式增长
Zabbix-AWS解决方案:
三层监控体系:
基础设施层:EC2/EBS/VPC(Zabbix Agent + CloudWatch)
平台服务层:S3/RDS/SQS(CloudWatch原生集成)
无服务器层:Lambda/API Gateway(SQS事件桥接)
二、环境准备与权限配置
▸ IAM策略关键权限
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["cloudwatch:GetMetricData","cloudwatch:ListMetrics","ec2:DescribeInstances","lambda:ListFunctions"],"Resource": "*"},{"Effect": "Allow","Action": "sqs:SendMessage","Resource": "arn:aws:sqs:us-east-1:123456789012:zabbix-events"}]
}
▸ 跨账户监控配置(Organization场景)
# 在主账户创建监控角色
aws iam create-role --role-name ZabbixCrossAccountRole \--assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"AWS":"arn:aws:iam::主账户ID:root"},"Action":"sts:AssumeRole"}]}'
三、四大核心监控场景实战
▶ 场景1:EC2实例深度监控
传统Agent+CloudWatch双轨制:
关键配置:
CloudWatch监控项:
名称:EC2_CPU_CreditBalance 类型:AWS CloudWatch 键值:aws.cloudwatch.get[AmazonEC2,CPUCreditBalance,InstanceId={$AWS.INSTANCE_ID}]
自动发现规则:
// 发现EC2实例的LLD规则 {"aws.regions": "us-east-1,us-west-2","aws.filters": "tag:Env=Production" }
▶ 场景2:RDS性能监控(含Aurora)
多维度采集:
// 监控Aurora读写延迟
aws.cloudwatch.get[AmazonRDS,ReadLatency,DBClusterIdentifier={$DB_CLUSTER}]
aws.cloudwatch.get[AmazonRDS,WriteLatency,DBClusterIdentifier={$DB_CLUSTER}]
存储空间预测:
// 基于趋势预测7天容量
预处理:时间序列预测(linear, 7d)
▶ 场景3:Lambda无服务器监控
事件驱动架构:
Zabbix SQS监听配置:
# /usr/lib/zabbix/externalscripts/aws_sqs_monitor.py
import boto3
sqs = boto3.client('sqs')
queue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/zabbix-events'def check_sqs():response = sqs.receive_message(QueueUrl=queue_url, MaxNumberOfMessages=10)for message in response.get('Messages', []):# 解析Lambda错误事件if 'ERROR' in message['Body']:zabbix_sender(f"lambda.error[{function_name}]", 1)
▶ 场景4:成本异常监控
对接Cost Explorer API:
// 监控日成本突增
名称:AWS_DailyCostSpike
类型:外部检查
键值:aws.cost.get[DAILY, 0.3] # 30%增长告警
四、高级监控方案
▸ 跨VPC监控拓扑
实现方案:
VPC对等连接 + Security Group放行10050端口
通过SSM Session Manager实现Agent免密配置
▸ 混合云监控架构
五、性能优化与成本控制
▸ CloudWatch API成本优化
请求合并策略:
// zabbix_server.conf
AWSCloudWatchFrequency=300 # 从60s改为300s
AWSCloudWatchBulkRequests=50 # 批量请求数
智能请求调度:
if 08:00-20:00: interval = 300 # 日间5分钟
else:interval = 1800 # 夜间30分钟
▸ 存储分级策略
数据类型 | 保留策略 | 存储引擎 |
---|---|---|
实时监控数据 | 30天 | TimescaleDB |
长期趋势数据 | 5年 | S3 Parquet |
成本报告 | 永久 | Glacier |
六、总结:云监控黄金法则
三层监控模型
层级 监控目标 工具 资源层 EC2/EBS Zabbix Agent 服务层 RDS/SQS CloudWatch原生集成 无服务器层 Lambda/Step SQS事件桥接 成本控制铁律
“监控成本不超过资源成本的1%”
通过API请求合并降低CloudWatch费用
使用Infrequent Access存储历史数据
演进方向
AI异常预测:基于历史数据的故障预判
FinOps集成:监控数据驱动成本优化决策