背景
EC2でWindwosを実装しています。
性能情報を取得したいのですが、デフォルトだとCPUの情報ぐらいしか使用できないです。
メモリの使用率はひと手間かけないといけないのです。
やったこと
以下のページを参考にしました。
Windows Server 2022 で メモリ使用率を CloudWatch メトリクスに出してみる。 - サーバーワークスエンジニアブログ
この記事を読めばわかるのですが、自分の記録です。
作業の流れは以下です。
- IAM Roleに
CloudWatchAgentServer
ポリシーをアタッチ - CloudWatch AgentをWindowsにインストール
- CloudWatch Agentの設定ファイルを作成
- CloudWatch Agentを起動
困るのは、最初の作業であるポリシーのアタッチです。terraformの書き方に悩みました。
以下でポリシーをロールにアタッチします。AmazonSSMManagedInstanceCore
とCloudWatchAgentServerPolicy
をアタッチしてます。(AmazonSSMManagedInstanceCoreは不要かも)
resource "aws_iam_role" "ec2_role" {
name = "${var.name_prefix}-ec2-role"
assume_role_policy = jsonencode({
Version = "2012-10-17",
Statement = [
{
Effect = "Allow",
Principal = {
Service = "ec2.amazonaws.com"
},
Action = "sts:AssumeRole"
}
]
})
}
resource "aws_iam_role_policy_attachment" "ssm_policy_attachment" {
role = aws_iam_role.ec2_role.name
policy_arn = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore"
}
resource "aws_iam_role_policy_attachment" "cloudwatch_agent_policy_attachment" {
role = aws_iam_role.ec2_role.name
policy_arn = "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy"
}
resource "aws_iam_instance_profile" "ec2_instance_profile" {
name = "${var.name_prefix}-ec2-instance-profile"
role = aws_iam_role.ec2_role.name
}
上のロールをEC2のiam_instance_profile
に割り当てます。
resource "aws_instance" "windows" {
iam_instance_profile = aws_iam_instance_profile.ec2_instance_profile.name
}
見え方
CloudWatchからMetricsを選択。その後にCWAgentをクリック。
こんな感じのグラフが表示されます。