0
1

More than 1 year has passed since last update.

CloudWatchを利用したNginxのプロセス監視方法

Last updated at Posted at 2022-12-31

手順

以下の手順に沿って実施することでCloudWatchを利用したプロセス監視を設定することが可能。

  1. IAMポリシー、IAMロールの設定
  2. Systems Manager(Run Command)によるCloudWatchエージェントインストール
  3. CloudWatchエージェントの設定ファイル作成
  4. Systems Manager(Run Command)による設定ファイル反映、CloudWatchエージェント起動
  5. プロセス監視の閾値設定

1. IAMポリシー、IAMロールの設定

監視対象のEC2インスタンスに対して、以下のIAMポリシーが紐づくIAMロールを設定する。

  • CloudWatchAgentServerPolicy
  • AmazonSSMManagedInstanceCore

補足

IAMポリシー「AmazonSSMManagedInstanceCore」は、Systems ManagerのRun Commandを利用しEC2インスタンスにcloudwatchエージェントをインストールするために必要。
IAMポリシー「CloudWatchAgentServerPolicy」は、CloudWatchにメトリクスを書き込むために必要となる。
監視対象のEC2インスタンスにて「amazon-cloudwatch-agent-config-wizard」コマンドを利用して作成した設定ファイルをパラメータストアに配置する場合、IAMポリシー「CloudWatchAgentAdminPolicy」もIAMロールに紐づける必要がある。

2. Systems Manager(Run Command)によるCloudWatchエージェントインストール

Run Commandにて以下を設定した上で「実行」を押下する。
以下、設定を行う上で特に注意する箇所について設定値を記載する。

コマンドドキュメント

名前:「AWS-ConfigureAWSPackage」

image.png

コマンドのパラメータ

Name:「AmazonCloudWatchAgent」
Version:「latest」
image.png

ターゲット

監視対象のEC2インスタンスを選択する。
image.png

出力オプション

要件がなければチェックを外す。
image.png

3. CloudWatchエージェントの設定ファイル作成

パラメータストアでCloudWatchAgentで利用するための設定ファイルを手動作成する。

image.png

値は以下を参照。

{
    "metrics": {
        "metrics_collected": {
            "procstat": [
                {
                    "pid_file": "/var/run/nginx.pid",
                    "measurement": [
                        "pid_count"
                    ],
                    "metrics_collection_interval": 60
                }
            ]
        }
    }
}

補足

監視対象のEC2インスタンスにて、amazon-cloudwatch-agent-config-wizardコマンドでも設定ファイルを作成することは可能。
しかし、簡易的な設定ファイルの場合は、パラメータストアで作成する方が楽であると考え、当手順ではその方法を利用しないで進めている。

4. Systems Manager(Run Command)による設定ファイル反映、CloudWatchエージェント起動

Run Commandにて以下を設定した上で「実行」を押下する。
以下、設定を行う上で特に注意する箇所について設定値を記載する。

コマンドドキュメント

名前:「AmazonCloudWatch-ManageAgent」
image.png

コマンドのパラメータ

Action: 「configure」
Optional Configuration Location:「nginx-process」※任意の値にすること
image.png

補足

Cloudwatchエージェントステータス確認

実行後、EC2インスタンスにてCloudwatchエージェントのステータスを確認すると起動で表示される。

[root@ip-10-0-1-240 ~]# sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
{
  "status": "running",
  "starttime": "2022-12-31T07:32:23+0000",
  "configstatus": "configured",
  "version": "1.247357.0b252275"
}

エラー「RequestError: send request failed」

CloudWatchエージェントログ「/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log」を確認した際に以下のエラーが表示されている場合、CloudwatchエージェントとCloudWatch側で通信出来ていないため、VPCエンドポイント「com.amazonaws.ap-northeast-1.monitoring」を作成する必要がある。このVPCエンドポイントはインターフェース型であるため、セキュリティグループの設定が必要となる。インバウンドルールのポート番号は「TCP:443」、ソースは、監視対象のEC2インスタンスのサブネットIP又はセキュリティグループを指定することで疎通可能となる。

2022-12-31T03:24:03Z E! cloudwatch: WriteToCloudWatch failure, err:  RequestError: send request failed
caused by: Post "https://monitoring.ap-northeast-1.amazonaws.com/": dial tcp 52.119.222.42:443: i/o timeout

CloudWatchによるメトリクス確認

上記「4. Systems Manager(Run Command)による設定ファイル反映、CloudWatchエージェント起動」設定後、しばらくするとCloudWatchによりメトリクスが設定される。
image.png

5. プロセス監視の閾値設定

CloudWatchによりアラーム設定を行う。
2022-12-31 16_52_37-CloudWatch Management Console.png
2022-12-31 16_52_56-CloudWatch Management Console.png

上記「4. Systems Manager(Run Command)による設定ファイル反映、CloudWatchエージェント起動」設定後に反映されたメトリクスを選択する。
2022-12-31 16_53_06-CloudWatch Management Console.png
2022-12-31 16_53_19-CloudWatch Management Console.png
2022-12-31 16_53_46-CloudWatch Management Console.png
2022-12-31 16_54_38-CloudWatch Management Console.png
2022-12-31 16_55_59-2-CloudWatch Management Console.png

あらかじめSNSトピック、サブスクリプションを作成した上で選択する。
2022-12-31 17_00_59-CloudWatch Management Console.png
2022-12-31 17_01_18-CloudWatch Management Console.png
2022-12-31 17_01_42-CloudWatch Management Console.png
2022-12-31 17_02_01-CloudWatch Management Console.png
2022-12-31 17_02_07-CloudWatch Management Console.png
2022-12-31 17_02_16-CloudWatch Management Console.png
2022-12-31 17_02_25-CloudWatch Management Console.png

役立ちコマンド

Cloudwatchエージェントのステータス確認

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status

Cloudwatchエージェントの実行ログ確認

tail -f /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log

参考

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