0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Prometheus】エージェントレスでオートスケーリングなAWS監視(Centos8)

Last updated at Posted at 2021-04-19

はじめに

cloudwatchからprmetheusにmetricsを取得させてオートスケーリングな監視を実現する。
この仕組みはとある現場でたまたまできたものなのだが、とにかく手がかからない。
テスト環境や仮組みのときとかにちょろっと使えそうなので記載しておく。
※本手順はprometheus構築済みの環境を想定しています。

設定

IAM準備

まず以下のようなポリシーでユーザを作成してアクセスキーとシークレットキーを用意しておく。

IAMポリシー
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "tag:GetResources",
                "cloudwatch:GetMetricData",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics"
            ],
            "Resource": "*"
        }
    ]
}

awscliインストール

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からmetricsを取得するexpoterはいくつかあるが、今回はyaceを使用する

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/

コンフィグ作成

/etc/prometheus/yace.conf
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サービス化

/usr/lib/systemd/system/yace.service
[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が騒ぐのであらかじめ停止しておく

selinux停止
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
reboot

サービス設定

サービス設定
systemctl enable yace
systemctl start yace

ここまでで作業完了。
これ以降AWSコンソール側でインスタンスを作成すると自動で監視が開始されようになる。
停止した場合はmackerelのような退役作業は必要なく、自動で監視がとまる。
(私はmackerelさんが大好きですよ!)

メモリ監視について

cloudwatchはデフォルトではメモリを監視していない。
この為、メモリ監視を行う場合cloudwatachエージェントなどで出力させる必要がある
例えばCloudWatch モニタリングスクリプトでメモリ監視を出力させた場合はyace.confに以下のように設定を追加することでprometheus側で取得させることが可能。
(ただしこれはインスタンス追加の度に設定が必要になる)

/etc/prometheus/yace.conf
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/ja_jp/AWSEC2/latest/UserGuide/monitoring-scripts-intro.html

あとがき

今回スクリーンショットが用意できなかったので地味ですがいい感じにgrafana使っていると結構な便利感あります。
オートスケーリングといってもなんだかんだ手のかかるものの多い中でたまたまこんな仕組みができたので共有したいと思いました。
なお、今回紹介したyaceはEC2以外のサービスにも対応している為、ELBやRDSでもまったく同じことができます。
ひょっとしたらそちらで使用したほうが需要が多いかもしれないです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?