Skip to content

Commit

Permalink
Merge pull request #197 from aaron-miller/topic_fluentd
Browse files Browse the repository at this point in the history
Feature: Fluentd Integration
  • Loading branch information
truthbk authored Jul 26, 2016
2 parents f97af0c + ff083b6 commit 0eeda3a
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 0 deletions.
37 changes: 37 additions & 0 deletions manifests/integrations/fluentd.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Class: datadog_agent::integrations::fluentd
#
# This class will install the fluentd integration
#
# Parameters:
# $monitor_agent_url
# The url fluentd lists it's plugins on
#
# Sample Usage:
#
# class { 'datadog_agent::integrations::fluentd' :
# monitor_agent_url => 'http://localhost:24220/api/plugins.json',
# plugin_ids => [
# 'elasticsearch_out',
# 'rsyslog_in',
# ],
# }
#
#
class datadog_agent::integrations::fluentd(
$monitor_agent_url = 'http://localhost:24220/api/plugins.json',
$plugin_ids = [],
) inherits datadog_agent::params {
include ::datadog_agent

validate_array($plugin_ids)

file { "${datadog_agent::params::conf_dir}/fluentd.yaml":
ensure => file,
owner => $datadog_agent::params::dd_user,
group => $datadog_agent::params::dd_group,
mode => '0600',
content => template('datadog_agent/agent-conf.d/fluentd.yaml.erb'),
require => Package[$datadog_agent::params::package_name],
notify => Service[$datadog_agent::params::service_name],
}
}
52 changes: 52 additions & 0 deletions spec/classes/datadog_agent_integrations_fluentd_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
require 'spec_helper'

describe 'datadog_agent::integrations::fluentd' do
let(:facts) {{
operatingsystem: 'Ubuntu',
}}
let(:conf_dir) { '/etc/dd-agent/conf.d' }
let(:dd_user) { 'dd-agent' }
let(:dd_group) { 'root' }
let(:dd_package) { 'datadog-agent' }
let(:dd_service) { 'datadog-agent' }
let(:conf_file) { "#{conf_dir}/fluentd.yaml" }

context 'with default parameters' do
it { should compile }
end

context 'with monitor_agent_url set' do
let(:params) {{
monitor_agent_url: 'foobar',
}}

it { should compile.with_all_deps }
it { should contain_file(conf_file).with(
owner: dd_user,
group: dd_group,
mode: '0600',
)}
it { should contain_file(conf_file).that_requires("Package[#{dd_package}]") }
it { should contain_file(conf_file).that_notifies("Service[#{dd_service}]") }

it { should contain_file(conf_file).with_content(%r{monitor_agent_url: foobar}) }
it { should contain_file(conf_file).without_content(%r{tags: }) }

context 'with plugin_ids parameter array' do
let(:params) {{
monitor_agent_url: 'foobar',
plugin_ids: %w{ foo bar baz },
}}
it { should contain_file(conf_file).with_content(/plugin_ids:[^-]+- foo\s+- bar\s+- baz\s*?[^-]/m) }
end

context 'plugin_ids not array' do
let(:params) {{
monitor_agent_url: 'foobar',
plugin_ids: 'aoeu',
}}

it { should_not compile }
end
end
end
14 changes: 14 additions & 0 deletions templates/agent-conf.d/fluentd.yaml.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#
# MANAGED BY PUPPET
#

init_config:

instances:
- monitor_agent_url: <%= @monitor_agent_url %>
<% if !@plugin_ids.empty? -%>
plugin_ids:
<% @plugin_ids.each do |plugin| -%>
- <%= plugin %>
<% end -%>
<% end -%>

0 comments on commit 0eeda3a

Please sign in to comment.