This cookbook installs and configures AWS CloudWatch Agent.
- Ubuntu 14.04, 16.04, 18.04
- Centos 6, 7
- Fedora 29
- Amazon Linux
Place a dependency on the aws_cloudwatch cookbook in your cookbook's metadata.rb
depends 'aws_cloudwatch', '~> 1.0.2'
Then in a recipe:
aws_cloudwatch_agent 'default' do
action [:install, :configure, :restart]
json_config 'amazon-cloudwatch-agent.json.erb'
end
Amazon CloudWatch Agent configuration file which defines which metrics/logs are collected.
Place the amazon-cloudwatch-agent.json.erb
file to templates
directory. This is an agent configuration for metrics and logs collection.
See AWS documentation for more information: Manually Create or Edit the CloudWatch Agent Configuration File
The configuration file is at /opt/aws/amazon-cloudwatch-agent/etc. See AWS Documentation for more info. Default file looks like this:
# This common-config is used to configure items used for both ssm and cloudwatch access
## Configuration for shared credential.
## Default credential strategy will be used if it is absent here:
## Instance role is used for EC2 case by default.
## AmazonCloudWatchAgent profile is used for onPremise case by default.
# [credentials]
# shared_credential_profile = "{profile_name}"
# shared_credential_file= "{file_name}"
## Configuration for proxy.
## System-wide environment-variable will be read if it is absent here.
## i.e. HTTP_PROXY/http_proxy; HTTPS_PROXY/https_proxy; NO_PROXY/no_proxy
## Note: system-wide environment-variable is not accessible when using ssm run-command.
## Absent in both here and environment-variable means no proxy will be used.
# [proxy]
# http_proxy = "{http_url}"
# https_proxy = "{https_url}"
# no_proxy = "{domain}"
You can modify this configuration by overriding attributes:
default['aws_cloudwatch']['config']['params']['shared_credential_profile']
default['aws_cloudwatch']['config']['params']['shared_credential_file']
default['aws_cloudwatch']['config']['params']['http_proxy']
default['aws_cloudwatch']['config']['params']['https_proxy']
default['aws_cloudwatch']['config']['params']['no_proxy']
It is also possible to configure it with environment variables instead:
SHARED_CREDENTIAL_PROFILE
SHARED_CREDENTIAL_FILE
HTTP_PROXY
HTTPS_PROXY
NO_PROXY
If you want to provide your own template for the configuration file, then you need to supply it as a config
parameter to the resource:
aws_cloudwatch_agent 'default' do
action :install
config <config_template.erb>
end
The aws_cloudwatch_agent
resource installs AWS Cloudwatch Agent.
action
- Possible actions with the agent::install
,:configure
,:remove
,:start
,:stop
,:restart
config
- A template name for a customtest-config.toml
fileconfig_params
- A hash withtest-config.toml
parametersjson_config
- A template name for anamazon-cloudwatch-agent.json
file
aws_cloudwatch_agent 'default' do
action [:install, :configure, :restart]
json_config 'amazon-cloudwatch-agent.json.erb'
config_params :shared_credential_profile => 'test_profile',
:shared_credential_file => '/etc/test_credential_file',
:http_proxy => 'http://192.168.0.1',
:https_proxy => 'https://192.168.0.1',
:no_proxy => 'http://192.168.0.10'
end