Skip to content

Commit

Permalink
Merge pull request #4 from alphagov/aws_download_installer_only_if_mi…
Browse files Browse the repository at this point in the history
…ssing

Add `create_if_missing` attribute to remote_file...
  • Loading branch information
benbridts committed Aug 18, 2016
2 parents 56db2d4 + eb82e69 commit e0bc3c5
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 62 deletions.
135 changes: 74 additions & 61 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,72 +1,85 @@
Description
===========
# Description

Installs the CloudWatch Logs client and enables easy configuration of multiple logs via attributes.
Installs the CloudWatch Logs client and enables easy configuration of multiple
logs via attributes.

## Supported OS

# Supported OS
Currently all linux OS's are supported.

On Amazon Linux the yum package will be used.

# Usage
Logs are configured by appending to the `['cwlogs']['logfiles']` attribute from any recipe. You can configure as many
logs as needed. Simply include the default cwlogs recipe in your runlist after all recipes which define a log.


# Example

default['cwlogs']['logfiles']['mysite-httpd_access'] = {
:log_stream_name => '{instance_id}-{hostname}',
:log_group_name => 'mysite-httpd_access-group',
:file => '/var/log/httpd/mysite.com/access_log',
:datetime_format => '%d/%b/%Y:%H:%M:%S %z',
:initial_position => 'end_of_file'
}

default['cwlogs']['logfiles']['mysite-httpd_error'] = {
:log_stream_name => '{instance_id}-{hostname}',
:log_group_name => 'mysite-httpd_error-group',
:file => '/var/log/httpd/mysite.com/error_log',
:datetime_format => '%d/%b/%Y:%H:%M:%S %z',
:initial_position => 'end_of_file'
}

default['cwlogs']['logfiles']['mysite-mod_security_log'] = {
:log_stream_name => '{instance_id}-{hostname}',
:log_group_name => 'mysite-mod_security_log',
:file => '/var/log/modsec_audit.log',
:datetime_format => '[%d/%b/%Y:%H:%M:%S %z]',
:multi_line_start_pattern => '^--([0-9a-fA-F]*){8}-[A]{1}--',
:initial_position => 'end_of_file'
}
## Usage

Logs are configured by appending to the `['cwlogs']['logfiles']` attribute from
any recipe. You can configure as many logs as needed. Simply include the
default cwlogs recipe in your runlist after all recipes which define a log.

If you do not want each chef run to risk pulling in the latest cloudwatch
installer from AWS, then you can set the following attribute to `false`:

```ruby
['cwlogs']['attempt_upgrade'] = false
```

## Example

```ruby
default['cwlogs']['logfiles']['mysite-httpd_access'] = {
:log_stream_name => '{instance_id}-{hostname}',
:log_group_name => 'mysite-httpd_access-group',
:file => '/var/log/httpd/mysite.com/access_log',
:datetime_format => '%d/%b/%Y:%H:%M:%S %z',
:initial_position => 'end_of_file'
}

default['cwlogs']['logfiles']['mysite-httpd_error'] = {
:log_stream_name => '{instance_id}-{hostname}',
:log_group_name => 'mysite-httpd_error-group',
:file => '/var/log/httpd/mysite.com/error_log',
:datetime_format => '%d/%b/%Y:%H:%M:%S %z',
:initial_position => 'end_of_file'
}

default['cwlogs']['logfiles']['mysite-mod_security_log'] = {
:log_stream_name => '{instance_id}-{hostname}',
:log_group_name => 'mysite-mod_security_log',
:file => '/var/log/modsec_audit.log',
:datetime_format => '[%d/%b/%Y:%H:%M:%S %z]',
:multi_line_start_pattern => '^--([0-9a-fA-F]*){8}-[A]{1}--',
:initial_position => 'end_of_file'
}
```

From any attributes file will generate the following CloudWatch Logs config:

[mysite-httpd_access]
log_stream_name = {instance_id}-{hostname}
log_group_name = mysite-httpd_access-group
file = /var/log/httpd/mysite.com/access_log
datetime_format = %d/%b/%Y:%H:%M:%S %z
initial_position = end_of_file
[mysite-httpd_error]
log_stream_name = {instance_id}-{hostname}
log_group_name = mysite-httpd_error-group
file = /var/log/httpd/mysite.com/error_log
datetime_format = %d/%b/%Y:%H:%M:%S %z
initial_position = end_of_file
[mysite-mod_security_log]
log_stream_name = {instance_id}-{hostname}
log_group_name = mysite-mod_security_log
file = /var/log/modsec_audit.log
datetime_format = [%d/%b/%Y:%H:%M:%S %z]
multi_line_start_pattern = ^--([0-9a-fA-F]*){8}-[A]{1}--
initial_position = end_of_file
All hash elements will pass through to the config file, so for example you can use `encoding` or any other supported
config element. See the [AWS CloudWatch Logs configuration reference][1] for details.
[1](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/AgentReference.html)
```ini
[mysite-httpd_access]
log_stream_name = {instance_id}-{hostname}
log_group_name = mysite-httpd_access-group
file = /var/log/httpd/mysite.com/access_log
datetime_format = %d/%b/%Y:%H:%M:%S %z
initial_position = end_of_file

[mysite-httpd_error]
log_stream_name = {instance_id}-{hostname}
log_group_name = mysite-httpd_error-group
file = /var/log/httpd/mysite.com/error_log
datetime_format = %d/%b/%Y:%H:%M:%S %z
initial_position = end_of_file

[mysite-mod_security_log]
log_stream_name = {instance_id}-{hostname}
log_group_name = mysite-mod_security_log
file = /var/log/modsec_audit.log
datetime_format = [%d/%b/%Y:%H:%M:%S %z]
multi_line_start_pattern = ^--([0-9a-fA-F]*){8}-[A]{1}--
initial_position = end_of_file
```

All hash elements will pass through to the config file, so for example you can
use `encoding` or any other supported config element.

> See the [AWS CloudWatch Logs configuration reference][1] for details.
[1]: http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/AgentReference.html
1 change: 1 addition & 0 deletions attributes/default.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
default['cwlogs']['region'] = 'us-east-1'
default['cwlogs']['state_file_dir'] = '/var/awslogs/state'
default['cwlogs']['state_file_name'] = 'agent-state'
default['cwlogs']['attempt_upgrade'] = true
2 changes: 1 addition & 1 deletion metadata.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
license 'FreeBSD'
description 'Installs and configures AWS CloudWatch Logs'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version '0.0.4'
version '0.0.6'

%w{ ubuntu debian centos redhat fedora amazon}.each do |os|
supports os
Expand Down
1 change: 1 addition & 0 deletions recipes/installer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
remote_file '/opt/aws/cloudwatch/awslogs-agent-setup.py' do
source 'https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py'
mode '0755'
action node['cwlogs']['attempt_upgrade'] ? :create : :create_if_missing
end

execute 'Install CloudWatch Logs agent' do
Expand Down

0 comments on commit e0bc3c5

Please sign in to comment.