Opscode Chef cookbook for td-agent (Treasure Data Agent). The release log of td-agent is available here.
NOTE: td-agent is open-sourced as Fluentd project. If you want to use stable version of Fluentd, using this cookbook is recommended.
This cookbook is released on Chef Supermarket. You can install the cookbook with using Berkshelf.
$ echo 'cookbook "td-agent"' >> Berksfile
$ berks install
The knife-github-cookbooks gem is a plugin for knife that supports installing cookbooks directly from a GitHub repository. To install with this plugin, please follow these steps:
$ gem install knife-github-cookbooks
$ cd chef-repo
$ knife cookbook github install treasure-data/chef-td-agent
This cookbook may be used on Amazon Linux but we cannot guarantee if td-agent will work properly because AWS doesn't guarantee binary compatibility with RHEL (they aim to be "as compatible as possible"). If users encounter any compatibility issues with td-agent on Amazon Linux, they should contact AWS.
This cookbook has these external dependencies.
- apt cookbook
- yum cookbook
API Key, and the Secret Key are required.
node[:td_agent][:api_key]
(required)
A list of fluentd plugins to install. The fluent-plugin-
prefix is automatically added. Additional variables can be passed.
node[:td_agent][:plugins]
This installs the latest version of fluent-plugin-flowcounter
and version 0.0.9 of fluent-plugin-rewrite
.
node[:td_agent][:plugins] = [
"flowcounter",
{ "rewrite" => { "version" => "0.0.9" } }
]
You can install latest td-agent 2 using version
attribute and major version.
node[:td_agent][:version] = '2'
You can also specify full version.
node[:td_agent][:version] = '2.0.4'
If pinning_version
is true, then versoin
s td-agent will be installed. The default version
is latest version.
node[:td_agent][:pinning_version]
node[:td_agent][:version]
In this case, you should set full version to node[:td_agent][:version]
.
pinning_version
and version
attributes are now available for rpm
package.
The td-agent repository now use reprepro
for building Deb repository.
reprepro
can not handle multiple versions of the same package.
UID of td-agent user. Automatically assigned by default.
GID of td-agent group. Automatically assigned by default.
Installs a gem or fluentd plugin using the embedded fluent-gem
Action | Description |
---|---|
install | Install the gem, optinally with a specific version. Default. |
upgrade | Upgrade to the latest gem |
remove | Remove the gem |
purge | Purge the gem |
Attribute | Description |
---|---|
package_name | Gem name. Defaults to name |
version | Gem version. Installs the latest if none specified |
source | Local .gem file |
options | Options passed to the gem command |
gem_binary | Override path to the gem command |
response_file | Not supported |
plugin | If true, no need to prefix the gem name w/ "fluent-plugin-". Defaults to false |
This installs fluent-plugin-datacounter
(v0.2.0)
td_agent_gem "datacounter" do
version "0.2.0"
plugin true
end
This installs the latest version of aws-sdk
td_agent_gem "aws-sdk" do
plugin false
end
Create file with source definition in /etc/td-agent/conf.d
directory. It works only if node[:td_agent][:includes]
is true
Notice: If you use some plugins in your sources, you should install it before you call lwrp.
Action | Description |
---|---|
:create | Create a file |
:delete | Delete a file |
Attribute | Description |
---|---|
source_name | File name. To its value will be added .conf . Defaults to name |
type | Type of source. This is name of input plugin. |
tag | Tag, what uses in fluentd routing. |
params | Parameters of source. Hash. |
This example creates the source with tail
type and syslog
tag which reads from /var/log/messages
and parses it as syslog
.
td_agent_source 'test_in_tail' do
type 'tail'
tag 'syslog'
params(format: 'syslog',
path: '/var/log/messages')
end
Create file with match definition in /etc/td-agent/conf.d
directory. It works only if node[:td_agent][:includes]
is true
Notice: Notice: If you use some plugins in your matches, you should install it before you call lwrp.
Action | Description |
---|---|
:create | Create a file |
:delete | Delete a file |
Attribute | Description |
---|---|
match_name | File name. To its value will be added .conf . Defaults to name |
type | Type of match. This is name of output plugin. |
tag | Tag, what uses in fluentd routing. |
params | Parameters of match. Hash. |
This example creates the match with type copy
and tag webserver.*
which sends log data to local graylog2 server.
td_agent_match 'test_gelf_match' do
type 'copy'
tag 'webserver.*'
params( store: [{ type: 'gelf',
host: '127.0.0.1',
port: 12201,
flush_interval: '5s'},
{ type: 'stdout' }])
end
Install plugin from url to /etc/td-agent/plugin
dir.
Action | Description |
---|---|
:create | Install plugin |
:delete | Uninstall plugin |
Attribute | Description |
---|---|
plugin_name | File name. To its value will be added .rb . Defaults to name |
url | Url what contains plugin file. Value of this attribute may be the same as remote_file resource. |
Install plugin gelf.rb
from url https://raw.githubusercontent.com/emsearcy/fluent-plugin-gelf/master/lib/fluent/plugin/out_gelf.rb
td_agent_plugin 'gelf' do
url 'https://raw.githubusercontent.com/emsearcy/fluent-plugin-gelf/master/lib/fluent/plugin/out_gelf.rb'
end
Optionally include /etc/td-agent/conf.d/*.conf
files (i.e. symlinks, other recipes, etc.)
node[:td_agent][:includes] = false
Optionally prevent /etc/td-agent/td-agent.conf
from including default config.
node[:td_agent][:default_config] = true
This is an example role file.
name "base"
description "base server role."
run_list(
"recipe[apt]",
"recipe[yum]",
"recipe[td-agent]",
)
override_attributes(
# for td-agent
:td_agent => {
:api_key => 'foo_bar_buz',
:plugins => [
'rewrite'
]
}
)
node[:td_agent][:in_http][:enable_api] = true
Access to the API may be turend off by setting enable_api
to false
. This may be of particular use when
td-agent is being used on endpoint systems that are forwarding logs to a centralized td-agent server.
Copyright 2014 Treasure Data, Inc.
The code is licensed under the Apache License 2.0 (see LICENSE for details).