デフォルトでは、メモリ使用量はCloudWatchによって監視されません。そこで、 これらの手順 を使用して、AWSのWindowsインスタンスに追加しようとしました。
これは私がやったことです:
custom-metrics-user
という名前のユーザーを作成しました。次に、アクセスキーと秘密キーを保存しました。
インラインポリシーを作成してユーザーに添付しました。次のようになります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["cloudwatch:PutMetricData", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "ec2:DescribeTags"],
"Resource": "*"
}
]
}
Windowsインスタンス[2012 R2 Base AMI]を起動しました。 RDPを介してインスタンスにアクセスした後、AWS.EC2.Windows.CloudWatch.json
ファイルが既に存在することがわかりました。
それに応じて.json
ファイルを変更しました。変更後、次のようになります。
{
"EngineConfiguration": {
"PollInterval": "00:00:15",
"Components": [
{
"Id": "ApplicationEventLog",
"FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch",
"Parameters": {
"LogName": "Application",
"Levels": "1"
}
},
{
"Id": "SystemEventLog",
"FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch",
"Parameters": {
"LogName": "System",
"Levels": "7"
}
},
{
"Id": "SecurityEventLog",
"FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch",
"Parameters": {
"LogName": "Security",
"Levels": "7"
}
},
{
"Id": "ETW",
"FullName": "AWS.EC2.Windows.CloudWatch.EventLog.EventLogInputComponent,AWS.EC2.Windows.CloudWatch",
"Parameters": {
"LogName": "Microsoft-Windows-WinINet/Analytic",
"Levels": "7"
}
},
{
"Id": "IISLog",
"FullName": "AWS.EC2.Windows.CloudWatch.IisLog.IisLogInputComponent,AWS.EC2.Windows.CloudWatch",
"Parameters": {
"LogDirectoryPath": "C:\\inetpub\\logs\\LogFiles\\W3SVC1"
}
},
{
"Id": "CustomLogs",
"FullName": "AWS.EC2.Windows.CloudWatch.CustomLog.CustomLogInputComponent,AWS.EC2.Windows.CloudWatch",
"Parameters": {
"LogDirectoryPath": "C:\\CustomLogs\\",
"TimestampFormat": "MM/dd/yyyy HH:mm:ss",
"Encoding": "UTF-8",
"Filter": "",
"CultureName": "en-US",
"TimeZoneKind": "Local"
}
},
{
"Id": "PerformanceCounter",
"FullName": "AWS.EC2.Windows.CloudWatch.PerformanceCounterComponent.PerformanceCounterInputComponent,AWS.EC2.Windows.CloudWatch",
"Parameters": {
"CategoryName": "Memory",
"CounterName": "Available MBytes",
"InstanceName": "",
"MetricName": "Memory",
"Unit": "Megabytes",
"DimensionName": "InstanceId",
"DimensionValue": "{instance_id}"
}
},
{
"Id": "CloudWatchLogs",
"FullName": "AWS.EC2.Windows.CloudWatch.CloudWatchLogsOutput,AWS.EC2.Windows.CloudWatch",
"Parameters": {
"AccessKey": "",
"SecretKey": "",
"Region": "us-east-1",
"LogGroup": "Default-Log-Group",
"LogStream": "{instance_id}"
}
},
{
"Id": "CloudWatch",
"FullName": "AWS.EC2.Windows.CloudWatch.CloudWatch.CloudWatchOutputComponent,AWS.EC2.Windows.CloudWatch",
"Parameters":
{
"AccessKey": "AKIAIK2U6EU675354BQ",
"SecretKey": "nPyk9ntdwW0y5oaw8353fsdfTi0e5/imx5Q09vz",
"Region": "us-east-1",
"NameSpace": "System/Windows"
}
}
],
"Flows": {
"Flows":
[
"PerformanceCounter,CloudWatch"
]
}
}
}
EC2ConfigSettingsでCloudWatch Logs統合を有効にしました。
EC2Configサービスを再起動しました。
エラーは発生しませんでしたが、メモリメトリックがCloud Watchコンソールに表示されていません。ブログでは、メトリックが表示されるまで10〜15分間待機するように指示されていますが、それを実行してからすでに1時間が経過しています。何が悪いの?
Windows 2012 Base R2 Serverを実行しており、4.0以上のEC2Configバージョンを実行しています。誰かが同じ問題に直面した場合、EC2Configサービスを再起動した後、Amazon SSM Agentサービスを再起動してください。
次のリンク[STEP-6]で読みました。
http://docs.aws.Amazon.com/AWSEC2/latest/WindowsGuide/send_logs_to_cwl.html
次のとおりです。
EC2Configバージョン4.0以降を実行している場合は、MicrosoftサービススナップインからインスタンスでSSMエージェントを再起動する必要があります。
これを行うことで問題を解決しました。
まず、インスタンスにIAMロールを追加する必要があります。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAccessToSSM",
"Effect": "Allow",
"Action": [
"cloudwatch:PutMetricData",
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams",
"logs:PutLogEvents"
],
"Resource": [
"*"
]
}
]
}
既存のインスタンスにロールを追加できないことに注意してください。したがって、起動する前に実行してください。次に、次のパスを介して(通常)アクセス可能なEC2Config
ファイルを構成する必要があります。
C:\Program Files\Amazon\Ec2ConfigService\Settings.AWS.EC2.Windows.CloudWatch.json
JSON
ファイルに次のブロックを追加する必要があります。
...
{
"Id": "PerformanceCounter",
"FullName": "AWS.EC2.Windows.CloudWatch.PerformanceCounterComponent.PerformanceCounterInputComponent,AWS.EC2.Windows.CloudWatch",
"Parameters": {
"CategoryName": "Memory",
"CounterName": "Available MBytes",
"InstanceName": "",
"MetricName": "Memory",
"Unit": "Megabytes",
"DimensionName": "InstanceId",
"DimensionValue": "{instance_id}"
}
}
...
{
"Id": "CloudWatch",
"FullName": "AWS.EC2.Windows.CloudWatch.CloudWatch.CloudWatchOutputComponent,AWS.EC2.Windows.CloudWatch",
"Parameters":
{
"AccessKey": "",
"SecretKey": "",
"Region": "eu-west-1",
"NameSpace": "PerformanceMonitor"
}
}
構成ファイルを変更した後、サーバーでEC2Config
サービスを再起動することを忘れないでください。 CloudWatch
コンソールで数分後にメモリメトリックを取得できるはずです。インスタンスのCloudWatch
監視レベルも詳細に設定する必要があります。
更新:
documentation に従って、既存のインスタンスにIAMロールをアタッチまたは変更できるようになりました。