如何在 windows 中使用 Cloud Watch 监控 AWS EC2 上的空闲磁盘 space

How to monitor free disk space at AWS EC2 with Cloud Watch in windows

我想在我的磁盘还剩 10% 时发出警报 space。

我阅读了一些关于如何使用 Cloud Watch 监控空闲磁盘 space 的文章,但我认为它似乎仅适用于 linux。

您是否有监控 windows 的空闲磁盘 space 的解决方案?

提前致谢。

  1. 下载最新的 EC2Config 并将其安装到您的 windows 实例 (https://aws.amazon.com/developertools/5562082477397515)
  2. 在此处编辑设置文件 C:\Program Files\Amazon\Ec2ConfigService\Settings\AWS.EC2.Windows.CloudWatch.json

在适当的地方插入一些计数器

    {    
        "Id": "PerformanceCounterMemory",
        "FullName": "AWS.EC2.Windows.CloudWatch.PerformanceCounterComponent.PerformanceCounterInputComponent,AWS.EC2.Windows.CloudWatch",
        "Parameters": {
            "CategoryName": "Memory",
            "CounterName": "Available MBytes",
            "InstanceName": "",
            "MetricName": "Available-Memory",
            "Unit": "Gigabytes",
            "DimensionName": "InstanceId",
            "DimensionValue": "{instance_id}"
        }
    },
    {
        "Id": "PerformanceCounterDisk",
        "FullName": "AWS.EC2.Windows.CloudWatch.PerformanceCounterComponent.PerformanceCounterInputComponent,AWS.EC2.Windows.CloudWatch",
        "Parameters": {
            "CategoryName": "LogicalDisk",
            "CounterName": "% Free Space",
            "InstanceName": "C:",
            "MetricName": "FreeDiskPct",
            "Unit": "Percent",
            "DimensionName": "InstanceId",
            "DimensionValue": "{instance_id}"
        }
    }

确保将它们包含在流程部分:

"Flows": {
            "Flows": 
            [
                "(ApplicationEventLog,SystemEventLog),CloudWatchLogs",
                "(PerformanceCounterMemory,PerformanceCounterDisk),CloudWatch"
            ]
        }

记得设置一个有cloudwatch policy权限的用户的key和secret。

  1. 重新启动 EC2Config 服务。在日志中关注进度:C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt
  2. 在 cloudwatch 中为您的新 FreeDiskPct 计数器创建一个警报。

这是如何配置 Windows 2016 EC2 实例以报告可用磁盘 space(或您服务器上的任何其他性能计数器)

  • 下载示例 AWS.EC2.Windows.CloudWatch.json 文件。这是我找到一个的地方。 https://s3.amazonaws.com/ec2-downloads-windows/CloudWatchConfig/AWS.EC2.Windows.CloudWatch.json

  • 将示例 AWS.EC2.Windows.CloudWatch.json 文件复制到您的 Windows Server 2016 EC2 实例上 C:\Program Files\Amazon\SSM\Plugins\awsCloudWatch\

  • 编辑 AWS.EC2.Windows.CloudWatch.json 并设置 IsEnabled 为真

  • 根据需要添加其他指标。配置中有一个内存使用示例。 Copy/paste 并像这样更改指标名称:

{
    "Id": "PerformanceCounterDisk",
    "FullName": "AWS.EC2.Windows.CloudWatch.PerformanceCounterComponent.PerformanceCounterInputComponent,AWS.EC2.Windows.CloudWatch",
    "Parameters": {
        "CategoryName": "LogicalDisk",
        "CounterName": "% Free Space",
        "InstanceName": "C:",
        "MetricName": "FreeDiskPercentage",
        "Unit": "Percent",
        "DimensionName": "InstanceId",
        "DimensionValue": "{instance_id}"
    }
}
  • 运行 Powershell 作为管理员和 运行 Restart-Service AmazonSSMAgent

  • 新的 CloudWatch 指标几乎立即出现在 AWS CloudWatch 中。

  • 根据需要配置 AWS CloudWatch 警报。

此外,我制作了一个简短的视频,其中包含一些有关在 Windows Server 2016 上进行设置的提示。

https://www.youtube.com/watch?v=xKVrJJyG-4I

AWS 的以下指南包含分步指南。 http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/send_logs_to_cwl_instances.html#send_logs_cwl_configfile

在 Windows EC2 实例中(在 Server 2019 上测试) 根据您的实例类型下载并安装 CloudWatch Agent。

AWS CloudWatch Agent Installation

之后您会注意到一个名为 Amazon CloudWatch Agent 的新服务:在您配置它之前它不会启动。

配置 运行 向导位于 C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-config-wizard.exe

回答所有问题(您可以跳过日志分析并选择免费存储百分比的基本指标),最终将在 C:\Program [=46] 中创建一个名为 config.json 的文件=]

将此文件移动到 C:\ProgramData\Amazon\AmazonCloudWatchAgent,将其重命名为 amazon-cloudwatch-agent.json 并启动服务 Cloudwatch 代理。

服务应该启动并收集指标,检查日志以查看是否有任何错误

如果在位于 C:\ProgramData\Amazon\AmazonCloudWatchAgent\Logs 的日志中,您会看到这个...

2020/05/27 16:11:27 I! Config has been translated into TOML C:\ProgramData\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent.toml 2020-05-27T14:11:31Z I! cloudwatch: get unique roll up list [] 2020-05-27T14:11:31Z I! Starting AmazonCloudWatchAgent 2020-05-27T14:11:31Z I! Tags enabled: host=[your host] 2020-05-27T14:11:31Z I! Agent Config: Interval:1m0s, Quiet:false, Hostname:[your host], Flush Interval:1s 2020-05-27T14:11:31Z I! cloudwatch: publish with ForceFlushInterval: 1m0s, Publish Jitter: 23s 2020-05-27T14:11:31Z I! Started the statsd service on :8125 2020-05-27T14:11:31Z I! Statsd listener listening on: [::]:8125

...一切顺利,只要您已将 IAM 角色附加到您的实例以授予其向 cloudwatch 报告的权限。

看到这个:CloudWatch permissions

然后您可以在 Cloudwatch 的 CWAgent 参数部分找到所有新定义的指标,以便您可以创建警报

我认为基本问题是在 CloudWatch 中为 Windows 实例设置磁盘利用率警报。我希望您知道要在 CloudWatch 中获取磁盘指标,您需要安装 CloudWatch 代理,这涉及上面人们已经提到的多个步骤。我们从 AWS CloudWatch 代理获取 Windows 实例的免费 space 百分比。因此,要为高磁盘利用率设置警报,我们需要 select 警报条件低于或等于 10% 或根据您的要求。我希望这能回答你的问题。alarm condition for windows disk