LoginSignup
28
25

More than 5 years have passed since last update.

Cloud Watch Agent を使用したハンズオン

Last updated at Posted at 2018-02-19

アジェンダ


  1. ハンズオンの準備
  2. ハンズオンのシナリオ
  3. ハンズオンで構築する構成図
  4. ハンズオン
  5. 結果確認
  6. オプション
  7. お片づけ

ハンズオンの準備


image.png

※動かすことを主に置いているため、IAMは「Administrator」を付けています
 権限を最低限に絞りたい場合は以下をご参考に設定して下さい
 IAMユーザーに付与する権限 : AmazonEC2ReadOnlyAccess + AmazonSSMFullAccess
 EC2に付与する権限      : AWS公式ドキュメント参照

ハンズオンのシナリオ


CloudWatch Agentを使ってデフォルトのCloudWatchでは取得出来ないEC2のメトリクスログを収集する

ハンズオンで構築する構成図


image.png

ハンズオン


SSMエージェントのアップデート


CloudWatch AgentはSSMのRun Command or Amazon S3ダウンロードリンクからインストール可能です。
今回はSSMのRun Commandを使ってインストールしていきます。

CloudWatch AgentをインストールするためにはSSMエージェントのバージョンは2.2.93.0以上が必要です。
そのため、最初にSSMのコマンド実行を使ってSSMのアップデートを行います。

  1. SSMサービスページの左下にある Run Commnad を選択 image.png   
  2. 「コマンドのドキュメント」で AWS-UpdateSSMAgent を選択
    image.png

  3. 「ターゲットの選択」で インスタンスの手動選択 にチェックを入れ
     アップデートを行うEC2を選択し 実行 ボタンをクリック  
    image.png

 実行コマンドの出力画面で以下が出力されていれば成功
 amazon-ssm-agent updated successfully to *.**.*
image.png

CloudWatch Agentのインストール


CloudWatch AgentをEC2にインストールするのはSSMエージェントのアップデートと同様、
SSMのRun Commandを使って行っていきます。

1.SSMサービスページの左下にある Run Command を選択
image.png

2.「コマンドのドキュメント」でAWS-ConfigureAWSPackageを選択
image.png

3.「ターゲットの選択」で インスタンスの手動選択 にチェックを入れ

 インストールを行うEC2を選択し 実行 ボタンをクリック
image.png

4.「Action」で Install を選択

 「Name」で AmazonCloudWatchAgentと入力

 「Version」で latestと入力

  最後に 実行ボタンをクリック
image.png

実行コマンドの出力画面で以下が出力されていれば成功
Successfully installed arn:aws:ssm:::package/AmazonCloudWatchAgent *.**.*
image.png

設定ファイルの作成


CloudWatch Agentを入れたEC2に入り、ウィザードを使用して設定ファイルを作成します。

  1. 監視メトリクスの設定
    設定ファイルを作成していきます
$ sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
=============================================================
= Welcome to the AWS CloudWatch Agent Configuration Manager =
=============================================================

  OSを選択します
  今回はAmazon LinuxでEC2を構築しましたので、 1
  もしくはdefaultがLinuxなので Enter を押します

On which OS are you planning to use the agent?
1. linux
2. windows
default choice: [1]:

  CloudWatch Agentはオンプレでも使用出来るため
  CloudWatch Agentが入っているサーバがEC2かオンプレか聞かれます
  そのため、EC2の 1 or defaultがEC2なので Enter を押します

Trying to fetch the default region based on ec2 metadata...
Are you using EC2 or On-Premises hosts?
1. EC2
2. On-Premises
default choice: [1]:

  ホストメトリクスを取得したいか聞かれますので
  yes or デフォルトがyesなので Enter を押します

Do you want to monitor any host metrics? e.g. CPU, memory, etc.
1. yes
2. no
default choice: [1]:

  コア当りのCPUを監視したいか聞かれますので
  yes or デフォルトがyesなので Enter を押します

Do you want to monitor cpu metrics per core? Additional CloudWatch charges may apply.
1. yes
2. no
default choice: [1]:

  利用可能なディメンションを追加したいか聞かれますので
  yes or デフォルトがyesなので Enter を押します

Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName) into all of your metrics if the info is available?
1. yes
2. no
default choice: [1]:

 何秒単位でメトリクスを収集したいか聞かれますので
  4 or デフォルトが4なので Enter を押します

Would you like to collect your metrics at high resolution (sub-minute resolution)? This enables sub-minute resolution for all metrics, but you can customize for specific metrics in the output json file.
1. 1s
2. 10s
3. 30s
4. 60s
default choice: [4]:

  CloudWatch Agentに事前定義されたどのメトリクスセットを利用するか聞かれますので
  今回は3を入力します

Which default metrics config do you want?
1. Basic
2. Standard
3. Advanced
4. None
default choice: [1]:

※メトリクスセットの詳細は以下

詳細レベル              含められるメトリクス
基本 Mem: mem_used_percent
Swap: swap_used_percent
スタンダート CPU: cpu_usage_idle、cpu_usage_iowait、cpu_usage_user、cpu_usage_system
Disk: disk_used_percent、disk_inodes_free、diskio_io_time
Mem: mem_used_percent
Swap: swap_used_percent
アドバンス CPU: cpu_usage_idle、cpu_usage_iowait、cpu_usage_user、cpu_usage_system
Disk: disk_used_percent、disk_inodes_free
Diskio: diskio_io_time、diskio_write_bytes、diskio_read_bytes、diskio_writes、diskio_reads
Mem: mem_used_percent
Netstat: netstat_tcp_established、netstat_tcp_time_wait
Swap: swap_used_percent

  設定内容が表示されますので、内容を確認して問題がなければ Enter をクリック

Current config as follows:
{
        "metrics": {
                "append_dimensions": {
                        "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
                        "ImageId": "${aws:ImageId}",
                        "InstanceId": "${aws:InstanceId}",
                        "InstanceType": "${aws:InstanceType}"
                },
                "metrics_collected": {
                        "cpu": {
                                "measurement": [
                                        "cpu_usage_idle",
                                        "cpu_usage_iowait",
                                        "cpu_usage_user",
                                        "cpu_usage_system"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ],
                                "totalcpu": false
                        },
                        "disk": {
                                "measurement": [
                                        "used_percent",
                                        "inodes_free"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "diskio": {
                                "measurement": [
                                        "io_time",
                                        "write_bytes",
                                        "read_bytes",
                                        "writes",
                                        "reads"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "mem": {
                                "measurement": [
                                        "mem_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        },
                        "netstat": {
                                "measurement": [
                                        "tcp_established",
                                        "tcp_time_wait"
                                ],
                                "metrics_collection_interval": 60
                        },
                        "swap": {
                                "measurement": [
                                        "swap_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        }
                }
        }
}
Are you satisfied with the above config? Note: it can be manually customized after the wizard completes to add additional items.
1. yes
2. no
default choice: [1]:


2. ログの設定

  今回は新規設定のため、Log Agentはいないので
  2 or デフォルト2なので Enter を押します

Do you have any existing CloudWatch Log Agent (http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html) configuration file to import for migration?
1. yes
2. no
default choice: [2]:

  ログファイルの監視を行うか聞かれますので
  1 or デフォルト1なので Enter を押します

Do you want to monitor any log files?
1. yes
2. no
default choice: [1]:

  監視するログファイルのパスを聞かれますので
  今回は/var/log/messagesを入力します

Log file path:

  ロググループ名を聞かれますので
  messages or デフォルトmessagesなので Enter を押します

Log group name:
default choice: [messages]

  他にも管理するログファイルがあるかと聞かれますので
  今回は2を押します

Do you want to specify any additional log files to monitor?
1. yes
2. no
default choice: [1]:

  設定内容が表示され、SSMのParameter Storeに保存するか聞かれますので
  問題なければ、 yes orデフォルトがyesなので Enter を押して下さい

Saved config file to /opt/aws/amazon-cloudwatch-agent/bin/config.json successfully.
Current config as follows:
{
        "logs": {
                "logs_collected": {
                        "files": {
                                "collect_list": [
                                        {
                                                "file_path": "/var/log/messages",
                                                "log_group_name": "messages"
                                        }
                                ]
                        }
                }
        },
        "metrics": {
                "append_dimensions": {
                        "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
                        "ImageId": "${aws:ImageId}",
                        "InstanceId": "${aws:InstanceId}",
                        "InstanceType": "${aws:InstanceType}"
                },
                "metrics_collected": {
                        "mem": {
                                "measurement": [
                                        "mem_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        },
                        "swap": {
                                "measurement": [
                                        "swap_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        }
                }
        }
}
Please check the above content of the config.
The config file is also located at /opt/aws/amazon-cloudwatch-agent/bin/config.json.
Edit it manually if needed.
Do you want to store the config in the SSM parameter store?
1. yes
2. no
default choice: [1]:

  Parameter storeでの名称設定を求められますので、
  今回は agent-config-linux-jaws と入力して下さい
 
 ※同じアカウント内のユーザを使って本ハンズオンに参加されている方は
   それぞれで別の名称をお付け下さい

What is the parameter store name do you want to store your config?
default choice: [agent-config-linux]

  使用するリージョンを求められますので、そのまま Enter を押して下さい

Trying to fetch the default region based on ec2 metadata...
Which region do you want to store the config in the parameter store?
default choice: [ap-northeast-1]

  設定ファイルをParameter Storeに送信するのに、どのクレデンシャル情報を利用するか聞かれますので
  1 or デフォルト1なので Enter を押して下さい

Which AWS credential should be used to send json config to parameter store?
1. ASIAIM7JHWYUMPKF6RPQ(From SDK)
2. Other
default choice: [1]:

  Parameter Storeへの保存が完了したら設定ファイルの作成終了です

Successfully put config to parameter store agent-config-linux-jaws.
Program exits now.

CloudWatch Agentの設定


決定した設定ファイルをSSMのRun Commandを使ってCloudWatch Agentに反映させていきます。

  1. コンソールのEC2サービスページの左下にある Run Command を選択 image.png
  2. 「コマンドのドキュメント」でAmazonCloudWatch-ManageAgentを選択 image.png
  3. 「ターゲットの選択」で インスタンスの手動選択 にチェックを入れ
     メトリクスを取得したいEC2を選択し 実行 ボタンをクリック image.png
  4. 「Action」で configure を選択
    「Mode」で EC2を選択
    「Optional Configuration Source」で ssmを選択
    「Optional Configuration Location」で「agent-config-linux-jaws」と入力

    「Optional Restart」ではyesを選択
     最後に 実行 ボタンをクリック image.png
    実行コマンドの出力画面で以下が出力されていれば成功
    Configuration validation succeeded
    image.png

結果確認


CloudWatch Agentで設定したメトリクスが監視されているか、CloudWatchのコンール画面から確認します。

① メトリクス
1. CloudWatchのメトリクス画面から CWAgent を選択
image.png
  
2. ディメンションは以下の4種類になっています。

・ ImageId, InstanceId, InstanceType
・ ImageId, InstanceId, InstanceType, name
・ ImageId, InstanceId, InstanceType, cpu
・ ImageId, InstanceId, InstanceType, device, fstype, path

image.png

  
3. 例 : ImagedId, InstanceId, Intance Type
image.png

②ログ
1. CloudWatchのログ画面で messages でフィルタリング
image.png

2. 今回使用しているEC2を選択
image.png

3. /var/log/messages の内容が記載されています

image.png

オプション


CloudWatch Agentのメトリクスやログの設定を変更したい場合も
SSMを使って容易に変更出来ます。

  1. SSMのパラメータストア画面で、先ほど作成した agent-config-linux-jaws を選択し
    アクションの中の パラメータの編集 をクリック
    image.png

  2. の部分に設定内容が記載されているので、用途に合わせて変更を行い
      CloudWatch Agentの設定を再度行う
    image.png
    設定可能なメトリクスやログについては以下の公式ドキュメントを参照
    https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Configuration-File-Details.html

※値の内容

{
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/var/log/messages",
                        "log_group_name": "messages"
                    }
                ]
            }
        }
    },
    "metrics": {
        "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
            "cpu": {
                "measurement": [
                    "cpu_usage_idle",
                    "cpu_usage_iowait",
                    "cpu_usage_user",
                    "cpu_usage_system"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ],
                "totalcpu": false
            },
            "disk": {
                "measurement": [
                    "used_percent",
                    "inodes_free"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "diskio": {
                "measurement": [
                    "io_time",
                    "write_bytes",
                    "read_bytes",
                    "writes",
                    "reads"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            },
            "netstat": {
                "measurement": [
                    "tcp_established",
                    "tcp_time_wait"
                ],
                "metrics_collection_interval": 60
            },
            "swap": {
                "measurement": [
                    "swap_used_percent"
                ],
                "metrics_collection_interval": 60
            }
        }
    }
}

お片づけ


今回のハンズオンで使用した以下のリソースは月額10$程度の課金が発生いたします。
ハンズオン実施後に削除をお願い致します。
■課金対象リソース
 ・EC2 
 ・CloudWatch 取得したメトリクス(メトリクスを削除出来る訳ではありません)
 ・CloudWatch 取得したログ



28
25
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
28
25