{"id":15013945,"url":"https://github.com/voxpupuli/puppet-collectd","last_synced_at":"2026-04-08T14:32:49.453Z","repository":{"id":6815314,"uuid":"8063324","full_name":"voxpupuli/puppet-collectd","owner":"voxpupuli","description":"Collectd module for Puppet","archived":false,"fork":false,"pushed_at":"2026-03-28T12:47:16.000Z","size":2879,"stargazers_count":69,"open_issues_count":58,"forks_count":265,"subscribers_count":49,"default_branch":"master","last_synced_at":"2026-04-01T10:14:43.414Z","etag":null,"topics":["bsd-puppet-module","centos-puppet-module","debian-puppet-module","freebsd-puppet-module","gentoo-puppet-module","hacktoberfest","linux-puppet-module","oraclelinux-puppet-module","puppet","redhat-puppet-module","scientific-puppet-module","ubuntu-puppet-module"],"latest_commit_sha":null,"homepage":"https://forge.puppet.com/puppet/collectd","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/voxpupuli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"open_collective":"vox-pupuli","github":"voxpupuli"}},"created_at":"2013-02-07T00:21:39.000Z","updated_at":"2026-03-28T12:47:21.000Z","dependencies_parsed_at":"2023-09-27T16:47:27.660Z","dependency_job_id":"cd7f8759-8442-421d-8003-924cdc7c1302","html_url":"https://github.com/voxpupuli/puppet-collectd","commit_stats":{"total_commits":1372,"total_committers":233,"mean_commits":5.888412017167382,"dds":0.7456268221574345,"last_synced_commit":"d6423b951eae99a01d60bb5aff629338bdc365e3"},"previous_names":["pdxcat/puppet-module-collectd"],"tags_count":52,"template":false,"template_full_name":null,"purl":"pkg:github/voxpupuli/puppet-collectd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-collectd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-collectd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-collectd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-collectd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voxpupuli","download_url":"https://codeload.github.com/voxpupuli/puppet-collectd/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voxpupuli%2Fpuppet-collectd/sbom","scorecard":{"id":1242020,"data":{"date":"2026-01-12","repo":{"name":"github.com/voxpupuli/puppet-collectd","commit":"0fb08801484d0bc1c5aebff1547a54cd2855a987"},"scorecard":{"version":"v5.4.1-0.20260109214540-85483c21ffbb","commit":"85483c21ffbb0f125cf1d16aa53f283d574f4ca5"},"score":4.8,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#maintained"}},{"name":"Code-Review","score":8,"reason":"Found 11/13 approved changesets -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/labeler.yml:18","Info: topLevel 'contents' permission set to 'read': .github/workflows/ci.yml:20","Info: topLevel 'contents' permission set to 'read': .github/workflows/labeler.yml:12","Warn: topLevel 'contents' permission set to 'write': .github/workflows/prepare_release.yml:15","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release.yml:14","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/voxpupuli/puppet-collectd/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/labeler.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/voxpupuli/puppet-collectd/labeler.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/prepare_release.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/voxpupuli/puppet-collectd/prepare_release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/voxpupuli/puppet-collectd/release.yml/master?enable=pin","Info:   0 out of   1 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v15.0.0 not signed: https://api.github.com/repos/voxpupuli/puppet-collectd/releases/227333778","Warn: release artifact v15.0.0 does not have provenance: https://api.github.com/repos/voxpupuli/puppet-collectd/releases/227333778"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":9,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/voxpupuli/.github/SECURITY.md:1","Info: Found linked content: github.com/voxpupuli/.github/SECURITY.md:1","Warn: One or no descriptive hints of disclosure, vulnerability, and/or timelines in security policy","Info: Found text in security policy: github.com/voxpupuli/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/85483c21ffbb0f125cf1d16aa53f283d574f4ca5/docs/checks.md#sast"}}]},"last_synced_at":"2026-01-21T03:12:21.882Z","repository_id":6815314,"created_at":"2026-01-21T03:12:21.882Z","updated_at":"2026-01-21T03:12:21.882Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31559835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bsd-puppet-module","centos-puppet-module","debian-puppet-module","freebsd-puppet-module","gentoo-puppet-module","hacktoberfest","linux-puppet-module","oraclelinux-puppet-module","puppet","redhat-puppet-module","scientific-puppet-module","ubuntu-puppet-module"],"created_at":"2024-09-24T19:44:59.202Z","updated_at":"2026-04-08T14:32:49.428Z","avatar_url":"https://github.com/voxpupuli.png","language":"Ruby","funding_links":["https://opencollective.com/vox-pupuli","https://github.com/sponsors/voxpupuli"],"categories":[],"sub_categories":[],"readme":"# Collectd module for Puppet\n\n[![Build Status](https://github.com/voxpupuli/puppet-collectd/workflows/CI/badge.svg)](https://github.com/voxpupuli/puppet-collectd/actions?query=workflow%3ACI)\n[![Release](https://github.com/voxpupuli/puppet-collectd/actions/workflows/release.yml/badge.svg)](https://github.com/voxpupuli/puppet-collectd/actions/workflows/release.yml)\n[![Puppet Forge](https://img.shields.io/puppetforge/v/puppet/collectd.svg)](https://forge.puppetlabs.com/puppet/collectd)\n[![Puppet Forge - downloads](https://img.shields.io/puppetforge/dt/puppet/collectd.svg)](https://forge.puppetlabs.com/puppet/collectd)\n[![Puppet Forge - endorsement](https://img.shields.io/puppetforge/e/puppet/collectd.svg)](https://forge.puppetlabs.com/puppet/collectd)\n[![Puppet Forge - scores](https://img.shields.io/puppetforge/f/puppet/collectd.svg)](https://forge.puppetlabs.com/puppet/collectd)\n[![puppetmodule.info docs](http://www.puppetmodule.info/images/badge.png)](http://www.puppetmodule.info/m/puppet-collectd)\n[![Apache-2.0 License](https://img.shields.io/github/license/voxpupuli/puppet-collectd.svg)](LICENSE)\n\n## Description\n\nPuppet module for configuring collectd and plugins.\n\n## Usage\n\nThe simplest use case is to use all of the configurations in\nthe default `collectd.conf` file shipped with collectd. This can\nbe done by simply including the class:\n\n```puppet\ninclude collectd\n```\n\nCollectd is most useful when configured with customized plugins.\nThis is accomplished by removing the default `collectd.conf` file\nand replacing it with a file that includes all alternative\nconfigurations. Configure a node with the following class\ndeclaration:\n\n```puppet\nclass { 'collectd':\n  purge           =\u003e true,\n  recurse         =\u003e true,\n  purge_config    =\u003e true,\n  minimum_version =\u003e '5.4',\n}\n```\n\nSet `purge`, `recurse`, and `purge_config` to `true` in order to override\nthe default configurations shipped in `collectd.conf` and use\ncustom configurations stored in `conf.d`. From here you can set up\nadditional plugins as shown below.\n\nSpecifying the `version` or `minimum_version` of collectd as shown above reduces\nthe need for two puppet runs to converge. See\n[Puppet needs two runs to correctly write my conf, why?](#puppet-needs-two-runs-to-correctly-write-my-conf-why)\nbelow.\n\nHiera example in YAML of passing `install_options` to the package resource for\nmanaging the collectd package. This parameter must be an array.\n\n```yaml\ncollectd::package_install_options:\n  - '--nogpgcheck'\n```\n\n## Simple Plugins\n\nExample of how to load plugins with no additional configuration:\n\n```puppet\ncollectd::plugin { 'battery': }\n```\n\nWhere `battery` is the name of the plugin.\n\n**Note:** this should only be done in the case of a class for the plugin\nnot existing in this module.\n\n## Repo management\n\nThe module will enable a repo by default.\n\nOn CentOS that will be EPEL:\n* http://rpms.famillecollet.com/rpmphp/zoom.php?rpm=collectd\n\nOn Ubuntu that'll be the CollectD PPA:\n* https://launchpad.net/~collectd/+archive/ubuntu/collectd-5.5\n\n### Public key keyserver\nIn case you need to change the server where to download the public key from for\nwhatever reason (AKA: server is down) you can use the parameter\n`$package_keyserver`\n\n### CI Packages\n\nRecently, Collectd CI packages are also avaliable from the CI repo\n\nMore information is avaliable here:\n* https://github.com/collectd/collectd-ci\n\nYou can choose the CI repo with the `$ci_package_repo` parameter.\n\n`$ci_package_repo` has to match '5.4', '5.5', '5.6', '5.7' or 'master' (RC for next release) as\nthese are the current branches being built in the Collectd CI.\n\n## Configurable Plugins\n\nParameters will vary widely between plugins. See the collectd\ndocumentation for each plugin for configurable attributes.\n\n* `aggregation`  (see [collectd::plugin::aggregation](#class-collectdpluginaggregation)\n  below)\n* `amqp`  (see [collectd::plugin::amqp](#class-collectdpluginamqp) below)\n* `apache`  (see [collectd::plugin::apache](#class-collectdpluginapache) below)\n* `battery`  (see [collectd::plugin::battery](#class-collectdpluginbattery) below)\n* `bind`  (see [collectd::plugin::bind](#class-collectdpluginbind) below)\n* `ceph`  (see [collectd::plugin::ceph](#class-ceph) below)\n* `cgroups` (see [collectd::plugin::cgroups](#class-collectdplugincgroups) below)\n* `chain`  (see [collectd::plugin::chain](#class-chain) below)\n* `conntrack`  (see [collectd::plugin::conntrack](#class-conntrack) below)\n* `cpu`  (see [collectd::plugin::cpu](#class-collectdplugincpu) below)\n* `cpufreq`  (see [collectd::plugin::cpufreq](#class-collectdplugincpufreq) below)\n* `csv`  (see [collectd::plugin::csv](#class-collectdplugincsv) below)\n* `cuda` (see [collectd::plugin::cuda](#class-collectdplugincuda) below)\n* `curl` (see [collectd::plugin::curl](#class-collectdplugincurl) below)\n* `curl_json` (see [collectd::plugin::curl_json](#class-collectdplugincurl_json)\n  below)\n* `dbi`  (see [collectd::plugin::dbi](#class-collectdplugindbi) below)\n* `df`  (see [collectd::plugin::df](#class-collectdplugindf) below)\n* `disk` (see [collectd::plugin::disk](#class-collectdplugindisk) below)\n* `dns` (see [collectd::plugin::dns](#class-collectdplugindns) below)\n* `dcpmm` (see [collectd::plugin::dcpmm](#class-collectdplugindcpmm) below)\n* `dpdk_telemetry` (see [collectd::plugin::dpdk_telemetry](#class-collectdplugindpdk_telemetry) below)\n* `entropy`  (see [collectd::plugin::entropy](#class-collectdpluginentropy) below)\n* `exec`  (see [collectd::plugin::exec](#class-collectdpluginexec) below)\n* `ethstat`  (see [collectd::plugin::ethstat](#class-collectdpluginethstat) below)\n* `fhcount` (see [collectd::plugin::fhcount](#class-collectdpluginfhcount) below)\n* `filecount` (see [collectd::plugin::filecount](#class-collectdpluginfilecount)\n  below)\n* `filter`  (see [collectd::plugin::filter](#class-collectdpluginfilter) below)\n* `genericjmx` (see [collectd::plugin::genericjmx](#class-collectdplugingenericjmx)\n  below)\n* `hddtemp` (see [collectd::plugin::hddtemp](#class-collectdpluginhddtemp) below)\n* `hugepages` (see [collectd::plugin::hugepages](#class-collectdpluginhugepages) below)\n* `intel_pmu` (see [collectd::plugin::intel_pmu](#class-collectdpluginintel_pmu) below)\n* `intel_rdt` (see [collectd::plugin::intel_rdt](#class-collectdpluginintel_rdt) below)\n* `interface` (see [collectd::plugin::interface](#class-collectdplugininterface)\n  below)\n* `ipc` (see [collectd::plugin::ipc](#class-collectdpluginipc) below)\n* `ipmi` (see [collectd::plugin::ipmi](#class-collectdpluginipmi) below)\n* `iptables` (see [collectd::plugin::iptables](#class-collectdpluginiptables) below)\n* `iscdhcp` (see [collectd::plugin::iscdhcp](#class-collectdpluginiscdhcp) below)\n* `irq` (see [collectd::plugin::irq](#class-collectdpluginirq) below)\n* `java` (see [collectd::plugin::java](#class-collectdpluginjava) below)\n* `load` (see [collectd::plugin::load](#class-collectdpluginload) below)\n* `logfile` (see [collectd::plugin::logfile](#class-collectdpluginlogfile) below)\n* `virt` (see [collectd::plugin::virt](#class-collectdpluginvirt) below)\n* `lvm` (see [collectd::plugin::lvm](#class-collectdpluginlvm) below)\n* `mcelog` (see [collectd::plugin::mcelog](#class-collectdpluginmcelog) below)\n* `memcached`(see [collectd::plugin::memcached](#class-collectdpluginmemcached)\n  below )\n* `memory`(see [collectd::plugin::memory](#class-collectdpluginmemory) below )\n* `modbus` (see [collectd::plugin::modbus](#class-collectdpluginmodbus) below)\n* `mongodb`(see [collectd::plugin::mongodb](#class-collectdpluginmongodb) below )\n* `mysql` (see [collectd::plugin::mysql](#class-collectdpluginmysql) below)\n* `netlink` (see [collectd::plugin::netlink](#class-collectdpluginnetlink) below)\n* `network` (see [collectd::plugin::network](#class-collectdpluginnetwork) below)\n* `nfs`  (see [collectd::plugin::nfs](#class-collectdpluginnfs) below)\n* `nginx` (see [collectd::plugin::nginx](#class-collectdpluginnginx) below)\n* `ntpd` (see [collectd::plugin::ntpd](#class-collectdpluginntpd) below)\n* `numa` (see [collectd::plugin::numa](#class-collectdpluginnuma) below)\n* `nut` (see [collectd::plugin::nut](#class-collectdpluginnut) below)\n* `openldap` (see [collectd::plugin::openldap](#class-collectdpluginopenldap) below)\n* `openvpn` (see [collectd::plugin::openvpn](#class-collectdpluginopenvpn) below)\n* `pcie_errors` (see [collectd::plugin::pcie_errors](#class-collectdpluginpcie_errors) below)\n* `perl` (see [collectd::plugin::perl](#class-collectdpluginperl) below)\n* `ping` (see [collectd::plugin::ping](#class-collectdpluginping) below)\n* `postgresql` (see [collectd::plugin::postgresql](#class-collectdpluginpostgresql)\n  below)\n* `processes` (see [collectd::plugin:processes](#class-collectdpluginprocesses) below)\n* `protocols` (see [collectd::plugin:protocols](#class-collectdpluginprotocols) below)\n* `python` (see [collectd::plugin::python](#class-collectdpluginpython) below)\n* `redis` (see [collectd::plugin::redis](#class-collectdpluginredis) below)\n* `rabbitmq` (see [collectd-rabbitmq](https://pypi.python.org/pypi/collectd-rabbitmq)\n  and [below](#class-collectdpluginrabbitmq) for implementation notes\n* `rrdcached` (see [collectd::plugin::rrdcached](#class-collectdpluginrrdcached)\n  below)\n* `rrdtool` (see [collectd::plugin::rrdtool](#class-collectdpluginrrdtool) below)\n* `sensors` (see [collectd::plugin::sensors](#class-collectdpluginsensors) below)\n* `smart` (see [collectd::plugin::smart](#class-collectdpluginsmart) below)\n* `snmp` (see [collectd::plugin::snmp](#class-collectdpluginsnmp) below)\n* `snmp_agent` (see [collectd::plugin::snmp_agent](#class-collectdpluginsnmpagent) below)\n* `statsd` (see [collectd::plugin::statsd](#class-collectdpluginstatsd) below)\n* `swap` (see [collectd::plugin::swap](#class-collectdpluginswap) below)\n* `syslog` (see [collectd::plugin::syslog](#class-collectdpluginsyslog) below)\n* `tail` (see [collectd::plugin::tail](#class-collectdplugintail) below)\n* `target_v5upgrade` (see [collectd::plugin::target_v5upgrade](#class-collectdplugintarget_v5upgrade)\n  below)\n* `tcpconns` (see [collectd::plugin::tcpconns](#class-collectdplugintcpconns) below)\n* `thermal` (see [collectd::plugin::thermal](#class-collectdpluginthermal) below)\n* `threshold` (see [collect::plugin::threshold](#class-collectdpluginthreshold) below)\n* `unixsock` (see [collectd::plugin::unixsock](#class-collectdpluginunixsock) below)\n* `uptime` (see [collectd::plugin::uptime](#class-collectdpluginuptime) below)\n* `users` (see [collectd::plugin::users](#class-collectdpluginusers) below)\n* `uuid` (see [collectd::plugin::uuid](#class-collectdpluginuuid) below)\n* `varnish` (see [collectd::plugin::varnish](#class-collectdpluginvarnish) below)\n* `vmem` (see [collectd::plugin::vmem](#class-collectdpluginvmem) below)\n* `write_graphite` (see [collectd::plugin::write_graphite](#class-collectdpluginwrite_graphite)\n below)\n* `write_http` (see [collectd::plugin::write_http](#class-collectdpluginwrite_http)\n  below)\n* `write_kafka` (see [collectd::plugin::write_kafka](#class-collectdpluginwrite_kafka)\n  below)\n* `write_log` (see [collectd::plugin::write_log](#class-collectdpluginwrite_log)\n  below)\n* `write_prometheus` (see [collectd::plugin::write_prometheus](#class-collectdpluginwrite_prometheus)\n  below)\n* `write_network` (see [collectd::plugin::write_network](#class-collectdpluginwrite_network)\n  below)\n* `write_riemann` (see [collectd::plugin::write_riemann](#class-collectdpluginwrite_riemann)\n  below)\n* `write_sensu` (see [collectd::plugin::write_sensu](#class-collectdpluginwrite_sensu)\n  below)\n* `write_tsdb` (see [collectd::plugin::write_tsdb](#class-collectdpluginwrite_tsdb)\n  below)\n* `zfs_arc` (see [collectd::plugin::zfs_arc](#class-collectdpluginzfs_arc) below)\n* `zookeeper` (see\n  [collectd::plugin::zookeeper](#class-collectdzookeeper) below)\n\n### Class: `collectd::plugin::aggregation`\n\n```puppet\ncollectd::plugin::aggregation::aggregator { 'cpu':\n    plugin           =\u003e 'cpu',\n    agg_type         =\u003e 'cpu',\n    groupby          =\u003e ['Host', 'TypeInstance',],\n    calculateaverage =\u003e true,\n}\n```\n\nYou can as well configure this plugin with a parameterized class :\n\n```puppet\nclass { 'collectd::plugin::aggregation':\n  aggregators =\u003e {\n    'cpu' =\u003e {\n      plugin           =\u003e 'cpu',\n      agg_type         =\u003e 'cpu',\n      groupby          =\u003e [\"Host\", \"TypeInstance\",],\n      calculateaverage =\u003e true,\n    },\n  },\n}\n```\n\n### Class: `collectd::plugin::amqp`\n\n```puppet\nclass { 'collectd::plugin::amqp':\n  amqphost =\u003e '127.0.0.1',\n  amqpvhost =\u003e 'myvirtualhost',\n  graphiteprefix =\u003e 'collectdmetrics',\n  amqppersistent =\u003e true,\n}\n```\n\n### Class: `collectd::plugin::apache`\n\n```puppet\nclass { 'collectd::plugin::apache':\n  instances =\u003e {\n    'apache80'     =\u003e {\n      'url'      =\u003e 'http://localhost/mod_status?auto',\n      'user'     =\u003e 'collectd',\n      'password' =\u003e 'hoh2Coo6'\n    },\n    'lighttpd8080' =\u003e {\n      'url' =\u003e 'http://localhost:8080/mod_status?auto'\n    }\n  },\n}\n```\n\n### Class: `collectd::plugin::battery`\n\n```puppet\nclass { 'collectd::plugin::battery':\n  interval =\u003e 30,\n  values_percentage =\u003e true,\n  report_degraded =\u003e true,\n  query_state_fs =\u003e true,\n}\n```\n\n### Class: `collectd::plugin::bind`\n\n```puppet\nclass { 'collectd::plugin::bind':\n  url    =\u003e 'http://localhost:8053/',\n}\n```\n\n### Class: `collectd::plugin::ceph`\n\n```puppet\nclass { 'collectd::plugin::ceph':\n  daemons        =\u003e [\n    '[clustername]-osd.0',\n    '[clustername]-osd.1',\n    '[clustername]-osd.2',\n    '[clustername]-mon.[hostname].asok'\n  ],\n  manage_package =\u003e true\n}\n```\n\n### Class: `collectd::plugin::cgroups`\n\n See [collectd plugin_cgroups documentation](https://collectd.org/documentation/manpages/collectd.conf.5.shtml#plugin_cgroups)\n for more details.\n\n```puppet\nclass { 'collectd::plugin::cgroups':\n  ignore_selected =\u003e true,\n  cgroups         =\u003e ['array', 'of', 'paths']\n}\n```\n\n### Class: `collectd::plugin::chain`\n\n```puppet\nclass { 'collectd::plugin::chain':\n    chainname     =\u003e \"PostCache\",\n    defaulttarget =\u003e \"write\",\n    rules         =\u003e [\n      {\n        'match'   =\u003e {\n          'type'    =\u003e 'regex',\n          'matches' =\u003e {\n            'Plugin'         =\u003e \"^cpu$\",\n            'PluginInstance' =\u003e \"^[0-9]+$\",\n          },\n        },\n        'targets' =\u003e [\n          {\n            'type'       =\u003e \"write\",\n            'attributes' =\u003e {\n              \"Plugin\" =\u003e \"aggregation\",\n            },\n          },\n          {\n            'type' =\u003e \"stop\",\n          },\n        ],\n      },\n    ],\n  }\n```\n\n### Class: `collectd::plugin::conntrack`\n\n```puppet\nclass { 'collectd::plugin::conntrack':\n}\n```\n\n### Class: `collectd::plugin::cpu`\n\n* `reportbystate` available from collectd version \u003e= 5.5\n* `reportbycpu` available from collectd version \u003e= 5.5\n* `valuespercentage` available from collectd version \u003e= 5.5\n* `reportnumcpu` available from collectd version \u003e= 5.6\n\n See [collectd plugin_cpu documentation](https://collectd.org/documentation/manpages/collectd.conf.5.shtml#plugin_cpu)\n for more details.\n\n```puppet\nclass { 'collectd::plugin::cpu':\n  reportbystate =\u003e true,\n  reportbycpu =\u003e true,\n  valuespercentage =\u003e true,\n}\n```\n\n### Class: `collectd::plugin::cpufreq`\n\n```puppet\nclass { 'collectd::plugin::cpufreq':\n}\n```\n\n### Class: `collectd::plugin::csv`\n\n```puppet\nclass { 'collectd::plugin::csv':\n  datadir    =\u003e '/etc/collectd/var/lib/collectd/csv',\n  storerates =\u003e false,\n}\n```\n\n\n### Class: `collectd::plugin::cuda`\n\n```puppet\nclass { 'collectd::plugin::cuda':\n}\n```\n\n\n### Class: `collectd::plugin::curl`\n\n```puppet\ncollectd::plugin::curl::page {\n  'stock_quotes':\n    url      =\u003e 'http://finance.google.com/finance?q=NYSE%3AAMD',\n    user     =\u003e 'foo',\n    password =\u003e 'bar',\n    matches  =\u003e [\n      {\n        'dstype'   =\u003e 'GaugeAverage',\n        'instance' =\u003e 'AMD',\n        'regex'    =\u003e ']*\u003e *([0-9]*\\\\.[0-9]+) *',\n        'type'     =\u003e 'stock_value',\n      }],\n}\n```\n\nYou can as well configure this plugin with a parameterized class :\n\n```puppet\nclass { 'collectd::plugin::curl':\n  pages =\u003e {\n    'stock_GM' =\u003e {\n      url      =\u003e 'http://finance.google.com/finance?q=NYSE%3AGM',\n      user     =\u003e 'foo',\n      password =\u003e 'bar',\n      matches  =\u003e [\n        {\n          'dstype'   =\u003e 'GaugeAverage',\n          'instance' =\u003e 'AMD',\n          'regex'    =\u003e ']*\u003e *([0-9]*\\\\.[0-9]+) *',\n          'type'     =\u003e 'stock_value',\n        },\n      ],\n    },\n  },\n}\n```\n\n### Class: `collectd::plugin::curl_json`\n\n```puppet\ncollectd::plugin::curl_json {\n  'rabbitmq_overview':\n    url        =\u003e 'http://localhost:55672/api/overview',\n    host       =\u003e 'rabbitmq.example.net',\n    instance   =\u003e 'rabbitmq_overview',\n    interval   =\u003e '300',\n    user       =\u003e 'user',\n    password   =\u003e 'password',\n    digest     =\u003e 'false',\n    verifypeer =\u003e 'false',\n    verifyhost =\u003e 'false',\n    cacert     =\u003e '/path/to/ca.crt',\n    header     =\u003e 'Accept: application/json',\n    post       =\u003e '{secret: \\\"mysecret\\\"}',\n    timeout    =\u003e '1000',\n    keys       =\u003e {\n      'message_stats/publish' =\u003e {\n        'type'     =\u003e 'gauge',\n        'instance' =\u003e 'overview',\n      },\n    }\n}\n```\n\n### Class: `collectd::plugin::dbi`\n\n```puppet\ncollectd::plugin::dbi::database{'monitoring_node1':\n  driver       =\u003e 'mysql',\n  driveroption =\u003e {\n    'host' =\u003e 'hostname',\n    'username' =\u003e 'user',\n    'password' =\u003e 'password',\n    'dbname'   =\u003e 'monitoring'\n  },\n  query    =\u003e ['log_delay'],\n}\ncollectd::plugin::dbi::query{'log_delay':\n  statement =\u003e 'SELECT * FROM log_delay_repli;',\n  results   =\u003e [{\n    type           =\u003e 'gauge',\n    instanceprefix =\u003e 'log_delay',\n    instancesfrom  =\u003e 'inet_server_port',\n    valuesfrom     =\u003e 'log_delay',\n  }],\n}\n```\n\nYou can as well configure this plugin as a parameterized class :\n\n```puppet\nclass { 'collectd::plugin::dbi':\n  package   =\u003e 'libdbd-mysql',\n  databases =\u003e {\n    'monitoring_node1' =\u003e {\n      driver       =\u003e 'mysql',\n      driveroption =\u003e {\n        'host' =\u003e 'hostname',\n        'username' =\u003e 'user',\n        'password' =\u003e 'password',\n        'dbname'   =\u003e 'monitoring'\n      },\n      query    =\u003e ['log_delay'],\n    }\n  },\n}\n```\n\n### Class: `collectd::plugin::df`\n\n```puppet\nclass { 'collectd::plugin::df':\n  devices        =\u003e ['proc','sysfs'],\n  mountpoints    =\u003e ['/u'],\n  fstypes        =\u003e ['nfs','tmpfs','autofs','gpfs','proc','devpts'],\n  ignoreselected =\u003e true,\n}\n```\n\n### Class: `collectd::plugin::disk`\n\n```puppet\nclass { 'collectd::plugin::disk':\n  disks          =\u003e ['/^dm/'],\n  ignoreselected =\u003e true,\n  udevnameattr   =\u003e 'DM_NAME',\n}\n```\n\n### Class: `collectd::plugin::dns`\n\n```puppet\nclass { 'collectd::plugin::dns':\n}\n```\n\n#### Parameters\n\nSee collectd [documentation](https://collectd.org/documentation/manpages/collectd.conf.5.shtml#plugin_dns).\n\n##### ensure\n\nOptional. String that must be 'present' or 'absent'.\n\n- *Default*: 'present'\n\n##### ignoresource\n\nOptional. String of IP address to ignore.\n\n- *Default*: undef\n\n##### interface\n\nString of interface to use. May be interface identifier such as 'eth0' or 'any'.\n\n- *Default*: 'any'\n\n##### interval\n\nNumeric for interval in seconds. Changing this can be a disaster. Consult the documentation.\n\n- *Default*: undef\n\n##### manage_package\n\nBoolean to determine if system package for collectd's dns plugin should be\nmanaged. If set to true, you must specify the package name for any unsupported\nOS.\n\n- *Default*: false\n\n##### package_name\n\nString for name of package. A value of 'USE_DEFAULTS' will set the value based\non the platform. This is necessary when setting manage_package on an\nunsupported platform.\n\n- *Default*: 'USE_DEFAULTS'\n\n##### selectnumericquerytypes\n\nBoolean for SelectNumericQueryTypes configuration option.\n\n- *Default*: true\n\n#### Class: `collectd::plugin::dpdk_telemetry`\n\n```puppet\nclass { 'collectd::plugin::dpdk_telemetry':\n  client_socket_path =\u003e '/var/run/.client',\n  dpdk_socket_path   =\u003e '/var/run/dpdk/rte/telemetry',\n}\n```\n\n#### Class: `collectd::plugin::dcpmm`\n\n```puppet\nclass { 'collectd::plugin::dcpmm':\n  interval             =\u003e 10.0,\n  collect_health       =\u003e false,\n  collect_perf_metrics =\u003e true,\n  enable_dispatch_all  =\u003e false,\n}\n```\n\n#### Class: `collectd::plugin::entropy`\n\n```puppet\nclass { 'collectd::plugin::entropy':\n}\n```\n\n#### Class: `collectd::plugin::exec`\n\n```puppet\ncollectd::plugin::exec::cmd {\n  'dummy':\n    user =\u003e nobody,\n    group =\u003e nogroup,\n    exec =\u003e [\"/bin/echo\", \"PUTVAL myhost/foo/gauge-flat N:1\"],\n}\n```\n\nYou can also configure this plugin with a parameterized class:\n\n```puppet\nclass { 'collectd::plugin::exec':\n  commands =\u003e {\n    'dummy1' =\u003e {\n      user  =\u003e nobody,\n      group =\u003e nogroup,\n      exec  =\u003e [\"/bin/echo\", \"PUTVAL myhost/foo/gauge-flat1 N:1\"],\n    },\n    'dummy2' =\u003e {\n      user  =\u003e nobody,\n      group =\u003e nogroup,\n      exec  =\u003e [\"/bin/echo\", \"PUTVAL myhost/foo/gauge-flat2 N:1\"],\n    },\n  }\n}\n```\n\n#### Class: `collectd::plugin::ethstat`\n\n```puppet\nclass { 'collectd::plugin::ethstat':\n  interfaces =\u003e [ 'eth0', 'eth1'],\n  maps       =\u003e [\n    '\"rx_csum_offload_errors\" \"if_rx_errors\" \"checksum_offload\"', '\"multicast\" \"if_multicast\"'\n  ],\n  mappedonly =\u003e false,\n}\n```\n\n#### Class: `collectd::plugin::fhcount`\n\n```puppet\nclass { 'collectd::plugin::fhcount':\n  valuesabsolute   =\u003e true,\n  valuespercentage =\u003e false,\n}\n```\n\n#### Class: `collectd::plugin::fscache`\n\n```puppet\nclass { 'collectd::plugin::fscache':\n}\n```\n\n#### Class: `collectd::plugin::filecount`\n\n```puppet\ncollectd::plugin::filecount::directory {'foodir':\n  path          =\u003e '/path/to/dir',\n  pattern       =\u003e '*.conf',\n  mtime         =\u003e '-5m',\n  recursive     =\u003e true,\n  includehidden =\u003e false\n}\n```\n\nYou can also configure this plugin with a parameterized class:\n\n```puppet\nclass { 'collectd::plugin::filecount':\n  directories =\u003e {\n    'foodir' =\u003e {\n      'path'          =\u003e '/path/to/dir',\n      'pattern'       =\u003e '*.conf',\n      'mtime'         =\u003e '-5m',\n      'recursive'     =\u003e true,\n      'includehidden' =\u003e false\n      },\n  },\n}\n```\n\nFor backwards compatibility:\n\n```puppet\nclass { 'collectd::plugin::filecount':\n  directories =\u003e {\n    'active'   =\u003e '/var/spool/postfix/active',\n    'incoming' =\u003e '/var/spool/postfix/incoming'\n  },\n}\n```\n\n#### Class: `collectd::plugin::filter`\n\nThe filter plugin implements the powerful filter configuration of collectd.\nFor further details have a look on the [collectd manpage](https://collectd.org/documentation/manpages/collectd.conf.5.shtml#filter_configuration).\n\n##### Parameters\n\n* `ensure` (`\"ensure\"`,`\"absent\"`): Ob absent it will remove all references of\n  the filter plugins. `Note`: The Chain config needs to be purged by the chain\n  define.\n* `precachechain` (String): The Name of the default Pre Chain.\n* `postcachechain` (String): The Name of the default Post Chain.\n\n##### Examples\n\n###### Overwrite default chains\n\n```puppet\nclass { 'collectd::plugin::filter':\n    ensure          =\u003e 'present',\n    precachechain   =\u003e 'PreChain',\n    postcachechain  =\u003e 'PostChain',\n}\n```\n\n###### Full Example\n\nThis Example will rename the hostname of the mysql plugin.\n\n```puppet\ninclude collectd::plugin::filter\n\n# define default chains with default target\ncollectd::plugin::filter::chain { 'PreChain':\n    target =\u003e 'return'\n}\ncollectd::plugin::filter::chain { 'PostChain':\n    target =\u003e 'write'\n}\n\n# create a third chain,\n$chainname = 'MyAweseomeChain'\ncollectd::plugin::filter::chain { $chainname:\n    ensure =\u003e present,\n    target =\u003e 'return'\n}\n\n# add a new rule to chain\n$rulename = 'MyAweseomeRule'\ncollectd::plugin::filter::rule { $rulename:\n    chain =\u003e $chainname,\n}\n\n# add a new match rule, match metrics of the mysql plugin\ncollectd::plugin::filter::match { \"Match mysql plugin\":\n    chain   =\u003e $chainname,\n    rule    =\u003e $rulename,\n    plugin  =\u003e 'regex',\n    options =\u003e {\n        'Plugin' =\u003e '^mysql',\n    }\n}\n\n#rewrite hostname\ncollectd::plugin::filter::target{ \"overwrite hostname\":\n    chain   =\u003e $chainname,\n    rule    =\u003e $rulename,\n    plugin  =\u003e 'set',\n    options =\u003e {\n        'Host' =\u003e 'hostname.domain',\n    },\n}\n\n# hook the configured chain in the prechain\ncollectd::plugin::filter::target{ \"1_prechain_jump_${chainname}\":\n    chain   =\u003e 'PreChain',\n    plugin  =\u003e 'jump',\n    options =\u003e {\n        'Chain' =\u003e $chainname,\n    },\n}\n```\n\n#### Define: `collectd::plugin::filter::chain`\n\nThis define will create a new chain, which is required by targets, matches and rules.\n\n##### Parameters\n\n* `ensure` (`\"ensure\"`,`\"absent\"`): When set to absent it will remove the chain\n  with all assigned rules, targets and matches.\n* `target` (`'notification','replace','set','return','stop','write','jump'`):\n  Optional. Set default target if no target has been applied. Strongly recommend\n  for default chains.\n* `target_options` (Hash): If target is specified, pass optional hash to define.\n\n##### Example\n\nsee [collectd::plugin::filter](#class-collectdpluginfilter) above\n\n#### Define: `collectd::plugin::filter::rule`\n\nThis define will add a new rule to a specific chain\n\n##### Parameters\n\n* `chain` (String): Assign to this chain.\n\n##### Example\n\nsee [collectd::plugin::filter](#class-collectdpluginfilter) above\n\n#### Define: `collectd::plugin::filter::target`\n\nThis define will add a target to a chain or rule.\n\n##### Parameters\n\n* `chain` (String): Assign to this chain.\n* `plugin` (`'notification','replace','set','return','stop','write','jump'`): The\n  plugin of the target.\n* `options` (Hash): Optional parameters of the target plugin.\n* `rule` (String): Optional. Assign to this rule. If not present, target will be\n  applied at the end of chain without rule matching.\n\n##### Example\n\nsee [collectd::plugin::filter](#class-collectdpluginfilter) above\n\n#### Define: `collectd::plugin::filter::match`\n\nThis define will add a match rule.\n\n##### Parameters\n\n* `chain` (String): Assign to this chain.\n* `rule` (String): Assign to this rule.\n* `plugin` (`'regex','timediff','value','empty_counter','hashed'`): The plugin of\n  the match.\n* `options` (Hash): Optional parameters of the match plugin.\n\n##### Example\n\nsee [collectd::plugin::filter](#class-collectdpluginfilter) above\n\n#### Class: `collectd::plugin::genericjmx`\n\n```puppet\ninclude collectd::plugin::genericjmx\n\ncollectd::plugin::genericjmx::mbean {\n  'garbage_collector':\n    object_name     =\u003e 'java.lang:type=GarbageCollector,*',\n    instance_prefix =\u003e 'gc-',\n    instance_from   =\u003e ['name'],\n    values          =\u003e [\n      {\n        mbean_type =\u003e 'invocations',\n        table      =\u003e false,\n        attribute  =\u003e 'CollectionCount',\n      },\n      {\n        mbean_type      =\u003e 'total_time_in_ms',\n        instance_prefix =\u003e 'collection_time',\n        table           =\u003e false,\n        attribute       =\u003e 'CollectionTime',\n      },\n    ];\n}\n\ncollectd::plugin::genericjmx::connection {\n  'java_app':\n    host            =\u003e $fqdn,\n    service_url     =\u003e 'service:jmx:rmi:///jndi/rmi://localhost:3637/jmxrmi',\n    collect         =\u003e [ 'memory-heap', 'memory-nonheap','garbage_collector' ],\n}\n\n```\n\n#### Class: `collectd::plugin::hddtemp`\n\n```puppet\nclass { 'collectd::plugin::hddtemp':\n  host =\u003e '127.0.0.1',\n  port =\u003e 7634,\n}\n```\n\n#### Class: `collectd::plugin::hugepages`\n\n```puppet\nclass { 'collectd::plugin::hugepages':\n  report_per_node_hp =\u003e true,\n  report_root_hp     =\u003e true,\n  values_pages       =\u003e true,\n  values_bytes       =\u003e false,\n  values_percentage  =\u003e false\n}\n```\n\n#### Class: `collectd::plugin::intel_pmu`\n```puppet\nclass { 'collectd::plugin::intel_pmu':\n  report_hardware_cache_events =\u003e true,\n  report_kernel_pmu_events =\u003e true,\n  report_software_events =\u003e true,\n}\n```\n\n#### Class: `collectd::plugin::mcelog`\n\n```puppet\nclass { 'collectd::plugin::mcelog':\n  mceloglogfile           =\u003e '/var/log/mcelog'\n  memory                  =\u003e true\n  mcelogclientsocket      =\u003e '/var/run/mcelog-client'\n  persistentnotification  =\u003e true\n}\n```\n#### Class: `collectd::plugin::intel_rdt`\n```puppet\nclass { 'collectd::plugin::intel_rdt':\n  cores =\u003e ['0-2' '3,4,6' '8-10,15']\n}\n```\n\n#### Class: `collectd::plugin::interface`\n\n```puppet\nclass { 'collectd::plugin::interface':\n  interfaces     =\u003e ['lo'],\n  ignoreselected =\u003e true\n}\n```\n\n#### Class: `collectd::plugin::irq`\n\n```puppet\nclass { 'collectd::plugin::irq':\n  irqs           =\u003e ['7', '23'],\n  ignoreselected =\u003e true,\n}\n```\n\n#### Class: `collectd::plugin::ipc`\n\n```puppet\nclass { 'collectd::plugin::ipc':\n}\n```\n\n#### Class: `collectd::plugin::ipmi`\n\n```puppet\nclass { 'collectd::plugin::ipmi':\n  ignore_selected           =\u003e true,\n  sensors                   =\u003e ['temperature'],\n  notify_sensor_add         =\u003e true,\n  notify_sensor_remove      =\u003e true,\n  notify_sensor_not_present =\u003e true,\n}\n```\n\n#### Class: `collectd::plugin::iptables`\n\n```puppet\nclass { 'collectd::plugin::iptables':\n  chains  =\u003e {\n    'nat'    =\u003e 'In_SSH',\n    'filter' =\u003e 'HTTP',\n  },\n  chains6 =\u003e {\n    'filter' =\u003e 'HTTP6',\n  },\n}\n```\n\n#### Class: `collectd::plugin::iscdhcp`\n\n```puppet\nclass { 'collectd::plugin::iscdhcp': }\n```\n\n#### Class: `collectd::plugin::java`\n\njvmarg options must be declared if declaring loadplugin, as the JVM must be\ninitialized prior to loading collectd java plugins.\n\n```puppet\nclass { 'collectd::plugin::java':\n  jvmarg      =\u003e ['arg1', 'arg2'],\n  loadplugin  =\u003e {\"plugin.name\" =\u003e [\"option line 1\", \"option line 2\"]}\n}\n```\n\n#### Class: `collectd::plugin::load`\n\n```puppet\nclass { 'collectd::plugin::load':\n}\n```\n\n#### Class: `collectd::plugin::logfile`\n\n```puppet\nclass { 'collectd::plugin::logfile':\n  log_level =\u003e 'warning',\n  log_file =\u003e '/var/log/collected.log'\n}\n```\n\n#### Class: `collectd::plugin::virt`\n\nThe interface_format parameter was introduced in collectd 5.0 and will\ntherefore be ignored (with a warning) when specified with older versions.\n\n```puppet\nclass { 'collectd::plugin::virt':\n  connection       =\u003e 'qemu:///system',\n  interface_format =\u003e 'address'\n}\n```\n\n#### Class: `collectd::plugin::lvm`\n\n```puppet\nclass { 'collectd::plugin::lvm': }\n```\n\n#### Class: `collectd::plugin::memcached`\n\nThe plugin supports multiple instances specified via host+port and socket:\n\n```puppet\nclass { 'collectd::plugin::memcached':\n  instances =\u003e {\n    'sessions1' =\u003e {\n      'host' =\u003e '192.168.122.1',\n      'port' =\u003e '11211',\n    },\n    'storage1' =\u003e {\n      'host' =\u003e '192.168.122.1',\n      'port' =\u003e '11212',\n    },\n    'sessions2' =\u003e {\n      'socket'  =\u003e '/var/run/memcached.sessions.sock',\n    },\n    'storage2' =\u003e {\n      'socket'  =\u003e '/var/run/memcached.storage.sock',\n    },\n  }\n}\n```\n\n#### Class: `collectd::plugin::memory`\n\n```puppet\nclass { 'collectd::plugin::memory':\n}\n```\n\n#### Class: `collectd::plugin::modbus`\n\n```puppet\nclass {'collectd::plugin::modbus':\n  ensure =\u003e 'present',\n  data   =\u003e  {\n    current_phase_a =\u003e {\n      'type'          =\u003e 'gauge',\n      'instance'      =\u003e 'current phase A',\n      'register_base' =\u003e 1234,\n      'register_type' =\u003e 'Float',\n    }\n  },\n  hosts  =\u003e {\n    meter123 =\u003e {\n      'address'   =\u003e '127.0.0.1',\n      'port'      =\u003e 502,\n      'interval'  =\u003e 10,\n      'slaves'    =\u003e {\n        255 =\u003e {\n          'instance' =\u003e 'power meter 255',\n          'collect'  =\u003e ['current_phase_a'],\n        }\n      },\n    }\n  },\n}\n```\n\n#### Class: `collectd::plugin::mysql`\n\n```puppet\ncollectd::plugin::mysql::database { 'betadase':\n  host        =\u003e 'localhost',\n  username    =\u003e 'stahmna',\n  password    =\u003e 'secret',\n  port        =\u003e '3306',\n  masterstats =\u003e true,\n  wsrepstats  =\u003e true,\n}\n```\n\n#### Class: `collectd::plugin::mongodb`\n\n```puppet\nclass { 'collectd::plugin::mongodb':\n  db_user =\u003e 'admin',\n  db_pass =\u003e 'adminpass',\n}\n```\n\n##### Parameters\n\n* `ensure` (String): String that must be 'present' or 'absent'. *Default*: 'present'\n* `interval` (String): Number of seconds that collectd pauses between data\n  collection. *Default*: undef\n* `db_host` (String): String that holds the IP of the MongoDB server. *Default*:\n  '127.0.0.1'\n* `db_user` (String): Required. String that specifies the user name of an account\n  that can log into MongoDB\n* `db_user` (String): Required. String that specifies the password of an account\n  that can log into MongoDB\n* `configured_dbs` (String): Optional. Array of Strings that lists the databases\n  that should be monitored in addition to the \"admin\"\n* `db_port` (String): Required if the configured_dbs parameter is set. Unused\n  otherwise.  Integer that specifies with port MongoDB listens on.\n\n```puppet\nclass { 'collectd::plugin::mongodb':\n  db_host        =\u003e '127.0.0.1',\n  db_user        =\u003e 'foo',\n  db_pass        =\u003e 'bar',\n  db_port        =\u003e '27017',\n  configured_dbs =\u003e ['database', 'names'],\n  collectd_dir   =\u003e '/collectd/module/path',\n}\n```\n\n#### Class: `collectd::plugin::netlink`\n\n```puppet\nclass { 'collectd::plugin::netlink':\n  interfaces        =\u003e ['eth0', 'eth1'],\n  verboseinterfaces =\u003e ['ppp0'],\n  qdiscs            =\u003e ['\"eth0\" \"pfifo_fast-1:0\"', '\"ppp0\"'],\n  classes           =\u003e ['\"ppp0\" \"htb-1:10\"'],\n  filters           =\u003e ['\"ppp0\" \"u32-1:0\"'],\n  ignoreselected    =\u003e false,\n}\n```\n\n#### Class: `collectd::plugin::network`\n\n```puppet\ncollectd::plugin::network::server{'hostname':\n  port =\u003e 25826,\n}\n\ncollectd::plugin::network::listener{'hostname':\n  port =\u003e 25826,\n}\n```\n\nYou can as well configure this plugin with a parameterized class :\n\n```puppet\nclass { 'collectd::plugin::network':\n  timetolive    =\u003e '70',\n  maxpacketsize =\u003e '42',\n  forward       =\u003e false,\n  reportstats   =\u003e true,\n  servers       =\u003e { 'hostname' =\u003e {\n    'port'          =\u003e '25826',\n    'interface'     =\u003e 'eth0',\n    'securitylevel' =\u003e '',\n    'username'      =\u003e 'foo',\n    'password'      =\u003e 'bar',},\n  },\n  listeners     =\u003e { 'hostname' =\u003e {\n    'port'          =\u003e '25826',\n    'interface'     =\u003e 'eth0',\n    'securitylevel' =\u003e '',\n    'authfile'      =\u003e '/etc/collectd/passwd',},\n  },\n}\n```\n\n#### Class: `collectd::plugin::nfs`\n\n```puppet\nclass { 'collectd::plugin::nfs':\n}\n```\n\n#### Class: `collectd::plugin::nginx`\n\n```puppet\nclass { 'collectd::plugin::nginx':\n  url      =\u003e 'https://localhost:8433',\n  user     =\u003e 'stats',\n  password =\u003e 'uleePi4A',\n}\n```\n\n#### Class: `collectd::plugin::ntpd`\n\n```puppet\nclass { 'collectd::plugin::ntpd':\n  host           =\u003e 'localhost',\n  port           =\u003e 123,\n  reverselookups =\u003e false,\n  includeunitid  =\u003e false,\n}\n```\n\n#### Class: `collectd::plugin::numa`\n\n```puppet\nclass { 'collectd::plugin::numa':\n}\n```\n\n#### Class: `collectd::plugin::nut`\n\n```puppet\nclass { 'collectd::plugin::nut':\n    upss =\u003e [ 'ups@localhost:port' ]\n}\n```\n\n#### Class: `collectd::plugin::openldap`\n\n```puppet\nclass { 'collectd::plugin::openldap':\n  instances =\u003e {\n    'foo' =\u003e {\n      'url' =\u003e 'ldap://localhost/'\n    },\n    'bar' =\u003e {\n      'url' =\u003e 'ldaps://localhost/'\n    }\n  },\n}\n```\n\n#### Class: `collectd::plugin::openvpn`\n\n* `statusfile` (String or Array) Status file(s) to collect data from.\n  (Default `/etc/openvpn/openvpn-status.log`)\n* `improvednamingschema` (Bool) When enabled, the filename of the status file\n  will be used as plugin instance and the client's \"common name\" will be used\n  as type instance. This is required when reading multiple status files.\n  (Default: `false`)\n* `collectcompression` Sets whether or not statistics about the compression used\n  by OpenVPN should be collected. This information is only available in single\n  mode. (Default `true`)\n* `collectindividualusers` Sets whether or not traffic information is collected\n  for each connected client individually. If set to false, currently no traffic\n  data is collected at all because aggregating this data in a save manner is\n  tricky. (Default `true`)\n* `collectusercount` When enabled, the number of currently connected clients\n  or users is collected.  This is especially interesting when\n  CollectIndividualUsers is disabled, but can be configured independently from\n  that option. (Default `false`)\n\nWatch multiple `statusfile`s:\n\n```puppet\nclass { 'collectd::plugin::openvpn':\n  statusfile             =\u003e [\n    '/etc/openvpn/openvpn-status-tcp.log',\n    '/etc/openvpn/openvpn-status-udp.log'\n  ],\n  collectindividualusers =\u003e false,\n  collectusercount       =\u003e true,\n}\n```\n\nWatch the single default `statusfile`:\n\n```puppet\nclass { 'collectd::plugin::openvpn':\n  collectindividualusers =\u003e false,\n  collectusercount       =\u003e true,\n}\n```\n\n#### Class: `collectd::plugin::pcie_errors`\n\n```puppet\nclass { 'collectd::plugin::pcie_errors':\n  source                   =\u003e undef,\n  access_dir               =\u003e undef,\n  report_masked            =\u003e false,\n  persistent_notifications =\u003e false,\n}\n```\n\n#### Class: `collectd::plugin::perl`\n\nThis class has no parameters and will load the actual perl plugin.\nIt will be automatically included if any `perl::plugin` is defined.\n\n##### Example\n\n```puppet\ninclude collectd::plugin::perl\n```\n\n#### Define: `collectd::plugin::perl::plugin`\n\nThis define will load a new perl plugin.\n\n##### Parameters\n\n* `module` (String): name of perl module to load (mandatory)\n* `enable_debugger` (False or String): whether to load the perl debugger. See\n  *collectd-perl* manpage for more details.\n* `include_dir` (String or Array): directories to add to *@INC*\n* `provider` (`\"package\"`,`\"cpan\"`,`\"file\"` or `false`): method to get the\n  plugin code\n* `source` (String): this parameter is consumed by the provider to infer the\n  source of the plugin code\n* `destination` (String or false): path to plugin code if `provider` is `file`.\n  Ignored otherwise.\n* `order` (String containing numbers): order in which the plugin should be\n  loaded. Defaults to `\"00\"`\n* `config` (Hash): plugin configuration in form of a hash. This will be\n  converted to a suitable structure understood by *liboconfig* which is the\n  *collectd* configuration parser. Defaults to `{}`\n\n##### Examples\n\n###### Using a preinstalled plugin\n\n```puppet\ncollectd::plugin::perl::plugin { 'foo':\n    module          =\u003e 'Collectd::Plugins::Foo',\n    enable_debugger =\u003e \"\",\n    include_dir     =\u003e '/usr/lib/collectd/perl5/lib',\n}\n```\n\n###### Using a plugin from a file from *source*\n\n```puppet\ncollectd::plugin::perl::plugin { 'baz':\n    module      =\u003e 'Collectd::Plugins::Baz',\n    provider    =\u003e 'file',\n    source      =\u003e 'puppet:///modules/myorg/baz_collectd.pm',\n    destination =\u003e '/path/to/my/perl5/modules'\n}\n```\n\n###### Using a plugin from cpan (requires the [puppet cpan module](https://forge.puppetlabs.com/meltwater/cpan))\n\n```puppet\ncollectd::plugin::perl::plugin {\n  'openafs_vos':\n    module        =\u003e 'Collectd::Plugins::OpenAFS::VOS',\n    provider      =\u003e 'cpan',\n    source        =\u003e 'Collectd::Plugins::OpenAFS',\n    config        =\u003e {'VosBin' =\u003e '/usr/afsws/etc/vos'},\n}\n```\n\n###### Using a plugin from package source\n\n```puppet\ncollectd::plugin::perl::plugin {\n  'bar':\n    module        =\u003e 'Collectd::Plugins::Bar',\n    provider      =\u003e 'package',\n    source        =\u003e 'perl-Collectd-Plugins-Bar',\n    config        =\u003e {'foo' =\u003e 'bar'},\n}\n```\n\n#### Class: `collectd::plugin::ping`\n\n```puppet\nclass { 'collectd::plugin::ping':\n    hosts =\u003e ['example.com'],\n}\n```\n\n#### Class: `collectd::plugin::postgresql`\n\n```puppet\ncollectd::plugin::postgresql::database{'monitoring_node1':\n  name     =\u003e 'monitoring',\n  port     =\u003e '5433',\n  instance =\u003e 'node1',\n  host     =\u003e 'localhost',\n  user     =\u003e 'collectd',\n  password =\u003e 'collectd',\n  query    =\u003e 'log_delay',\n}\ncollectd::plugin::postgresql::query{'log_delay':\n  statement =\u003e 'SELECT * FROM log_delay_repli;',\n  params    =\u003e ['database'],\n  results   =\u003e [{\n    type           =\u003e 'gauge',\n    instanceprefix =\u003e 'log_delay',\n    instancesfrom  =\u003e 'inet_server_port',\n    valuesfrom     =\u003e 'log_delay',\n  }],\n}\ncollectd::plugin::postgresql::writer{'sqlstore':\n  statement  =\u003e 'SELECT collectd_insert($1, $2, $3, $4, $5, $6, $7, $8, $9);',\n  storerates =\u003e 'true',\n}\n```\n\nYou can as well configure this plugin as a parameterized class :\n\n```puppet\nclass { 'collectd::plugin::postgresql':\n  databases =\u003e {\n    'postgres' =\u003e {\n      'host'     =\u003e '/var/run/postgresql/',\n      'user'     =\u003e 'postgres',\n      'password' =\u003e 'postgres',\n      'sslmode'  =\u003e 'disable',\n      'query'    =\u003e [ 'query_plans', 'queries', 'table_states', 'disk_io' ],\n    },\n    'devdb' =\u003e {\n      'host'     =\u003e 'host.example.com',\n      'port'     =\u003e '5432',\n      'user'     =\u003e 'postgres',\n      'password' =\u003e 'secret',\n      'sslmode'  =\u003e 'prefer',\n    }\n  }\n}\n```\n\n#### Class: `collectd::plugin::powerdns`\n\nYou can either specify powerdns servers / recursors at once:\n\n```puppet\nclass { 'collectd::plugin::powerdns':\n  recursors =\u003e {\n    'recursor1' =\u003e {\n      'socket'  =\u003e '/var/run/my-socket',\n      'collect' =\u003e ['cache-hits', 'cache-misses'],\n    },\n    'recursor2' =\u003e {}\n  },\n  servers =\u003e {\n    'server1' =\u003e {\n      'socket'  =\u003e '/var/run/my-socket',\n      'collect' =\u003e ['latency', 'recursing-answers', 'recursing-questions'],\n    }\n  },\n}\n```\n\nOr define single server / recursor:\n\n```puppet\ncollectd::plugin::powerdns::recursor { 'my-recursor' :\n  socket  =\u003e '/var/run/my-socket',\n  collect =\u003e ['cache-hits', 'cache-misses'],\n}\n```\n\n```puppet\ncollectd::plugin::powerdns::server { 'my-server' :\n  socket  =\u003e '/var/run/my-socket',\n  collect =\u003e ['latency', 'recursing-answers', 'recursing-questions'],\n}\n```\n\n#### Class: `collectd::plugin::processes`\n\nYou can either specify processes / process matches at once:\n\n```puppet\nclass { 'collectd::plugin::processes':\n  processes =\u003e ['process1', 'process2'],\n  process_matches =\u003e [\n    { name =\u003e 'process-all', regex =\u003e 'process.*' }\n  ],\n}\n```\n\nOr define single processes / process matches:\n\n```puppet\ncollectd::plugin::processes::process { 'collectd' : }\n```\n\n```puppet\ncollectd::plugin::processes::processmatch { 'elasticsearch' :\n  regex =\u003e '.*java.*org.elasticsearch.bootstrap.Elasticsearch'\n}\n```\n\n#### Class: `collectd::plugin::protocols`\n\n* `values` is an array of `Protocol` names, `Protocol:ValueName` pairs, or a regex\n* see `/proc/net/netstat` and `/proc/net/snmp` for a list of `Protocol` targets\n\n See [collectd.conf documentation](https://collectd.org/documentation/manpages/collectd.conf.5.shtml#plugin_protocols)\n for details\n\n```puppet\nclass { 'collectd::plugin::protocols':\n  values =\u003e ['/^Tcp:*/', '/^Udp:*/', 'Icmp:InErrors' ],\n  ignoreselected =\u003e false,\n}\n```\n\n#### Class: `collectd::plugin::python`\nThe plugin uses a fact `python_dir` to find the python load path for modules.\npython or python3 must be installed as a pre-requisite for the this\nfact to give a non-default value.\n\n* `modulepaths` is an array of paths where will be Collectd looking for Python\n  modules, Puppet will ensure that each of specified directories exists and it\n  is owned by `root` (and `chmod 0750`). If you don't specify any `modulepaths`\n  a default value for given distribution will be used.\n* `modules` a Hash containing configuration of Python modules, where the key\n  is the module name\n* `globals` Unlike most other plugins, this one should set `Globals true`. This\n  will cause collectd to export the name of all objects in the Python\n  interpreter for all plugins to see. If you don't do this or your platform does\n  not support it, the embedded interpreter will start anyway but you won't be\n  able to load certain Python modules, e.g. \"time\".\n* `interactive` when `true` it will launch an interactive Python interpreter\n  that reads from and writes to the terminal (default: `false`)\n* `logtraces` if a Python script throws an exception it will be logged by\n  collectd with the name of the exception and the message (default: `false`)\n* `conf_name` name of the file that will contain the python module configuration\n  (default: `python-config.conf`)\n\n See [collectd-python documentation](https://collectd.org/documentation/manpages/collectd-python.5.shtml)\n for more details.\n\nNOTE: Since `v3.4.0` the syntax of this plugin has changed. Make sure to update\nyour existing configuration. Now you can specify multiple Python modules at once:\n\n```puppet\nclass { 'collectd::plugin::python':\n  modulepaths =\u003e ['/usr/share/collectd/python'],\n  modules     =\u003e {\n    'elasticsearch' =\u003e {\n      'script_source' =\u003e 'puppet:///modules/myorg/elasticsearch_collectd_python.py',\n      'config'        =\u003e [{'Cluster' =\u003e 'elasticsearch'},],\n    },\n    'another-module' =\u003e {\n      'config'        =\u003e [{'Verbose' =\u003e 'true'},],\n    }\n  }\n  logtraces   =\u003e true,\n  interactive =\u003e false,\n}\n```\n\nWhen `script_source` provided, a file called `{module}.py` will be created in `$modulepath/$module.py`.\n\nOr define single module:\n\n```puppet\ncollectd::plugin::python::module {'zk-collectd':\n  script_source =\u003e 'puppet:///modules/myorg/zk-collectd.py',\n  config        =\u003e [\n    {'Hosts'   =\u003e \"localhost:2181\",\n     'Verbose' =\u003e true,\n     'Values'  =\u003e [\"abc\",\"def\"],\n     'Name'    =\u003e 'My Name',\n     'Limit'   =\u003e 4.5,\n    }\n  ]\n}\n```\n\nThe resulting configuration would be\n\n```apache\nImport \"zk-collectd\"\n\u003cModule \"zk-collectd\"\u003e\n  Hosts \"localhost:2181\"\n  Verbose true\n  Values \"abc\" \"def\"\n  Limit 4.5\n\u003c/Module\u003e\n```\n\nEach plugin might use different `modulepath`, however make sure that all paths\nare included in `collectd::plugin::python` variable `modulepaths`. If no\n`modulepath` is specified, OS default will be used.\n\n```puppet\ncollectd::plugin::python::module {'my-module':\n  modulepath    =\u003e '/var/share/collectd',\n  script_source =\u003e 'puppet:///modules/myorg/my-module.py',\n  config        =\u003e [\n    {'Key'   =\u003e \"value\",\n     'Value' =\u003e 3.4,\n    }\n  ]\n}\n```\n\n#### Class: `collectd::plugin::redis`\n\n```puppet\nclass { 'collectd::plugin::redis':\n  nodes =\u003e {\n    'node1' =\u003e {\n      'host'     =\u003e 'localhost',\n    },\n    'node2' =\u003e {\n      'host'     =\u003e 'node2.example.com',\n      'port'     =\u003e '6380',\n      'timeout'  =\u003e 3000,\n    },\n    'node3' =\u003e {\n      'host'    =\u003e 'node3.example.com',\n      'queries' =\u003e {\n          'dbsize' =\u003e {\n              'type'  =\u003e 'count',\n              'query' =\u003e 'DBSIZE',\n          },\n      },\n    },\n  }\n}\n```\n\n#### Class: `collectd::plugin::rabbitmq`\n\nPlease note the rabbitmq plugin provides a [types.db.custom](https://github.com/NYTimes/collectd-rabbitmq/blob/master/config/types.db.custom).\nYou will need to add this to [collectd::config::typesdb](https://github.com/voxpupuli/puppet-collectd/blob/master/manifests/config.pp#L18)\nvia hiera or in a manifest. Failure to set the types.db.custom content will\nresult in *no* metrics from the rabbitmq plugin.\n\nThe rabbitmq plugin has not been ported to python3 and will fail on CentOS 8 [#75](https://github.com/nytimes/collectd-rabbitmq/issues/75)\n\nset typesdb to include the collectd-rabbitmq types.db.custom\n\n```yaml\ncollectd::config::typesdb:\n  - /usr/share/collectd/types.db\n  - /usr/share/collect-rabbitmq/types.db.custom\n```\n\n```puppet\nclass { 'collectd::plugin::rabbitmq':\n  config           =\u003e {\n    'Username' =\u003e 'admin',\n    'Password' =\u003e $admin_pass,\n    'Scheme'   =\u003e 'https',\n    'Port'     =\u003e '15671',\n    'Host'     =\u003e $facts['fqdn'],\n    'Realm'    =\u003e 'RabbitMQ Management',\n  },\n}\n```\n\n#### Class: `collectd::plugin::rrdcached`\n\n```puppet\nclass { 'collectd::plugin::rrdcached':\n  daemonaddress =\u003e 'unix:/var/run/rrdcached.sock',\n  datadir       =\u003e '/var/lib/rrdcached/db/collectd',\n}\n```\n\n#### Class: `collectd::plugin::rrdtool`\n\n```puppet\nclass { 'collectd::plugin::rrdtool':\n  datadir           =\u003e '/var/lib/collectd/rrd',\n  createfilesasync  =\u003e false,\n  rrarows           =\u003e 1200,\n  rratimespan       =\u003e [3600, 86400, 604800, 2678400, 31622400],\n  xff               =\u003e 0.1,\n  cacheflush        =\u003e 900,\n  cachetimeout      =\u003e 120,\n  writespersecond   =\u003e 50\n}\n```\n\n#### Class: `collectd::plugin::sensors`\n\n```puppet\nclass {'collectd::plugin::sensors':\n  sensors        =\u003e ['sensors-coretemp-isa-0000/temperature-temp2', 'sensors-coretemp-isa-0000/temperature-temp3'],\n  ignoreselected =\u003e false,\n}\n```\n\n#### Class: `collectd::plugin::smart`\n\n```puppet\nclass { 'collectd::plugin::smart':\n  disks          =\u003e ['/^dm/'],\n  ignoreselected =\u003e true,\n}\n```\n\n#### Class: `collectd::plugin::snmp`\n\n```puppet\nclass {'collectd::plugin::snmp':\n  data  =\u003e  {\n    amavis_incoming_messages =\u003e {\n      'type'         =\u003e 'counter',\n      'table'        =\u003e false,\n      'instance'     =\u003e 'amavis.inMsgs',\n      'values'       =\u003e ['AMAVIS-MIB::inMsgs.0'],\n      'ignore'       =\u003e [ '00:00', '*IgnoreString' ],\n      'invert_match' =\u003e false,\n    }\n  },\n  hosts =\u003e {\n    debianvm =\u003e {\n      'address'   =\u003e '127.0.0.1',\n      'version'   =\u003e 2,\n      'community' =\u003e 'public',\n      'collect'   =\u003e ['amavis_incoming_messages'],\n      'interval'  =\u003e 10\n    }\n  },\n}\n```\n\n```puppet\nclass { 'collectd::plugin::snmp':\n  data  =\u003e {\n    hc_octets =\u003e {\n      'type'     =\u003e 'if_octets',\n      'table'    =\u003e true,\n      'instance' =\u003e 'IF-MIB::ifName',\n      'values'   =\u003e ['IF-MIB::ifHCInOctets', 'IF-MIB::ifHCOutOctets'],\n    },\n  },\n  hosts =\u003e {\n    router =\u003e {\n      'address'            =\u003e '192.0.2.1',\n      'version'            =\u003e 3,\n      'security_level'     =\u003e 'authPriv',\n      'username'           =\u003e 'collectd',\n      'auth_protocol'      =\u003e 'SHA',\n      'auth_passphrase'    =\u003e 'mekmitasdigoat',\n      'privacy_protocol'   =\u003e 'AES',\n      'privacy_passphrase' =\u003e 'mekmitasdigoat',\n      'collect'            =\u003e ['hc_octets'],\n      'interval'           =\u003e 10,\n    },\n  },\n}\n```\n#### Class: `collectd::plugin::snmp_agent`\n\n```puppet\nclass {'collectd::plugin::snmp_agent':\n  table =\u003e {\n    ifTable =\u003e {\n      'indexoid' =\u003e 'IF-MIB::ifIndex',\n      'sizeoid' =\u003e 'IF-MIB::ifNumber',\n      data =\u003e [{\n        ifDescr =\u003e {\n          'plugin' =\u003e 'interface',\n          'oids' =\u003e 'IF-MIB::ifDescr'\n        },\n        'ifDescr2' =\u003e {\n          'plugin' =\u003e 'interface2',\n          'oids' =\u003e 'IF-MIB::ifDescr2'\n        }\n      }]\n    }\n  },\n  data =\u003e {\n    memAvailReal =\u003e {\n      'plugin' =\u003e 'memory',\n      'type' =\u003e 'memory',\n      'oids' =\u003e '1.3.6.1.4.1.2021.4.6.0',\n      'typeinstance' =\u003e 'free',\n      'indexkey' =\u003e {\n      'source' =\u003e 'PluginInstance'\n      }\n    }\n  }\n}\n```\n#### Class: `collectd::plugin::statsd`\n\n```puppet\nclass { 'collectd::plugin::statsd':\n  host            =\u003e '0.0.0.0',\n  port            =\u003e 8125,\n  deletecounters  =\u003e false,\n  deletetimers    =\u003e false,\n  deletegauges    =\u003e false,\n  deletesets      =\u003e false,\n  timerpercentile =\u003e ['50','90'],\n}\n```\n\n#### Class: `collectd::plugin::swap`\n\n```puppet\nclass { 'collectd::plugin::swap':\n  reportbydevice =\u003e false,\n  reportbytes    =\u003e true\n}\n```\n\n#### Class: `collectd::plugin::syslog`\n\n```puppet\nclass { 'collectd::plugin::syslog':\n  log_level =\u003e 'warning'\n}\n```\n\n#### Class: `collectd::plugin::target_v5upgrade`\n\n```puppet\nclass { 'collectd::plugin::target_v5upgrade':\n}\n```\n\n#### Class: `collectd::plugin::tcpconns`\n\n```puppet\nclass { 'collectd::plugin::tcpconns':\n  localports  =\u003e ['25', '12026'],\n  remoteports =\u003e ['25'],\n  listening   =\u003e false,\n}\n```\n\n#### Class: `collectd::plugin::tail`\n\n```puppet\ncollectd::plugin::tail::file { 'exim-log':\n  filename =\u003e '/var/log/exim4/mainlog',\n  instance =\u003e 'exim',\n  matches  =\u003e [\n    {\n      regex    =\u003e 'S=([1-9][0-9]*)',\n      dstype   =\u003e 'CounterAdd',\n      type     =\u003e 'ipt_bytes',\n      instance =\u003e 'total',\n    },\n    {\n      regex    =\u003e '\\\\\u003cR=local_user\\\\\u003e',\n      dstype   =\u003e 'CounterInc',\n      type     =\u003e 'counter',\n      instance =\u003e 'local_user',\n    }\n  ]\n}\n```\n\n#### Class: `collectd::plugin::tail_csv`\n\n```puppet\nclass { 'collectd::plugin::tail_csv':\n  metrics =\u003e {\n    'snort-dropped' =\u003e {\n      'type'        =\u003e 'gauge',\n      'values_from' =\u003e 1,\n      'instance'    =\u003e \"dropped\"\n    },\n  },\n  files  =\u003e {\n    '/var/log/snort/snort.stats' =\u003e {\n      'collect'   =\u003e ['snort-dropped'],\n      'plugin'    =\u003e 'snortstats',\n      'instance'  =\u003e 'eth0',\n      'interval'  =\u003e 600,\n      'time_from' =\u003e 5,\n    }\n  }\n}\n```\n\n#### Class: `collectd::plugin::thermal`\n\n```puppet\nclass { 'collectd::plugin::thermal':\n  devices        =\u003e ['foo0'],\n  ignoreselected =\u003e false,\n}\n```\n\n#### Class: `collectd::plugin::threshold`\n\n```puppet\nclass { 'collectd::plugin::threshold':\n  hosts   =\u003e [\n    {\n      name    =\u003e 'example.com',\n      plugins =\u003e [\n        {\n          name  =\u003e 'load',\n          types =\u003e [\n            {\n              name        =\u003e 'load',\n              data_source =\u003e 'shortterm',\n              warning_max =\u003e $facts.dig('processors', 'count') * 1.2,\n              failure_max =\u003e $facts.dig('processors', 'count') * 1.9,\n            },\n            {\n              name        =\u003e 'load',\n              data_source =\u003e 'midterm',\n              warning_max =\u003e $facts.dig('processors', 'count') * 1.1,\n              failure_max =\u003e $facts.dig('processors', 'count') * 1.7,\n            },\n            {\n              name        =\u003e 'load',\n              data_source =\u003e 'longterm',\n              warning_max =\u003e $facts.dig('processors', 'count'),\n              failure_max =\u003e $facts.dig('processors', 'count') * 1.5,\n            },\n          ],\n        },\n      ],\n    },\n  ],\n  plugins =\u003e [\n    # See plugin definition above\n  ],\n  types   =\u003e [\n    # See types definition above\n  ],\n}\n```\n\n#### Class: `collectd::plugin::unixsock`\n\n```puppet\nclass {'collectd::plugin::unixsock':\n  socketfile   =\u003e '/var/run/collectd-sock',\n  socketgroup  =\u003e 'nagios',\n  socketperms  =\u003e '0770',\n  deletesocket =\u003e false,\n}\n```\n\n#### Class: `collectd::plugin::uptime`\n\n```puppet\nclass {'collectd::plugin::uptime':\n}\n```\n\n#### Class: `collectd::plugin::users`\n\n```puppet\nclass {'collectd::plugin::users':\n}\n```\n\n#### Class: `collectd::plugin::uuid`\n\n```puppet\nclass {'collectd::plugin::uuid':\n  uuid_file =\u003e '/etc/uuid',\n}\n```\n\n#### Class: `collectd::plugin::varnish`\n\n```puppet\nclass { 'collectd::plugin::varnish':\n  instances =\u003e {\n    'instanceName' =\u003e {\n      'CollectCache' =\u003e 'true',\n      'CollectBackend' =\u003e 'true',\n      'CollectConnections' =\u003e 'true',\n      'CollectSHM' =\u003e 'true',\n      'CollectESI' =\u003e 'false',\n      'CollectFetch' =\u003e 'true',\n      'CollectHCB' =\u003e 'false',\n      'CollectTotals' =\u003e 'true',\n      'CollectWorkers' =\u003e 'true',\n    }\n  },\n}\n```\n\n#### Class: `collectd::plugin::vmem`\n\n```puppet\nclass { 'collectd::plugin::vmem':\n  verbose =\u003e true,\n}\n```\n\n#### Class: `collectd::plugin::write_graphite`\n\nThe `write_graphite` plugin writes data to Graphite, an open-source metrics\nstorage and graphing project.\n\n```puppet\ncollectd::plugin::write_graphite::carbon {'my_graphite':\n  graphitehost   =\u003e 'graphite.example.org',\n  graphiteport   =\u003e 2003,\n  graphiteprefix =\u003e '',\n  protocol       =\u003e 'tcp'\n}\n```\n\nYou can define multiple Graphite backends where will be metrics send. Each\nbackend should have unique title:\n\n```puppet\ncollectd::plugin::write_graphite::carbon {'secondary_graphite':\n  graphitehost        =\u003e 'graphite.example.org',\n  graphiteport        =\u003e 2004,\n  graphiteprefix      =\u003e '',\n  protocol            =\u003e 'udp',\n  escapecharacter     =\u003e '_',\n  alwaysappendds      =\u003e true,\n  storerates          =\u003e true,\n  separateinstances   =\u003e false,\n  logsenderrors       =\u003e true\n  preserveseparator   =\u003e false,\n  dropduplicatefields =\u003e false,\n}\n```\n\nThe `preserveseparator` and `dropduplicatefields` fields are supported as of\ncollectd version \u003e= 5.7.\n\n#### Class: `collectd::plugin::write_http`\n\nThe write_http plugin supports two ways of configuration, the old plugin format using urls:\n\n```puppet\nclass { 'collectd::plugin::write_http':\n  urls =\u003e {\n    'collect1.example.org' =\u003e { 'format' =\u003e 'JSON' },\n    'collect2.example.org' =\u003e {},\n  }\n}\n```\n\nAnd the new plugin format using nodes:\n\n```puppet\nclass { 'collectd::plugin::write_http':\n  nodes =\u003e {\n    'collect1' =\u003e { 'url' =\u003e 'collect1.example.org', 'format' =\u003e 'JSON' },\n    'collect2' =\u003e { 'url' =\u003e 'collect2.example.org'},\n  }\n}\n```\n\n#### Class: `collectd::plugin::write_kafka`\n\n* Requires the [Apache Kafka C/C++ library](https://github.com/edenhill/librdkafka)\n* Available in collectd version \u003e= 5.5.\n\n```puppet\nclass { 'collectd::plugin::write_kafka':\n  kafka_host =\u003e 'localhost',\n  kafka_port =\u003e 9092,\n  topics     =\u003e {\n    'mytopic'      =\u003e { 'format' =\u003e 'JSON' },\n  },\n  properties =\u003e {\n    'myproperty'   =\u003e { 'myvalue' },\n  },\n  meta       =\u003e {\n    'mymeta'       =\u003e { 'myvalue' },\n  }\n}\n```\n\n#### Class: `collectd::plugin::write_log`\n\n```puppet\nclass { 'collectd::plugin::write_log':\n  format =\u003e 'JSON',\n}\n```\n\n#### Class: `collectd::plugin::write_prometheus`\n\n* The \"host\" option requires collectd 5.9 or later and will be ignored otherwise.\n\n```puppet\nclass { 'collectd::plugin::write_prometheus':\n  host =\u003e 'localhost',\n  port =\u003e '9103',\n}\n```\n\n**Note:** Requires collectd 5.7 or later.\n\n#### Class: `collectd::plugin::write_network`\n\n##### Deprecated\n\n```puppet\nclass { 'collectd::plugin::write_network':\n  servers =\u003e {\n    'collect1.example.org' =\u003e { 'serverport' =\u003e '25826' },\n    'collect2.example.org' =\u003e { 'serverport' =\u003e '25826' }\n  }\n}\n```\n\n#### Class: `collectd::plugin::write_riemann`\n\n```puppet\nclass { 'collectd::plugin::write_riemann':\n  nodes =\u003e [\n    {\n      'name' =\u003e 'riemann.example.org',\n      'host' =\u003e 'riemann.example.org',\n      'port' =\u003e 5555,\n      'protocol' =\u003e 'TCP'\n    }\n  ],\n  tags         =\u003e ['foo'],\n  attributes   =\u003e {'bar' =\u003e 'baz'},\n}\n```\n\n#### Class: `collectd::plugin::write_sensu`\n\n```puppet\nclass { 'collectd::plugin::write_sensu':\n  sensu_host =\u003e 'sensu.example.org',\n  sensu_port =\u003e 3030,\n}\n```\n\n#### Class: `collectd::plugin::write_tsdb`\n\n```puppet\nclass { 'collectd::plugin::write_tsdb':\n  host             =\u003e 'tsdb.example.org',\n  port             =\u003e 4242,\n  host_tags        =\u003e ['environment=production', 'colocation=AWS'],\n  store_rates      =\u003e false,\n  always_append_ds =\u003e false,\n}\n```\n\n#### Class: `collectd::plugin::zfs_arc`\n\n```puppet\nclass { 'collectd::plugin::zfs_arc':\n}\n```\n\n#### Class: `collectd::plugin::zookeeper`\n\n```puppet\nclass { 'collectd::plugin::zookeeper':\n  zookeeper_host  =\u003e 'localhost',\n  zookeeper_port  =\u003e '2181',\n}\n```\n\n##### types.db\n\nCollectd needs to know how to handle each collected datapoint.\nFor this it uses a database file called [`types.db`](https://collectd.org/documentation/manpages/types.db.5.shtml)\n\nThose files can be created using the `collectd::typesdb` and `collectd::type`\ndefine resources.\n\n```puppet\n$db = '/etc/collectd/types.db'\ncollectd::typesdb { $db: }\n\ncollectd::type { \"response_size-${db}\":\n  target  =\u003e $db,\n  ds_type =\u003e 'ABSOLUTE',\n  min     =\u003e 0,\n  max     =\u003e 10000000,\n  ds_name =\u003e 'value',\n}\n\nclass { 'collectd':\n  typesdb      =\u003e [\n    '/usr/share/collectd/types.db',\n    $typesdb,\n  ],\n}\n```\n\nOther software may need to read the Collectd types database files. To allow\nnon-root users to read from a `collectd::typesdb` file like so:\n\n```puppet\n$db = '/etc/collectd/types.db'\ncollectd::typesdb { $db:\n  mode =\u003e '0644',\n}\n```\n\n## Puppet Tasks\nAssuming that the collectdctl command is available on remote nodes puppet tasks exist to\nrun collectdctl and collect results from nodes. The tasks rely on `python3` being available\nalso.\n\n### Puppet Task collectd::listval\n```bash\n$ bolt task show collectd::listval\ncollectd::listval - Lists all available collectd metrics\n\nUSAGE:\nbolt task run --nodes \u003cnode-name\u003e collectd::listval\ncollectd::listval - Lists all available collectd metrics\n\nUSAGE:\nbolt task run --nodes \u003cnode-name\u003e collectd::listval\n```\n\n### Puppet Task collectd::getval\n```bash\n$ bolt task show collectd::getval\n\ncollectd::getval - Get a particular metric for a host\n\nUSAGE:\nbolt task run --nodes \u003cnode-name\u003e collectd::getval metric=\u003cvalue\u003e\n\nPARAMETERS:\n- metric: String[1]\n    Name of metric, e.g. load/load-relative\n\n```\n\n#### Example Task collectd::getval\n\n```bash\n$ bolt -u root task run collectd::getval metric=load/load-relative -n aiadm32.example.org\n```\n\nreturns the values of the load metric.\n\n```json\n  {\n    \"metric\": \"load/load-relative\",\n    \"values\": {\n      \"shortterm\": \"1.750000e-01\",\n      \"longterm\": \"8.000000e-02\",\n      \"midterm\": \"8.500000e-02\"\n    }\n  }\n```\n\n## Limitations\n\nSee metadata.json for supported platforms\n\n## Known issues\n\n### Puppet needs two runs to correctly write my conf, why?\n\nSome plugins will need two runs of Puppet to fully generate the configuration\nfor collectd. See [this issue](https://github.com/pdxcat/puppet-module-collectd/issues/162).\nThis can be avoided by specifying a minimum version (`$minimum_version`) for\nthe collectd class. e.g. Setting this to 1.2.3 will make this module assume on\nthe first run (when the fact responsible to provide the collectd version is not\nyet available) that your systems are running collectd 1.2.3 and generate the\nconfiguration accordingly.\n\n## Development\n\n### Running tests\n\nThis project contains tests for [rspec-puppet](http://rspec-puppet.com/).\n\nQuickstart:\n\n```bash\ngem install bundler\nbundle install\nbundle exec rake lint\nbundle exec rake validate\nbundle exec rake rubocop\nbundle exec rake spec SPEC_OPTS='--format documentation'\n```\n\n### Version scoping\n\nSome plugins or some options in plugins are only available for recent versions\nof collectd.\n\nThis module shall not use unsupported configuration directives. Look at\n[templates/loadplugin.conf.erb](https://github.com/voxpupuli/puppet-collectd/blob/master/templates/loadplugin.conf.erb)\nfor a hands-on example.\n\nPlease make use of the search by branch/tags on the collectd github to see when\na function has been first released.\n\nReading the [collectd.conf.pod](https://github.com/collectd/collectd/blob/master/src/collectd.conf.pod)\nfile is good, validating the presence of the code in the .c files is even better.\n\n### Authors\n\nPuppet-collectd is maintained by VoxPupuli. Before moving to VoxPupuli it was\nwritten and maintained by [TheCAT](https://www.cat.pdx.edu/) in the\n[pdxcat](https://github.com/pdxcat/) github org.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-collectd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoxpupuli%2Fpuppet-collectd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoxpupuli%2Fpuppet-collectd/lists"}