CloudWatch Agent 込みの AMI を Packer で作っておく¶
EC2 インスタンスから追加のメトリクスやログを収集する CloudWatch Agent をインストール済みの AMI を作成します。
CloudWatch Agent の概要¶
デフォルトの EC2 メトリクス¶
詳細は インスタンスの利用可能な CloudWatch メトリクスのリスト表示 を参照。
Namespace: AWS/EC2
- CPU: CPUUtilization
- CPU credits(T系のみ): CPUCreditUsage, CPUCreditBalance, CPUSurplusCreditBalance, CPUSurplusCreditsCharged
- Disk: DiskReadOps, DiskWriteOps, DiskReadBytes, DiskWriteBytes
- Network: NetworkIn, NetworkOut, NetworkPacketsIn, NetworkPacketsOut
- EBS(ベアメタルを除く): EBSReadOps, EBSWriteOps, EBSReadBytes, EBSWriteBytes, EBSIOBalance%, EBSByteBalance%
- Status: StatusCheckFailed, StatusCheckFailed_Instance, StatusCheckFailed_System
- その他: MetadataNoToken
これらの基本メトリクスを 5 分間隔で収集する場合、料金はかかりません。
CloudWatch Agent で収集可能な追加のメトリクス¶
詳細は CloudWatch エージェントにより収集されるメトリクス を参照。
Namespace
- CPU: cpu_time_active, cpu_time_guest, cpu_time_guest_nice, cpu_time_idle, cpu_time_iowait, cpu_time_irq, cpu_time_nice, cpu_time_softirq, cpu_time_steal, cpu_time_system, cpu_time_user, cpu_usage_active, cpu_usage_guest, cpu_usage_guest_nice, cpu_usage_idle, cpu_usage_iowait, cpu_usage_irq, cpu_usage_nice, cpu_usage_softirq, cpu_usage_steal, cpu_usage_system, cpu_usage_user
- Disk: disk_free, disk_inodes_free, disk_inodes_total, disk_inodes_used, disk_total, disk_used, disk_used_percent
- Diskio: diskio_iops_in_progress, diskio_io_time, diskio_reads, diskio_read_bytes, diskio_read_time, diskio_writes, diskio_write_bytes, diskio_write_time
- Mem: mem_active, mem_available, mem_available_percent, mem_buffered, mem_cached, mem_free, mem_inactive, mem_total, mem_used, mem_used_percent
- Network: net_bytes_recv, net_bytes_sent, net_drop_in, net_drop_out, net_err_in, net_err_out, net_packets_sent, net_packets_recv
- Netstat: netstat_tcp_close, netstat_tcp_close_wait, netstat_tcp_closing, netstat_tcp_established, netstat_tcp_fin_wait1, netstat_tcp_fin_wait2, netstat_tcp_last_ack, netstat_tcp_listen, netstat_tcp_none, netstat_tcp_syn_sent, netstat_tcp_syn_recv, netstat_tcp_time_wait, netstat_udp_socket
- Processor: processes_blocked, processes_dead, processes_idle, processes_paging, processes_running, processes_sleeping, processes_stopped, processes_total, processes_total_threads, processes_wait, processes_zombies
- Swap: swap_free, swap_used, swap_used_percent
CloudWatch Agent 設定の作成¶
ウィザードを使用して CloudWatch エージェント設定ファイルを作成する を参考に、CloudWatch Agent をインストールしたインスタンスで以下を実行すると、デフォルトの設定ファイルが作成できます。手動で設定を作成・変更する場合は CloudWatch エージェント設定ファイルを手動で作成または編集する を参考に編集します。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
ウィザードで Linux, EC2 を選択してデフォルト(3種)を選択した場合、以下のメトリクスが収集されます。
Metrics | Basic | Standard | Advanced | Description |
---|---|---|---|---|
cpu_usage_idle | - | ○ | ○ | CPU アイドル時間 |
cpu_usage_iowait | - | ○ | ○ | CPU I/O 待ち時間 |
cpu_usage_user | - | ○ | ○ | CPU ユーザーモード時間 |
cpu_usage_system | - | ○ | ○ | CPU システムモード時間 |
disk_used_percent | ○ | ○ | ○ | 使用済みディスク容量の割合 |
disk_inodes_free | - | ○ | ○ | 使用可能なインデックスノード数 |
diskio_io_time | - | ○ | ○ | I/O リクエストをキューに入れている時間 |
diskio_write_bytes | - | - | ○ | ディスク書き込みバイト数 |
diskio_read_bytes | - | - | ○ | ディスク読み込みバイト数 |
diskio_writes | - | - | ○ | ディスク書き込み回数 |
diskio_reads | - | - | ○ | ディスク読み込み回数 |
mem_used_percent | ○ | ○ | ○ | 使用中のメモリの割合 |
netstat_tcp_established | - | - | ○ | TCP ESTABLISHED コネクション数 |
netstat_tcp_time_wait | - | - | ○ | TCP TIME_WAIT コネクション数 |
swap_used_percent | - | ○ | ○ | 使用中のスワップスペースの割合 |
例
packer.json 作成¶
以下は Packer の設定例です。files/cwagent-config.json に CloudWatch Agent の設定ファイルを置いてください。
- Amazon Linux 2 AMI (HVM), SSD Volume Type (64-bit x86)
- Amazon Linux 2 AMI (HVM), SSD Volume Type (64-bit x86)
- Ubuntu Server 18.04 LTS (HVM), SSD Volume Type (64-bit x86)
- Ubuntu Server 18.04 LTS (HVM), SSD Volume Type (64-bit Arm)
以下のコマンドで AMI が作成できます。
packer build packer.json
メトリクス収集¶
必要な権限¶
CloudWatch エージェントで使用する IAM ロールおよびユーザーを作成する より
マネージドポリシー CloudWatchAgentServerPolicy を付与します。
コスト¶
メトリクスの数と送信回数に対してそれぞれ料金が発生します。
- メトリクス: 0.02~0.30 USD/メトリクス・月
- 送信回数: 0.01 USD/1,000 回
送信間隔 1 分だと 60(分)×24(時間)×31(日) = 44,640 回/月となり、1 インスタンス、1 メトリクスあたり 0.5~0.75 USD/月程度となります。