Chef cookbook for td-agent (Treasure Data Agent). The release log of td-agent is available here.
NOTE: td-agent is open-sourced as the Fluentd project. If you want to use a stable version of Fluentd, using this cookbook is recommended.
This cookbook is released on Chef Supermarket. You can install the cookbook 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 the latest td-agent 2 using the version
attribute and major version.
node[:td_agent][:version] = '2'
You can also specify the full version.
node[:td_agent][:version] = '2.0.4'
If pinning_version
is true, then version
's td-agent will be installed. The default version
is the latest version.
node[:td_agent][:pinning_version]
node[:td_agent][:version]
In this case, you should set the full version in node[:td_agent][:version]
.
pinning_version
and version
attributes are now available for rpm
packages.
They are unsupported for deb
packages because the td-agent repository currently
uses reprepro
for building deb repositories, which 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
Create file with filter 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 for your filters, you should install them before you call lwrp.
Action | Description |
---|---|
:create | Create a filter |
:delete | Delete a filter |
Attribute | Description |
---|---|
filter_name | File name. To its value will be added .conf . Defaults to name |
type | Type of filter. This is name of output plugin. |
tag | Tag, what uses in fluentd routing. |
params | Parameters of filter. Hash. |
This example creates the filter with type record_transformer
and tag webserver.*
which adds the hostname
field with the server's hostname as its value:
td_agent_filter 'filter_webserver' do
type 'record_transformer'
tag 'webserver.*'
params(
record: [ { host_param: %q|"#{Socket.gethostname}"| } ]
)
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 disabled 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).