簡體   English   中英

監控AWS CloudWatch for Windows實例中的內存使用情況

[英]Monitoring memory usage in AWS CloudWatch for Windows instance

默認情況下,CloudWatch不會監視內存使用情況。 所以我嘗試使用這些說明將它添加到AWS中的Windows實例。

這就是我做的:

  1. 我創建了一個名為custom-metrics-user 然后我存儲了訪問和密鑰。

  2. 我創建了一個內聯策略並將其附加到用戶。 它看起來像這樣:

     { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["cloudwatch:PutMetricData", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "ec2:DescribeTags"], "Resource": "*" } ] } 

  3. 我推出了Windows實例[2012 R2 Base AMI]。 通過RDP訪問實例后,我發現AWS.EC2.Windows.CloudWatch.json文件已經存在。

  4. 我相應地更改了.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" ] } } } 

  5. 我在EC2ConfigSettings下啟用了CloudWatch Logs集成。

  6. 我重新啟動了EC2Config服務。

我沒有收到任何錯誤,但內存指標未顯示在Cloud Watch控制台中。 博客說要等待10-15分鍾才能顯示指標,但自從我完成它已經過了一個小時。 出了什么問題?

首先,您需要向實例添加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監控級別也應設置為詳細信息:

在此輸入圖像描述

更新:

根據文檔 ,您現在可以將IAM角色附加或修改為現有實例。

我正在運行Windows 2012 Base R2 Server,它運行的EC2Config版本大於4.0。 如果有人遇到同樣的問題,請在重新啟動EC2Config服務后重新啟動Amazon SSM代理服務。

我在以下鏈接中閱讀[ STEP-6 ]:

http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/send_logs_to_cwl.html

它讀取以下內容:

如果您運行的是EC2Config 4.0或更高版本,則必須從Microsoft服務管理單元重新啟動實例上的SSM代理。

這樣做我解決了我的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM