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 の設定ファイルを置いてください。

以下のコマンドで AMI が作成できます。

packer build packer.json

メトリクス収集

必要な権限

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

マネージドポリシー CloudWatchAgentServerPolicy を付与します。

コスト

Amazon CloudWatch の料金 より

メトリクスの数と送信回数に対してそれぞれ料金が発生します。

  • メトリクス: 0.02~0.30 USD/メトリクス・月
  • 送信回数: 0.01 USD/1,000 回

送信間隔 1 分だと 60(分)×24(時間)×31(日) = 44,640 回/月となり、1 インスタンス、1 メトリクスあたり 0.5~0.75 USD/月程度となります。