ansibleでRHEL8のセットアップ ~CloudwatchAgent編~

どうも2人目です。
最近AWS上にRed Hat Enterprise Linux 8のサーバを立てる機会がありましたので備忘として残そうと思います。

今回はCloudWatchAgent編です。
RHELサーバのログ監視を実装したかったので、CloudwatchAgentをインストールして、Cloudwatchlogsに残すような実装をしました。

ansible使いの方はよかったら参考にしていってください。

①collectdのインストール

カスタムメトリクスを取得したいのであればcollectdをインストールしましょう。

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-custom-metrics-collectd.html

AWS公式ページ

上記サイトはAmazonlinuxのモノですが、今回はrhelなので少しいじりました。

・playbook

- name: Enable epel repo #epelの有効化
  shell: dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y

- name: Install collectd #collectdインストール
  yum:
    name: collectd
    state: latest


②CloudwatchAgentのインストール

yumでサクッと入れてしまいましょう。

・playbook

- name: Install amazon-cloudwatch-agent
  yum:
    name: amazon-cloudwatch-agent
    state: latest

③config.jsonの配置

仕様に合わせたconfig.jsonを配置しましょう。
書き方は公式のドキュメントを参考ください。

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html

AWS公式

・playbook

- name: Copy amazon-cloudwatch-agent config
  copy:
    src: <配置用ディレクトリ>/config.json
    dest: /opt/aws/amazon-cloudwatch-agent/etc/config.json
    mode: '0644'

私は/var/log/secure をログ監視する必要があったのでこんな感じに記述しました。

・config.json

{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "root"
    },
    "logs": {
        "force_flush_interval": 60,
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/var/log/secure",
                        "log_group_name": "/var/log/secure_aws",
                        "log_stream_name": "{instance_id}",
                        "timestamp_format": "%b %d %H:%M:%S"
                    }
                ]
            }
        }
    },
    "metrics": {
        "metrics_collected": {
            "disk": {
                "measurement": [
                    "disk_free",
                    "disk_used_percent"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used",
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            }
        }
    }
}


④CloudWatchAgentの起動
最後の仕上げです。CloudWatchAgentを起動させましょう。

- name: Fetch amazon-cloudwatch-agent config
  shell: |
    /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
      -a fetch-config \
      -m ec2 \
      -c file:/opt/aws/amazon-cloudwatch-agent/etc/config.json \
      -s


少しでも皆様のお役に立てれば幸いです。

以上

この記事が気に入ったらサポートをしてみませんか?