Reputation: 9676
I want to make alarm in case that there is 10% left in my disk space.
I read some articles of how monitoring free disk space with Cloud Watch but I think it seems to be only for linux.
Do you have any solution for monitoring free disk space for windows?
Thanks in advance.
Upvotes: 14
Views: 37103
Reputation: 1
I think the basic question is for setting up the disk utilization alarm in CloudWatch for Windows instance. I hope you know that to get the disk metrics in CloudWatch you need to install the CloudWatch agent, which involves multiple steps already people have mentioned above. We get the %age of free space for Windows instance from AWS CloudWatch agent. So to set the alarm for high disk utilization we need to select alarm condition as lower than or equal to 10% or as per your requirement. I hope this answers your question.alarm condition for windows disk
Upvotes: 0
Reputation: 349
In Windows EC2 instance (tested on Server 2019) Download and install CloudWatch Agent based on your instance type.
AWS CloudWatch Agent Installation
After that you'll notice a new service called Amazon CloudWatch Agent: it won't start until you configure it.
To configure that run the wizard located at C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-config-wizard.exe
Answer to all questions (you can skip log analysis and choos Basic metric for free storage percentage) and eventually a file called config.json will be created at C:\Program Files\Amazon\AmazonCloudWatchAgent
Move this file to C:\ProgramData\Amazon\AmazonCloudWatchAgent, rename it as amazon-cloudwatch-agent.json and start the service Cloudwatch Agent.
The service should start and collect metrics,check the log to see if there's are any error
If in log located at C:\ProgramData\Amazon\AmazonCloudWatchAgent\Logs you see this...
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
...all's gone well, as long as you have attached a IAM role to your instance to give it permissions to report to cloudwatch.
See this: CloudWatch permissions
Then you can find all your new defined metrics at CWAgent Parameters section in Cloudwatch, so that you can create an alarm
Upvotes: 2
Reputation: 3035
This is how to configure a Windows 2016 EC2 instance to report free disk space (or any other performance counter on your server)
Download a sample AWS.EC2.Windows.CloudWatch.json
file. This is where I found one.
https://s3.amazonaws.com/ec2-downloads-windows/CloudWatchConfig/AWS.EC2.Windows.CloudWatch.json
Copy the sample AWS.EC2.Windows.CloudWatch.json file on your Windows Server 2016 EC2 Instance here
C:\Program Files\Amazon\SSM\Plugins\awsCloudWatch\
Edit AWS.EC2.Windows.CloudWatch.json and set IsEnabled true
Add additional metrics as required. There is a sample one in the config for memory usage. Copy/paste this and alter the Metric name like this:
{
"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}"
}
}
Run Powershell as administrator and run
Restart-Service AmazonSSMAgent
New CloudWatch metrics appear almost instantly in AWS CloudWatch.
Configure AWS CloudWatch alarms as required.
Additionally, I made a short video with some tips on setting this up on Windows Server 2016.
https://www.youtube.com/watch?v=xKVrJJyG-4I
The following guide from AWS contains a step by step guide. http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/send_logs_to_cwl_instances.html#send_logs_cwl_configfile
Upvotes: 15
Reputation: 3261
Insert some counters in the appropriate place
{
"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}"
}
}
Make sure to include them in the flow section:
"Flows": {
"Flows":
[
"(ApplicationEventLog,SystemEventLog),CloudWatchLogs",
"(PerformanceCounterMemory,PerformanceCounterDisk),CloudWatch"
]
}
Remember to set the key and secret of a user with cloudwatch policy rights.
Upvotes: 9