【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上也完全可以做同样的事情。
也许在那些地方使用的需求更多一些。

广告
将在 10 秒后关闭
bannerAds