【AWS】AlmaLinux9にCloudWatch エージェントを導入してhttpdプロセスを監視してみる

こんにちは、寒すぎてもう暖房がない日を忘れたものです

今回はAWSのCloudWatchエージェントでhttpdプロセスを監視してみた手順の備忘録となります

 

▼環境

OS:AlmaLinux9

ミドルウェア:Apache 2.4

 

▼手順

※インターネットから接続可能なEC2がAWS上に存在していることを前提としています

 

1. Apache の起動

・インストール

dnf install httpd -y

 

・起動と自動起動設定

systemctl start httpd
systemctl enable httpd

 

・起動確認

systemctl status httpd

→ active (running) と enabled が表示されることを確認する

 

・プロセスの確認

ps auxwwf | grep [h]ttpd

→apache のプロセスが起動していることを確認する

 

2. IAMロールの作成

EC2からCloudWatchへアクセスする必要があるので下記ポリシーを付与したIAMロールを作成し、EC2インスタンスへ割り当てます

・CloudWatchAgentServerPolicy

・AmazonSSMManagedInstanceCore

 

IAM > ロール > ロールを作成 > 下記の設定し、ロールの作成 を押下する

 

信頼されたエンティティタイプ:AWS のサービス

サービスまたはユースケース:EC2

ロール名:ec2-to-cloudwatch-agent-role

→IAMロールの一覧に ec2-to-cloudwatch-agent-role が存在すること確認する

 

3. EC2にIAMロールを付与する

EC2 > インスタンス > 対象インスタンスをチェック > アクション > セキュリティ > IAMロールを変更 > ec2-to-cloudwatch-agent-role を選択し、AIMロールの更新 を押下する

→選択したIAMロールが設定されていることを確認する

 

4. CloudWatch エージェントのインストール

・epelのインストール

dnf install epel-release

 

・Collectedのインストール

dnf --enablerepo=epel install collectd

 

・Collectedの起動

systemctl start collectd
systemctl enable collectd
systemctl status collectd

→ active (running) と enabled が表示されることを確認する

 

・CloudWatchエージェントのインストール

dnf install https://s3.ap-northeast-1.amazonaws.com/amazoncloudwatch-agent-ap-northeast-1/redhat/amd64/latest/amazon-cloudwatch-agent.rpm

 

5. CloudWatch エージェントのセットアップ

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

→今回は基本的にはデフォルトでOKですが、今回は下記それぞれ 2 を選択し、ログを取得しないようにしました

Do you want to monitor any log files?
Do you want the CloudWatch agent to also retrieve X-ray traces?
Do you want to store the config in the SSM parameter store?

※最終的に出力されたファイル

Saved config file to /opt/aws/amazon-cloudwatch-agent/bin/config.json successfully.
Current config as follows:
{
        "agent": {
                "metrics_collection_interval": 60,
                "run_as_user": "cwagent"
        },
        "metrics": {
                "aggregation_dimensions": [
                        [
                                "InstanceId"
                        ]
                ],
                "append_dimensions": {
                        "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
                        "ImageId": "${aws:ImageId}",
                        "InstanceId": "${aws:InstanceId}",
                        "InstanceType": "${aws:InstanceType}"
                },
                "metrics_collected": {
                        "collectd": {
                                "metrics_aggregation_interval": 60
                        },
                        "disk": {
                                "measurement": [
                                        "used_percent"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "mem": {
                                "measurement": [
                                        "mem_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        },
                        "statsd": {
                                "metrics_aggregation_interval": 60,
                                "metrics_collection_interval": 10,
                                "service_address": ":8125"
                        }
                }
        }
}

 

6. CloudWatch エージェントの起動

・デフォルトで出力されたままでは起動に失敗するので下記のようにコピーします

cp -ip /opt/aws/amazon-cloudwatch-agent/bin/config.json /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

 

・起動設定

systemctl start amazon-cloudwatch-agent
systemctl enable amazon-cloudwatch-agent

 

systemctl status amazon-cloudwatch-agent

→ active (running) と enabled が表示されることを確認する

 

7. CloudWatch メトリクスの確認

CloudWatch > Metrics

→AWSコンソール上から CloudWatchエージェント を導入したEC2インスタンスのメトリクスが取得できていることを確認する

 

8. SSM Agentのインストール

※今回は利用しないですが、念のためインストールします

・インストール

sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm

 

・SSM Agentの起動

systemctl start amazon-ssm-agent
systemctl enable amazon-ssm-agent
systemctl status amazon-ssm-agent

→ active (running) と enabled が表示されることを確認する

 

9. CloudWatch エージェントのconfファイルを修正

・httpdのプロセスを監視できるようにconfファイルを修正します

※run_as_user を root へ変更しないと、サーバー内でrootユーザーで実行されているhttpdプロセスが監視できないです

vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "root"
    },
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "",
                        "log_group_name": ".",
                        "log_stream_name": "{instance_id}",
                        "retention_in_days": -1
                    },
                    {
                        "file_path": "",
                        "log_group_name": ".",
                        "log_stream_name": "{instance_id}",
                        "retention_in_days": -1
                    }
                ]
            }
        }
    },
    "metrics": {
        "aggregation_dimensions": [
            [
                "InstanceId"
            ]
        ],
        "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
            "collectd": {
                "metrics_aggregation_interval": 60
            },
            "disk": {
                "measurement": [
                    "used_percent"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            },
            "statsd": {
                "metrics_aggregation_interval": 60,
                "metrics_collection_interval": 10,
                "service_address": ":8125"
            },
            "procstat": [
                {
                    "exe": "httpd",
                    "measurement": [
                        "pid_count"
                    ],
                    "metrics_collection_interval": 10
                }
            ]
        }
    }
}

 

・CloudWatchエージェントの再起動

systemctl restart amazon-cloudwatch-agent
systemctl status amazon-ssm-agent

→active (running) と enabled が表示されることを確認する

 

10. CloudWatchコンソールからプロセスの起動確認

CloudWatch > Metrics > CWAgent > procstat_lookup_pid_count

→値が 1 以上になっていればOK

 

▼まとめ

いかがでしたでしょうか?

あまりCloudWatchでプロセス監視は実施しないかもしれませんが、何かの一助になれば幸いですー

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA