Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms


diamond (2) Versions 2.0.5

Installs/Configures diamond

cookbook 'diamond', '~> 2.0.5'
cookbook 'diamond', '~> 2.0.5', :supermarket
knife cookbook site install diamond
knife cookbook site download diamond


Diamond is a python daemon that collects system metrics and publishes them to Graphite. It is capable of collecting cpu, memory, network, i/o, load and disk metrics. Additionally, it features an API for implementing custom collectors for gathering metrics from almost any source.

The documentation can be found on our wiki. For your convenience the wiki is setup as a submodule of this checkout. You can get it via running

git submodule init
git submodule update


This cookbook has a definition to make it easy to create collector configs. By default, the definition enables the collector. You can supply it with addition parameters. Below is the simplest example.

    collector_config "CPUCollector"

This simple example just enables the collector and it inhereits the default configuration for this collector as defined by the collector.

You can override these default settings by passing additional parameters. Below is an example of this.

    collector_config "DiskSpaceCollector" do
      filesystems      'ext2,ext3,xfs'
      exclude_filters  "'^/export/home'"

This example is enabling the DiskSpaceCollector while passing addition settings to specify which filesystems to mine data and to exclude certain directories (regex). Read the documentation/collector source code for information on what parameters each collector has. It is recommended that instead of passing values directly, inherit them from the node (as show belown).

    collector_config "DiskSpaceCollector" do
      filesystems      node[:diamond][:collectors][:DiskSpaceCollector][:filesystems]
      exclude_filters  node[:diamond][:collectors][:DiskSpaceCollector][:exclude_filters]

When you are collecting data via snmp, you need to specify that in the definition (as shown below) collector_config "SNMPInterfaceCollector" do path node[:diamond][:collectors][:SNMPInterfaceCollector][:path] snmp true interval node[:diamond][:collectors][:SNMPInterfaceCollector][:interval] time__out node[:diamond][:collectors][:SNMPInterfaceCollector][:timeout] retries node[:diamond][:collectors][:SNMPInterfaceCollector][:retries] port node[:diamond][:collectors][:SNMPInterfaceCollector][:port] community node[:diamond][:collectors][:SNMPInterfaceCollector][:community] devices node[:diamond][:collectors][:SNMPInterfaceCollector][:devices] end

Whats with the double underscore ('')? if a double underscore exists in the attribute name, it will be automatically removed when written to the collector config file. This is due to limitations within ruby code. Sometimes a attibute name may be a reserved ruby word (ie timeout), in which case, you can't use that key to specify an attribute for the collector. The use of double underscores ('') is a work around for that. (so 'timeout' is called as 'time__out' in the cookbook, but writes 'timeout' to the config file.


It is recommended that you create a recipe per collector, and add that recipe to the related role. When passing sensitive data to a diamond collector config (ie a username, password, etc), use data bags to encrypt the values.

Publishing to Chef Supermarket

To update the cookbook on the supermarket use stove

Example bash stove login --username cbarraford --key ~/.chef/cbarraford.pem stove

Dependent cookbooks

git >= 0.0.0
build-essential >= 0.0.0
yum >= 0.0.0
apt >= 0.0.0

Contingent cookbooks

There are no cookbooks that are contingent upon this one.

Collaborator Number Metric

2.0.5 failed this metric

Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.

Contributing File Metric

2.0.5 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of, and your repo must contain a file

Foodcritic Metric

2.0.5 passed this metric

License Metric

2.0.5 failed this metric

diamond does not have a valid open source license.
Acceptable licenses include Apache-2.0, apachev2, Apache 2.0, MIT, mit, GPL-2.0, gplv2, GNU Public License 2.0, GPL-3.0, gplv3, GNU Public License 3.0.

No Binaries Metric

2.0.5 passed this metric

Publish Metric

2.0.5 passed this metric

Supported Platforms Metric

2.0.5 passed this metric

Testing File Metric

2.0.5 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of, and your repo must contain a file

Version Tag Metric

2.0.5 passed this metric