NEW: cloudwatch agent install and configuration for Linux instances
This commit is contained in:
parent
beb218d542
commit
7eec384ad9
@ -0,0 +1,50 @@
|
||||
<!-- This readme file is generated with terraform-docs -->
|
||||
This module installs Cloudwatch agent via SSM State Manager.
|
||||
It creates an association and install the agent to all instances every 1 day.
|
||||
|
||||
Then a default cloudwatch agent config is generated using amazon-cloudwatch-agent-config-wizard,
|
||||
saved on /opt/aws/amazon-cloudwatch-agent/bin/config.json, supplemented with additional collections,
|
||||
and uploaded on SSM parameter store as ```AmazonCloudWatch-linux```.
|
||||
|
||||
Note that for cloudwatch agent to fully function, the instance needs an instance profile with the
|
||||
following managed policies attached:
|
||||
|
||||
* CloudWatchAgentServerPolicy
|
||||
* AmazonSSMManagedInstanceCore
|
||||
|
||||
## Requirements
|
||||
|
||||
| Name | Version |
|
||||
|------|---------|
|
||||
| terraform | >= 1.3.0 |
|
||||
| aws | >= 5.0 |
|
||||
|
||||
## Providers
|
||||
|
||||
| Name | Version |
|
||||
|------|---------|
|
||||
| aws | >= 5.0 |
|
||||
|
||||
## Modules
|
||||
|
||||
No modules.
|
||||
|
||||
## Resources
|
||||
|
||||
| Name | Type |
|
||||
|------|------|
|
||||
| [aws_ssm_association.ConfigCwAgent](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssm_association) | resource |
|
||||
| [aws_ssm_association.InstallCwAgent](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssm_association) | resource |
|
||||
| [aws_ssm_parameter.CwAgentConfigLinux](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssm_parameter) | resource |
|
||||
|
||||
## Inputs
|
||||
|
||||
No inputs.
|
||||
|
||||
## Outputs
|
||||
|
||||
No outputs.
|
||||
|
||||
---
|
||||
## Authorship
|
||||
This module was developed by UPDATE_THIS.
|
135
modules/ManagementGovernance/CwAgentInstallUsingSsm/main.tf
Normal file
135
modules/ManagementGovernance/CwAgentInstallUsingSsm/main.tf
Normal file
@ -0,0 +1,135 @@
|
||||
resource "aws_ssm_association" "InstallCwAgent" {
|
||||
name = "AWS-ConfigureAWSPackage"
|
||||
association_name = "CwAgentInstall"
|
||||
schedule_expression = "cron(0 00 01 ? * * *)"
|
||||
max_concurrency = 10
|
||||
parameters = {
|
||||
name = "AmazonCloudWatchAgent"
|
||||
action = "Install"
|
||||
installationType = "Uninstall and reinstall"
|
||||
additionalArguments = "{}"
|
||||
}
|
||||
targets {
|
||||
key = "InstanceIds"
|
||||
values = ["*"]
|
||||
}
|
||||
}
|
||||
|
||||
resource "aws_ssm_association" "ConfigCwAgent" {
|
||||
name = "AmazonCloudWatch-ManageAgent"
|
||||
association_name = "CwAgentConfiguration"
|
||||
schedule_expression = "cron(0 00 02 ? * * *)"
|
||||
max_concurrency = 10
|
||||
parameters = {
|
||||
action = "configure"
|
||||
optionalConfigurationLocation = "AmazonCloudWatch-linux"
|
||||
optionalConfigurationSource = "ssm"
|
||||
mode = "ec2"
|
||||
optionalRestart = "yes"
|
||||
}
|
||||
targets {
|
||||
key = "InstanceIds"
|
||||
values = ["*"]
|
||||
}
|
||||
}
|
||||
|
||||
resource "aws_ssm_parameter" "CwAgentConfigLinux" {
|
||||
name = "AmazonCloudWatch-linux"
|
||||
description = "Cloudwatch agent Standard config for Linux"
|
||||
type = "String"
|
||||
value = local.CwAgentLinuxConfig
|
||||
}
|
||||
|
||||
locals {
|
||||
CwAgentLinuxConfig = jsonencode(
|
||||
{
|
||||
"agent" : {
|
||||
"metrics_collection_interval" : 60,
|
||||
"run_as_user" : "root"
|
||||
},
|
||||
"metrics" : {
|
||||
"aggregation_dimensions" : [
|
||||
[
|
||||
"InstanceId"
|
||||
]
|
||||
],
|
||||
"append_dimensions" : {
|
||||
"AutoScalingGroupName" : "$${aws:AutoScalingGroupName}",
|
||||
"ImageId" : "$${aws:ImageId}",
|
||||
"InstanceId" : "$${aws:InstanceId}",
|
||||
"InstanceType" : "$${aws:InstanceType}"
|
||||
},
|
||||
"metrics_collected" : {
|
||||
"cpu" : {
|
||||
"measurement" : [
|
||||
"cpu_usage_idle",
|
||||
"cpu_usage_iowait",
|
||||
"cpu_usage_user",
|
||||
"cpu_usage_system"
|
||||
],
|
||||
"metrics_collection_interval" : 60,
|
||||
"resources" : [
|
||||
"*"
|
||||
],
|
||||
"totalcpu" : false
|
||||
},
|
||||
"disk" : {
|
||||
"measurement" : [
|
||||
"used_percent",
|
||||
"inodes_free"
|
||||
],
|
||||
"metrics_collection_interval" : 60,
|
||||
"resources" : [
|
||||
"*"
|
||||
],
|
||||
"ignore_file_system_types" : [
|
||||
"devtmpfs",
|
||||
"overlay",
|
||||
"sysfs",
|
||||
"tmpfs"
|
||||
]
|
||||
},
|
||||
"diskio" : {
|
||||
"measurement" : [
|
||||
"io_time"
|
||||
],
|
||||
"metrics_collection_interval" : 60,
|
||||
"resources" : [
|
||||
"*"
|
||||
]
|
||||
},
|
||||
"mem" : {
|
||||
"measurement" : [
|
||||
"mem_used_percent"
|
||||
],
|
||||
"metrics_collection_interval" : 60
|
||||
},
|
||||
"statsd" : {
|
||||
"metrics_aggregation_interval" : 60,
|
||||
"metrics_collection_interval" : 10,
|
||||
"service_address" : ":8125"
|
||||
},
|
||||
"swap" : {
|
||||
"measurement" : [
|
||||
"swap_used_percent"
|
||||
],
|
||||
"metrics_collection_interval" : 60
|
||||
},
|
||||
"net": {
|
||||
"measurement": [
|
||||
"net_err_in",
|
||||
"net_err_out"
|
||||
],
|
||||
"metrics_collection_interval": 60
|
||||
},
|
||||
"processes": {
|
||||
"measurement": [
|
||||
"processes_total"
|
||||
],
|
||||
"metrics_collection_interval": 60
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
terraform {
|
||||
required_version = ">= 1.3.0"
|
||||
required_providers {
|
||||
aws = {
|
||||
source = "hashicorp/aws"
|
||||
version = ">= 5.0"
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user