To submit issues and patches please visit https://github.com/DataDog/chef-datadog. The code is licensed under the Apache License 2.0 (see LICENSE for details).
Chef recipes to deploy Datadog's components and configuration automatically.
This cookbook includes support for:
- Datadog Agent version 6.0 and up: please refer to the dedicated section and the inline docs for more details on how to use it
- Datadog Agent version 5.x
Log collection is now available with Agent v6, please refer to the inline docs to enable it.
Note: This README may refer to features that are not released yet. Please check the README of the git tag/the gem version you're using for your version's documentation
- chef >= 10.14
- Amazon Linux
- CentOS
- Debian
- RedHat
- Scientific Linux
- Ubuntu
- Windows (requires chef >= 12.0)
The following Opscode cookbooks are dependencies:
apt
chef_handler
windows
yum
Note for Chef 11 users: please use these additional dependency version contraints for compatibility with Chef 11:
cookbook 'apt', '< 4.0'
cookbook 'chef_handler', '< 2.0'
cookbook 'windows', '< 2.0'
cookbook 'yum', '~> 3.0'
(in Berkshelf/Librarian format)
Just a placeholder for now, when we have more shared components they will probably live there.
Installs the Datadog agent on the target system, sets the API key, and start the service to report on the local system metrics
Notes for Windows:
-
With Chef >= 12.6 and the
windows
cookbook >= 1.39.0, Agent upgrades are known to fail. For Chef>=12.6 users on Windows, we recommend pinning thewindows
cookbook to a lower version (~> 1.38.0
for instance).If that's not an option, a known workaround is to use the
remove-dd-agent
recipe (since the2.5.0
version of the present cookbook) to uninstall the Agent prior to any Agent upgrade. -
Because of changes in the Windows Agent packaging and install in version 5.12.0, when upgrading the Agent from versions <= 5.10.1 to versions >= 5.12.0, please set the
windows_agent_use_exe
attribute totrue
.Once the upgrade is complete, you can leave the attribute to its default value (
false
).For more information on these Windows packaging changes, see the related docs on the dd-agent wiki.
Installs the chef-handler-datadog gem and invokes the handler at the end of a Chef run to report the details back to the newsfeed.
Installs the language-specific libraries to interact with dogstatsd
.
- Note for Chef >= 13 users: the
datadog::dogstatsd-python
recipe is not compatible with Chef >= 13, as it relies on a resource that was removed in Chef 13.0. To install thedogstatsd-python
library with Chef, please add a dependency on thepoise-python
cookbook to your custom/wrapper cookbook, and use the following resource:For more advanced usage, please refer to thepython_package 'dogstatsd-python' # assumes that python and pip are installed
poise-python
cookbook documentation
Installs the language-specific libraries for application Traces (APM).
- Note for Chef >= 13 users: the
datadog::ddtrace-python
recipe is not compatible with Chef >= 13, as it relies on a resource that was removed in Chef 13.0. To install theddtrace-python
library with Chef, please add a dependency on thepoise-python
cookbook to your custom/wrapper cookbook, and use the following resource:For more advanced usage, please refer to thepython_package 'ddtrace' # assumes that python and pip are installed
poise-python
cookbook documentation
There are many other integration-specific recipes, that are meant to assist in deploying the correct agent configuration files and dependencies for a given integration.
Please note the cookbook now supports installing both Agent v5 and Agent v6 of the Datadog Agent on Linux (since v2.14.0) and Windows (since v2.15.0). By default versions <=2.x
of the cookbook will default to install Agent5, you may however override this behavior with the node['datadog']['agent6']
attribute.
default_attributes(
'datadog' => {
'agent6' => true
}
)
Note: to upgrade to Agent 6 on a node with Agent 5 already installed, you also have to pin agent6_version
to a v6 version (recommended), or set agent6_package_action
to 'upgrade'
.
Additional attributes are available to have finer control over how you install Agent 6. These are Agent 6 counterparts to several well known Agent 5 attributes (code here):
agent6_version
: allows you to pin the agent version (recommended).agent6_package_action
: defaults to'install'
, may be set to'upgrade'
to automatically upgrade to latest (not recommended, we recommend pinning to a version withagent6_version
and change that version to upgrade).agent6_aptrepo
: desired APT repo for the agent. Defaults tohttp://apt.datadoghq.com
agent6_aptrepo_dist
: desired distribution for the APT repo. Defaults tostable
agent6_yumrepo
: desired YUM repo for the agent. Defaults tohttps://yum.datadoghq.com/stable/6/x86_64/
Please review the attributes/default.rb file (at the version of the cookbook you use) for the list and usage of the attributes used by the cookbook.
Should you wish to add additional elements to the agent6 configuration file (typically /etc/datadog-agent/datadog.yaml
) that are not directly available as attributes of the cookbook, you may use the node['datadog']['extra_config']
attribute. This attribute is a hash and will be marshaled into the configuration file accordingly.
For general information on the Datadog Agent 6, please refer to the datadog-agent repo.
- Add this cookbook to your Chef Server, either by installing with knife or by adding it to your Berksfile:
cookbook 'datadog', '~> 2.14.0'
- Add your API Key either:
- as a node attribute via an
environment
orrole
, or - as a node attribute by declaring it in another cookbook at a higher precedence level, or
- in the node
run_state
by settingnode.run_state['datadog']['api_key']
in another cookbook precedingdatadog
's recipes in the run_list. This approach has the benefit of not storing the credential in clear text on the Chef Server.
-
Create an 'application key' for
chef_handler
here, and add it as a node attribute or in the run state, as in Step #2.NB: if you're using the run state to store the api and app keys you need to set them at compile time before
datadog::dd-handler
in the run list. -
Associate the recipes with the desired
roles
, i.e. "role:chef-client" should contain "datadog::dd-handler" and a "role:base" should start the agent with "datadog::dd-agent". Here's an example role with both recipes:
name 'example'
description 'Example role using DataDog'
default_attributes(
'datadog' => {
'agent6' => true,
'api_key' => 'api_key',
'application_key' => 'app_key'
}
)
run_list %w(
recipe[datadog::dd-agent]
recipe[datadog::dd-handler]
)
NB: set the agent6
attribute to false
in the datadog
hash if you'd like to install Agent v5.
- Wait until
chef-client
runs on the target node (or trigger chef-client manually if you're impatient)
We are not making use of data_bags in this recipe at this time, as it is unlikely that you will have more than one API key and one application key.
For more deployment details, visit the Datadog Documentation site.
- Add Chef Custom JSON:
{"datadog":{"agent6": true, "api_key": "<API_KEY>", "application_key": "<APP_KEY>"}}
- Include the recipe in install-lifecycle recipe:
include_recipe 'datadog::dd-agent'