インフラ

SSMを使わずCloudwatchでEC2上のプロセス監視をしてみる

cloudwatchプロセス監視

こんにちは、ちゃりおです。

Cloudwatchでプロセス監視をしてみました。
procstatプラグインをつかうことで、以前より簡単にできました。

今回は、構成管理ツールで再現しやすいようにSSMを使わない手順を紹介します。

Contents

AmazonLinux2でhttpdのプロセスを監視してみる

EC2にCloudwatchAgentのIAMロールを追加する

事前に「CloudWatchAgentServerPolicy」がついたIAMロールを作成し、EC2にアタッチします。

CloudWatch エージェントで使用する IAM ロールおよびユーザーを作成する

CloudwatchAgentインストール

$ wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/
amazon-cloudwatch-agent.rpm
$ sudo rpm -U ./amazon-cloudwatch-agent.rpm

公式ドキュメント Cloudwatchagentインストール

設定ファイルの反映・Cloudwatchエージェントの起動

CloudWatch エージェント設定ファイルを手動で作成または編集する場合は、任意の名前を付けることができます。トラブルシューティングを簡単にするため、Linux サーバーでは、/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json、Windows Server を実行しているサーバーでは、$Env:ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.json という名前を付けることをお勧めします。

公式ドキュメント Cloudwatchagentファイルを手動で作成・編集する

「/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json」という名前でファイルを作成します。

$ vi /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
{
    "metrics": {
        "metrics_collected": {
            "procstat": [
                {
                    "exe": "httpd",
                    "measurement": [
                        "pid_count"
                    ],
                    "metrics_collection_interval": 60
                }
            ]
        }
    }
}

設定ファイルを読み込ませます。

$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl 
-a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/
etc/amazon-cloudwatch-agent.json -s

「amazon-cloudwatch-agent.toml」をみてみると、プロセス監視の設定が追加されているのがわかると思います。

$ cat /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml
~~抜粋~~
  [[inputs.procstat]]
    exe = "httpd"
    fieldpass = ["pid_count"]
    interval = "60s"
    pid_finder = "native"
    [inputs.procstat.tags]
      metricPath = "metrics"

Cloudwatchagentのstatusを確認します。
running担っているはずです。

$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
{
  "status": "running",
  "starttime": "2019-11-15T23:42:41+0000",
  "version": "1.231221.0"
}

マネジメントコンソールからプロセス監視できていることの確認

取得できた場合、Cloudwatchのメトリクスから確認できます。(CWAgent>exe,host,pid_finder)

cloudwatch management process

まとめ

Cloudwatchでも結構簡単にプロセス監視ができます。
SSM使ったほうがさらに楽ですが、Ansibleでやりたいのでコマンドラインを使った方法でやりました。

こういった設定もAnsibleでやるのかSSMを使うのか、悩みどころです。

php sdk ssm
パラメータストアの使い方 AWS SDK for PHPで.envを管理してみるこんにちは、ちゃりおです。 現在、「.env」の管理がいけていなくて、なんとかしたい気持ちがあります。 SSM パラメータストアが良さ...
インスタンスタイプ
[AWS]インスタンスファミリー・インスタンスサイズの選び方 Tipsこんにちは、ちゃりおです。 AWSサービス数もすごいですが、インスタンスタイプやインスタンスタイプも種類が多く 使い始めの頃は迷うと思...
入門 監視
監視に関わる人は一度は読みたい「入門 監視」こんにちは、ちゃりおです。 半分ほど、読んで積読していたのですがやっと読み終わりました。 印象的だったところを、紹介します。 ...

Amazonで「AWS」の本をみてみる!!