【Prometheus】实现自动扩展的无代理AWS监控(Centos8)
首先
通过CloudWatch从Prometheus获取指标实现自动伸缩监视。
这个机制在某个场景下偶然产生,总之非常省事。
考虑到测试环境和临时构建时可能会稍微用到,所以进行记录。
* 本步骤假设已构建了Prometheus环境。
设定
我准备好了。 (Wǒ .)
首先,按照以下政策创建用户并提供访问密钥和秘密密钥。
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"tag:GetResources",
"cloudwatch:GetMetricData",
"cloudwatch:GetMetricStatistics",
"cloudwatch:ListMetrics"
],
"Resource": "*"
}
]
}
安装awscli
yum install python3-pip
pip3 install awscli
aws configure
AWS Access Key ID [None]: [アクセスキー]
AWS Secret Access Key [None]: [シークレットキー]
Default region name [None]: ap-northeast-1
Default output format [None]:
Yace二进制部署
有几种从CloudWatch获取指标的导出工具,但本次使用yace。
yum install wget
wget https://github.com/ivx/yet-another-cloudwatch-exporter/releases/download/v0.26.3-alpha/yet-another-cloudwatch-exporter_0.26.3-alpha_Linux_x86_64.tar.gz
tar -zxf yet-another-cloudwatch-exporter_0.26.3-alpha_Linux_x86_64.tar.gz
mv yace /usr/local/
创建配置文件
discovery:
exportedTagsOnMetrics:
ec2:
- Name
jobs:
- type: ec2
regions:
- ap-northeast-1
period: 60
length: 300
delay: 60
nilToZero: true
searchTags:
- key: Name
value: .*
metrics:
- name: CPUUtilization
statistics:
- Maximum
- name: DiskReadBytes
statistics:
- Maximum
- name: DiskWriteBytes
statistics:
- Maximum
- name: NetworkIn
statistics:
- Sum
- name: NetworkOut
statistics:
- Sum
Yace变为服务化。
[Unit]
Description=yace
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/yace -config.file /etc/prometheus/yace.conf
[Install]
WantedBy=multi-user.target
关闭SElinux
在将yace服务化时,由于selinux会引发问题,所以需提前停止它。
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
reboot
服务设置
systemctl enable yace
systemctl start yace
工作已完成至此。
从现在开始,在AWS控制台上创建实例后,监控将自动启动。
如果停止,则无需像Mackerel一样进行退役操作,监控将自动停止。
(我非常喜欢Mackerel!)
关于内存监视
默认情况下,CloudWatch不监视内存。
因此,如果要进行内存监视,则需要使用CloudWatch代理等来输出。
例如,如果使用CloudWatch监视脚本来输出内存监视,则可以通过在yace.conf中添加以下设置来在prometheus端获取。
(但是这需要每次添加实例时进行设置)。
static:
- namespace: System/Linux
name: System/Linux
regions:
- ap-northeast-1
dimensions:
- name: InstanceId
value: [インスタンスID]
metrics:
- name: MemoryUtilization
statistics:
- Maximum
period: 600
length: 600
请注意,CloudWatch监控脚本目前已弃用,请尽量不要使用,除非有特殊理由。
https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/monitoring-scripts-intro.html
后记
由于这次没有准备截图,所以可能有点平淡,但使用Grafana的感觉还是很方便的。
虽然自动扩展本身有些费事,但在众多的事务中偶然间实现了这样的机制,所以我想共享一下。
另外,我介绍的yace除了支持EC2之外,还适用于其他服务,所以在ELB或RDS上也完全可以做同样的事情。
也许在那些地方使用的需求更多一些。