Мониторинг использования памяти в экземпляре AWS CloudWatch для Windows
По умолчанию использование памяти не контролируется CloudWatch. Поэтому я попытался добавить его в свой экземпляр Windows в AWS, используя эти инструкции.
Вот что я сделал:
-
Я создал пользователя с именем 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"
]
}
}
}
-
Я включил интеграцию CloudWatch Logs под EC2ConfigSettings.
-
Я перезапустил службу EC2Config.
Я не получил никаких ошибок, но метрика памяти не отображается в консоли Cloud Watch. В блоге говорится, что нужно подождать 10-15 минут, чтобы появилась метрика, но с тех пор, как я это сделал, прошел уже час. Что происходит не так?
Ответы
Ответ 1
Я использую Windows 2012 Base R2 Server, и на нем установлена версия EC2Config более 4.0. Если кто-то сталкивается с той же проблемой, перезапустите Сервис агента Amazon SSM после перезапуска Сервиса EC2Config.
Я прочитал это по следующей ссылке [ ШАГ-6 ]:
http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/send_logs_to_cwl.html
Он гласит следующее:
Если вы используете EC2Config версии 4.0 или новее, вам необходимо перезапустить агент SSM на экземпляре из оснастки Microsoft Services.
Я решил свою проблему, сделав это.
Ответ 2
Сначала вам нужно добавить роль 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
на вашем экземпляре также должен быть установлен в подробном виде:
![введите описание изображения здесь]()
Update:
В соответствии с документацией теперь вы можете присоединить или изменить роль IAM в свой существующий экземпляр.
Ответ 3
он работает отлично, но я ищу решение для отображения используемой памяти, а не доступной памяти. Это какой-то шанс в оконном сервере AWS?