From cbbef24bbd39b2ef088c14c88ee187c192d78fdf Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Tue, 8 Dec 2020 21:11:27 -0600 Subject: [PATCH 1/6] collectd: Install and configure collectd The *collectd* role, with its corresponding `collectd.yml` playbook, installs *collectd* onto the managed node and manages basic configuration for it. By default, it will enable several plugins, including the `network` plugin. The `collectd_disable_plugins` variable can be set to a list names of plugins that should NOT be enabled. The default configuration for the `network` plugin instructs *collectd* to send metrics to the default IPv6 multicast group. Any host that has joined this group and is listening on the specified UDP port (default 25826) can receive the data. This allows for nearly zero configuration, as the configuration does not need to be updated if the name or IP address of the receiver changes. This configuration is ready to be deployed without any variable changes to all Pyrocufflink servers. Once *collectd* is running on the servers, we can set up a *collectd* instance to receive the data and store them in a time series database (i.e. Prometheus). --- collectd.yml | 21 + roles/collectd/defaults/main.yml | 7 + roles/collectd/handlers/main.yml | 4 + roles/collectd/tasks/main.yml | 35 + .../templates/collectd-network.conf.j2 | 20 + roles/collectd/templates/collectd.conf.j2 | 2111 +++++++++++++++++ roles/collectd/vars/defaults.yml | 4 + 7 files changed, 2202 insertions(+) create mode 100644 collectd.yml create mode 100644 roles/collectd/defaults/main.yml create mode 100644 roles/collectd/handlers/main.yml create mode 100644 roles/collectd/tasks/main.yml create mode 100644 roles/collectd/templates/collectd-network.conf.j2 create mode 100644 roles/collectd/templates/collectd.conf.j2 create mode 100644 roles/collectd/vars/defaults.yml diff --git a/collectd.yml b/collectd.yml new file mode 100644 index 0000000..9645099 --- /dev/null +++ b/collectd.yml @@ -0,0 +1,21 @@ +- hosts: collectd + roles: + - role: collectd + tags: + - collectd + +- hosts: prometheus + roles: + - role: collectd-prometheus + tags: + - collectd + - collectd-prometheus + +- hosts: collectd + tasks: + - name: ensure collectd is running + service: + name: collectd + state: started + tags: + - service diff --git a/roles/collectd/defaults/main.yml b/roles/collectd/defaults/main.yml new file mode 100644 index 0000000..885f993 --- /dev/null +++ b/roles/collectd/defaults/main.yml @@ -0,0 +1,7 @@ +collectd_default_config: true +collectd_load_network_plugin: true +collectd_network_servers: +- ff18::efc0:4a42 +collectd_network_listen: [] + +collectd_disable_plugins: [] diff --git a/roles/collectd/handlers/main.yml b/roles/collectd/handlers/main.yml new file mode 100644 index 0000000..8c93f7a --- /dev/null +++ b/roles/collectd/handlers/main.yml @@ -0,0 +1,4 @@ +- name: restart collectd + service: + name: collectd + state: restarted diff --git a/roles/collectd/tasks/main.yml b/roles/collectd/tasks/main.yml new file mode 100644 index 0000000..c38e169 --- /dev/null +++ b/roles/collectd/tasks/main.yml @@ -0,0 +1,35 @@ +- name: load distribution-specific values + include_vars: '{{ item }}' + with_first_found: + - '{{ ansible_distribution }}.yml' + - defaults.yml + tags: + - always + +- name: ensure collectd is installed + package: + name: '{{ collectd_packages }}' + state: present + tags: + - install + +- name: ensure collectd is configured + template: + src: collectd.conf.j2 + dest: /etc/collectd.conf + mode: '0644' + notify: + - restart collectd + tags: + - collectd-config + +- name: ensure collectd network plugin is configured + template: + src: collectd-network.conf.j2 + dest: /etc/collectd.d/network.conf + mode: '0644' + notify: + - restart collectd + tags: + - collectd-config + - collectd-network diff --git a/roles/collectd/templates/collectd-network.conf.j2 b/roles/collectd/templates/collectd-network.conf.j2 new file mode 100644 index 0000000..177d9f2 --- /dev/null +++ b/roles/collectd/templates/collectd-network.conf.j2 @@ -0,0 +1,20 @@ +{% if collectd_load_network_plugin %} +LoadPlugin network + +{% endif %} + +{% for server in collectd_network_servers %} +{% if server is string %} + Server "{{ server }}" +{% else %} + Server "{{ server.host }}" {{ server.port }} +{% endif %} +{% endfor %} +{% for listen in collectd_network_listen %} +{% if listen is string %} + Listen "{{ listen }}" +{% else %} + Listen "{{ listen.host }}" {{ listen.port}} +{% endif %} +{% endfor %} + diff --git a/roles/collectd/templates/collectd.conf.j2 b/roles/collectd/templates/collectd.conf.j2 new file mode 100644 index 0000000..d485c38 --- /dev/null +++ b/roles/collectd/templates/collectd.conf.j2 @@ -0,0 +1,2111 @@ +{% if collectd_default_config|bool %} +# +# Config file for collectd(1). +# Please read collectd.conf(5) for a list of options. +# http://collectd.org/ +# + +############################################################################## +# Global # +#----------------------------------------------------------------------------# +# Global settings for the daemon. # +############################################################################## + +#Hostname "localhost" +#FQDNLookup true +#BaseDir "/var/lib/collectd" +#PIDFile "/var/run/collectd.pid" +#PluginDir "/usr/lib64/collectd" +#TypesDB "/usr/share/collectd/types.db" + +#----------------------------------------------------------------------------# +# When enabled, plugins are loaded automatically with the default options # +# when an appropriate block is encountered. # +# Disabled by default. # +#----------------------------------------------------------------------------# +#AutoLoadPlugin false + +#----------------------------------------------------------------------------# +# When enabled, internal statistics are collected, using "collectd" as the # +# plugin name. # +# Disabled by default. # +#----------------------------------------------------------------------------# +#CollectInternalStats false + +#----------------------------------------------------------------------------# +# Interval at which to query values. This may be overwritten on a per-plugin # +# base by using the 'Interval' option of the LoadPlugin block: # +# # +# Interval 60 # +# # +#----------------------------------------------------------------------------# +#Interval 10 + +#MaxReadInterval 86400 +#Timeout 2 +#ReadThreads 5 +#WriteThreads 5 + +# Limit the size of the write queue. Default is no limit. Setting up a limit is +# recommended for servers handling a high volume of traffic. +#WriteQueueLimitHigh 1000000 +#WriteQueueLimitLow 800000 + +############################################################################## +# Logging # +#----------------------------------------------------------------------------# +# Plugins which provide logging functions should be loaded first, so log # +# messages generated when loading or configuring other plugins can be # +# accessed. # +############################################################################## + +LoadPlugin syslog +#LoadPlugin logfile +#LoadPlugin log_logstash + +# +# LogLevel info +# File STDOUT +# Timestamp true +# PrintSeverity false +# + +# +# LogLevel info +# File "/var/log/collectd.json.log" +# + +# +# LogLevel info +# + +############################################################################## +# LoadPlugin section # +#----------------------------------------------------------------------------# +# Lines beginning with a single `#' belong to plugins which have been built # +# but are disabled by default. # +# # +# Lines beginning with `##' belong to plugins which have not been built due # +# to missing dependencies or because they have been deactivated explicitly. # +############################################################################## + +{% macro load_plugin(name) %} +{% if name in collectd_disable_plugins %} +#LoadPlugin {{ name }} +{% else %} +LoadPlugin {{ name }} +{%- endif -%} +{% endmacro %} +#LoadPlugin aggregation +#LoadPlugin amqp +##LoadPlugin amqp1 +#LoadPlugin apache +#LoadPlugin apcups +##LoadPlugin apple_sensors +##LoadPlugin aquaero +#LoadPlugin ascent +##LoadPlugin barometer +#LoadPlugin battery +#LoadPlugin bind +##LoadPlugin buddyinfo +##LoadPlugin capabilities +#LoadPlugin ceph +#LoadPlugin cgroups +{{ load_plugin('chrony') }} +##LoadPlugin check_uptime +##LoadPlugin connectivity +#LoadPlugin conntrack +#LoadPlugin contextswitch +{{ load_plugin('cpu') }} +{{ load_plugin('cpufreq') }} +#LoadPlugin cpusleep +#LoadPlugin csv +#LoadPlugin curl +#LoadPlugin curl_json +#LoadPlugin curl_xml +#LoadPlugin dbi +##LoadPlugin dcpmm +{{ load_plugin('df') }} +{{ load_plugin('disk') }} +#LoadPlugin dns +##LoadPlugin dpdkevents +##LoadPlugin dpdkstat +##LoadPlugin dpdk_telemetry +#LoadPlugin drbd +#LoadPlugin email +{{ load_plugin('entropy') }} +#LoadPlugin ethstat +#LoadPlugin exec +#LoadPlugin fhcount +#LoadPlugin filecount +#LoadPlugin fscache +##LoadPlugin gmond +#LoadPlugin gps +##LoadPlugin grpc +#LoadPlugin hddtemp +#LoadPlugin hugepages +##LoadPlugin intel_pmu +##LoadPlugin intel_rdt +{{ load_plugin('interface') }} +#LoadPlugin ipc +#LoadPlugin ipmi +##LoadPlugin ipstats +#LoadPlugin iptables +#LoadPlugin ipvs +#LoadPlugin irq +#LoadPlugin java +{{ load_plugin('load') }} +##LoadPlugin lpar +##LoadPlugin logparser +#LoadPlugin lua +#LoadPlugin madwifi +#LoadPlugin mbmon +#LoadPlugin mcelog +#LoadPlugin md +#LoadPlugin memcachec +#LoadPlugin memcached +{{ load_plugin('memory') }} +##LoadPlugin mic +#LoadPlugin modbus +##LoadPlugin mqtt +#LoadPlugin multimeter +#LoadPlugin mysql +##LoadPlugin netapp +#LoadPlugin netlink +#LoadPlugin network +#LoadPlugin nfs +#LoadPlugin nginx +#LoadPlugin notify_desktop +#LoadPlugin notify_email +#LoadPlugin notify_nagios +#LoadPlugin ntpd +#LoadPlugin numa +#LoadPlugin nut +#LoadPlugin olsrd +#LoadPlugin onewire +#LoadPlugin openldap +#LoadPlugin openvpn +##LoadPlugin oracle +#LoadPlugin ovs_events +#LoadPlugin ovs_stats +#LoadPlugin pcie_errors +#LoadPlugin perl +#LoadPlugin pinba +#LoadPlugin ping +#LoadPlugin postgresql +#LoadPlugin powerdns +{{ load_plugin('processes') }} +##LoadPlugin procevent +#LoadPlugin protocols +#LoadPlugin python +##LoadPlugin redfish +#LoadPlugin redis +##LoadPlugin routeros +#LoadPlugin rrdcached +#LoadPlugin rrdtool +#LoadPlugin sensors +#LoadPlugin serial +##LoadPlugin sigrok +##LoadPlugin slurm +#LoadPlugin smart +#LoadPlugin snmp +#LoadPlugin snmp_agent +#LoadPlugin statsd +{{ load_plugin('swap') }} +##LoadPlugin sysevent +#LoadPlugin table +#LoadPlugin tail +#LoadPlugin tail_csv +##LoadPlugin tape +{{ load_plugin('tcpconns') }} +#LoadPlugin teamspeak2 +#LoadPlugin ted +#LoadPlugin thermal +##LoadPlugin tokyotyrant +##LoadPlugin turbostat +#LoadPlugin unixsock +{{ load_plugin('uptime') }} +#LoadPlugin users +#LoadPlugin uuid +#LoadPlugin varnish +#LoadPlugin virt +#LoadPlugin vmem +#LoadPlugin vserver +#LoadPlugin wireless +#LoadPlugin write_graphite +#LoadPlugin write_http +##LoadPlugin write_influxdb_udp +#LoadPlugin write_kafka +#LoadPlugin write_log +#LoadPlugin write_mongodb +#LoadPlugin write_prometheus +#LoadPlugin write_redis +#LoadPlugin write_riemann +#LoadPlugin write_sensu +#LoadPlugin write_stackdriver +#LoadPlugin write_syslog +#LoadPlugin write_tsdb +#LoadPlugin xencpu +#LoadPlugin xmms +#LoadPlugin zfs_arc +##LoadPlugin zone +#LoadPlugin zookeeper + +############################################################################## +# Plugin configuration # +#----------------------------------------------------------------------------# +# In this section configuration stubs for each plugin are provided. A desc- # +# ription of those options is available in the collectd.conf(5) manual page. # +############################################################################## + +# +# +# #Host "unspecified" +# Plugin "cpu" +# #PluginInstance "unspecified" +# Type "cpu" +# #TypeInstance "unspecified" +# +# GroupBy "Host" +# GroupBy "TypeInstance" +# +# CalculateNum false +# CalculateSum false +# CalculateAverage true +# CalculateMinimum false +# CalculateMaximum false +# CalculateStddev false +# +# + +# +# +# Host "localhost" +# Port "5672" +# VHost "/" +# User "guest" +# Password "guest" +# Exchange "amq.fanout" +# RoutingKey "collectd" +# Persistent false +# StoreRates false +# ConnectionRetryDelay 0 +# TLSEnabled false +# TLSVerifyPeer true +# TLSVerifyHostName true +# TLSCACert "/path/to/ca.pem" +# TLSClientCert "/path/to/client-cert.pem" +# TLSClientKey "/path/to/client-key.pem" +# +# + +# +# +# Host "localhost" +# Port "5672" +# User "guest" +# Password "guest" +# Address "collectd" +# RetryDelay 1 +# +# Format JSON +# PreSettle false +# +# +# Format JSON +# PreSettle true +# +# +# Format JSON +# PreSettle false +# +# +# + +# +# +# URL "http://localhost/status?auto" +# User "www-user" +# Password "secret" +# CACert "/etc/ssl/ca.crt" +# +# + +# +# Host "localhost" +# Port "3551" +# ReportSeconds true +# PersistentConnection true +# + +# +# Device "" +# + +# +# URL "http://localhost/ascent/status/" +# User "www-user" +# Password "secret" +# CACert "/etc/ssl/ca.crt" +# + +# +# Device "/dev/i2c-0"; +# Oversampling 512 +# PressureOffset 0.0 +# TemperatureOffset 0.0 +# Normalization 2 +# Altitude 238.0 +# TemperatureSensor "myserver/onewire-F10FCA000800/temperature" +# + +# +# ValuesPercentage false +# ReportDegraded false +# QueryStateFS false +# + +# +# URL "http://localhost:8053/" +# ParseTime false +# OpCodes true +# QTypes true +# +# ServerStats true +# ZoneMaintStats true +# ResolverStats false +# MemoryStats true +# +# +# QTypes true +# ResolverStats true +# CacheRRSets true +# +# Zone "127.in-addr.arpa/IN" +# +# + +# +# Zone "Normal" +# + +# +# Port "9104" +# + +# +# LongRunAvgLatency false +# ConvertSpecialMetricTypes true +# +# SocketPath "/var/run/ceph/ceph-osd.0.asok" +# +# +# SocketPath "/var/run/ceph/ceph-osd.1.asok" +# +# +# SocketPath "/var/run/ceph/ceph-mon.ceph1.asok" +# +# +# SocketPath "/var/run/ceph/ceph-mds.ceph1.asok" +# +# + +# +# Host "localhost" +# Port "323" +# Timeout "2" +# + +# +# Interface eth0 +# + +# +# CGroup "libvirt" +# IgnoreSelected false +# + +# +# ReportByCpu true +# ReportByState true +# ValuesPercentage false +# ReportNumCpu false +# ReportGuestState false +# SubtractGuestState true +# +# +# +# DataDir "/var/lib/collectd/csv" +# StoreRates false +# + +# +# +# URL "http://finance.google.com/finance?q=NYSE%3AAMD" +# AddressFamily "any" +# User "foo" +# Password "bar" +# Digest false +# VerifyPeer true +# VerifyHost true +# CACert "/path/to/ca.crt" +# Header "X-Custom-Header: foobar" +# Post "foo=bar" +# +# MeasureResponseTime false +# MeasureResponseCode false +# +# Regex "]*> *([0-9]*\\.[0-9]+) *" +# DSType "GaugeAverage" +# Type "stock_value" +# Instance "AMD" +# +# +# + +# +# +# AddressFamily "any" +# Instance "test_http_json" +# +# Type "gauge" +# # Expect: 1 +# +# +# Type "gauge" +# # Expect: 2 +# +# +# Type "gauge" +# # Expect: 3 +# +# +# Type "gauge" +# # Expect: 4 +# +# +# Type "gauge" +# # Expect: 5 +# +# +# Type "gauge" +# # Expect: 6 +# +# +# put this as test.json on your webserver, the above config demonstraces +# how to match them. +# { +# "testArray":[1,2], +# "testArrayInbetween":[{"blarg":3},{"blub":4}], +# "testDirectHit":5, +# "testSubLevelHit":{"oneMoreLevel":6} +# } +## See: http://wiki.apache.org/couchdb/Runtime_Statistics +# +# AddressFamily "ipv4" +# Instance "httpd" +# +# Type "http_requests" +# +# +# +# Type "http_request_methods" +# +# +# +# Type "http_response_codes" +# +# +## Database status metrics: +# +# AddressFamily "ipv6" +# Instance "dbs" +# +# Type "gauge" +# +# +# Type "counter" +# +# +# Type "bytes" +# +# +# + +# +# +# AddressFamily "any" +# Host "my_host" +# #Plugin "stats" +# Instance "some_instance" +# User "collectd" +# Password "thaiNg0I" +# Digest false +# VerifyPeer true +# VerifyHost true +# CACert "/path/to/ca.crt" +# Header "X-Custom-Header: foobar" +# Post "foo=bar" +# +# +# Type "magic_level" +# #InstancePrefix "prefix-" +# InstanceFrom "td[1]" +# #PluginInstanceFrom "td[1]" +# ValuesFrom "td[2]/span[@class=\"level\"]" +# +# +# + +# +# +# Statement "SELECT 'customers' AS c_key, COUNT(*) AS c_value FROM customers_tbl" +# +# Type "gauge" +# InstancesFrom "c_key" +# ValuesFrom "c_value" +# +# +# +# #Plugin "mycompany" +# Driver "mysql" +# DriverOption "host" "localhost" +# DriverOption "username" "collectd" +# DriverOption "password" "AeXohy0O" +# DriverOption "dbname" "custdb0" +# #SelectDB "custdb0" +# Query "num_of_customers" +# #Query "..." +# #Host "..." +# +# + +# +# Interval 10.0 +# CollectHealth false +# CollectPerfMetrics true +# EnableDispatchAll false +# + +# +# Device "/dev/hda1" +# Device "192.168.0.2:/mnt/nfs" +# MountPoint "/home" +# FSType "ext3" +# IgnoreSelected false +# LogOnce false +# ReportByDevice false +# ReportInodes false +# ValuesAbsolute true +# ValuesPercentage false +# + +# +# Disk "/^[hs]d[a-f][0-9]?$/" +# IgnoreSelected false +# UseBSDName false +# UdevNameAttr "DEVNAME" +# + +# +# Interface "eth0" +# IgnoreSource "192.168.0.1" +# SelectNumericQueryTypes true +# + +# +# +# Coremask "0x1" +# MemoryChannels "4" +# FilePrefix "rte" +# +# +# SendEventsOnUpdate true +# EnabledPortMask 0xffff +# PortName "interface1" +# PortName "interface2" +# SendNotification false +# +# +# SendEventsOnUpdate true +# LCoreMask "0xf" +# KeepAliveShmName "/dpdk_keepalive_shm_name" +# SendNotification false +# +# + +# +# +# Coremask "0x2" +# MemoryChannels "4" +# FilePrefix "rte" +# LogLevel "7" +# RteDriverLibPath "/usr/lib/dpdk-pmd" +# +# SharedMemObj "dpdk_collectd_stats_0" +# EnabledPortMask 0xffff +# PortName "interface1" +# PortName "interface2" +# + +# +# ClientSocketPath "/var/run/.client" +# DpdkSocketPath "/var/run/dpdk/rte/telemetry" +# + +# +# SocketFile "/var/run/collectd-email" +# SocketGroup "collectd" +# SocketPerms "0770" +# MaxConns 5 +# + +# +# Interface "eth0" +# Map "rx_csum_offload_errors" "if_rx_errors" "checksum_offload" +# Map "multicast" "if_multicast" +# MappedOnly false +# + +# +# Exec "user:group" "/path/to/exec" +# NotificationExec "user:group" "/path/to/exec" +# + +# +# ValuesAbsolute true +# ValuesPercentage false +# + +# +# +# #Plugin "foo" +# Instance "foodir" +# Name "*.conf" +# MTime "-5m" +# Size "+10k" +# Recursive true +# IncludeHidden false +# RegularOnly true +# #FilesSizeType "bytes" +# #FilesCountType "files" +# #TypeInstance "instance" +# +# + +# +# MCReceiveFrom "239.2.11.71" "8649" +# +# Type "swap" +# TypeInstance "total" +# DataSource "value" +# +# +# Type "swap" +# TypeInstance "free" +# DataSource "value" +# +# + +# +# Host "127.0.0.1" +# Port "2947" +# Timeout 0.015 +# PauseConnect 5 +# + +# +# GPUIndex 0 +# GPUIndex 2 +# IgnoreSelected false +# InstanceByGPUIndex true +# InstanceByGPUName true +# + +# +# +# EnableSSL true +# SSLCACertificateFile "/path/to/root.pem" +# SSLCertificateFile "/path/to/server.pem" +# SSLCertificateKeyFile "/path/to/server.key" +# +# +# EnableSSL true +# SSLCACertificateFile "/path/to/root.pem" +# SSLCertificateFile "/path/to/client.pem" +# SSLCertificateKeyFile "/path/to/client.key" +# VerifyPeer true +# +# + +# +# Host "127.0.0.1" +# Port "7634" +# + +# +# ReportPerNodeHP true +# ReportRootHP true +# ValuesPages true +# ValuesBytes false +# ValuesPercentage false +# + +# +# ReportHardwareCacheEvents true +# ReportKernelPMUEvents true +# ReportSoftwareEvents true +# EventList "/var/cache/pmu/GenuineIntel-6-2D-core.json" +# HardwareEvents "L2_RQSTS.CODE_RD_HIT,L2_RQSTS.CODE_RD_MISS" "L2_RQSTS.ALL_CODE_RD" +# Cores "[0-3]" +# DispatchMultiPmu false +# + +# +# Cores "0-2" +# Processes "sshd" +# + +# +# Interface "eth0" +# IgnoreSelected false +# ReportInactive true +# UniqueName false +# + +# +# +# Sensor "some_sensor" +# Sensor "another_one" +# IgnoreSelected false +# NotifySensorAdd false +# NotifySensorRemove true +# NotifySensorNotPresent false +# NotifyIPMIConnectionState false +# SELEnabled false +# SELSensor "some_sensor" +# SELSensor "another_one" +# SELIgnoreSelected false +# SELClearEvent false +# +# +# Host "server.example.com" +# Address "1.2.3.4" +# Username "user" +# Password "secret" +# #AuthType "md5" +# Sensor "some_sensor" +# Sensor "another_one" +# IgnoreSelected false +# NotifySensorAdd false +# NotifySensorRemove true +# NotifySensorNotPresent false +# NotifyIPMIConnectionState false +# SELEnabled false +# SELSensor "some_sensor" +# SELSensor "another_one" +# SELIgnoreSelected false +# SELClearEvent false +# +# + +# +# Chain table chain +# Chain6 table chain +# + +# +# Irq 7 +# Irq 8 +# Irq 9 +# IgnoreSelected true +# + +# +# JVMArg "-verbose:jni" +# JVMArg "-Djava.class.path=/usr/share/collectd/java/collectd-api.jar" +# +# LoadPlugin "org.collectd.java.Foobar" +# +# # To be parsed by the plugin +# +# + +# +# ReportRelative true +# + +# +# CpuPoolStats false +# ReportBySerial false +# + +# +# +# FirstFullRead false +# +# DefaultType "pcie_error" +# DefaultSeverity "warning" +# +# Regex "AER:.*error received" +# SubmatchIdx -1 +# +# +# Regex "(... .. ..:..:..) .* pcieport.*AER" +# SubmatchIdx 1 +# IsMandatory false +# +# +# Regex "pcieport (.*): AER:" +# SubmatchIdx 1 +# IsMandatory true +# +# +# PluginInstance true +# Regex " ([0-9a-fA-F:\\.]*): PCIe Bus Error" +# SubmatchIdx 1 +# IsMandatory false +# +# +# Regex "severity=" +# SubMatchIdx -1 +# +# +# Regex "severity=.*\\([nN]on-[fF]atal" +# TypeInstance "non_fatal" +# IsMandatory false +# +# +# Regex "severity=.*\\([fF]atal" +# Severity "failure" +# TypeInstance "fatal" +# IsMandatory false +# +# +# Regex "severity=Corrected" +# TypeInstance "correctable" +# IsMandatory false +# +# +# Regex "type=(.*)," +# SubmatchIdx 1 +# IsMandatory false +# +# +# Regex ", id=(.*)" +# SubmatchIdx 1 +# +# +# +# + +# +# BasePath "/usr/share/collectd/lua" +# Script "script1.lua" +# Script "script2.lua" +# + +# +# Interface "wlan0" +# IgnoreSelected false +# Source "SysFS" +# WatchSet "None" +# WatchAdd "node_octets" +# WatchAdd "node_rssi" +# WatchAdd "is_rx_acl" +# WatchAdd "is_scan_active" +# + +# +# Host "127.0.0.1" +# Port "411" +# + +# +# +# McelogClientSocket "/var/run/mcelog-client" +# PersistentNotification false +# +# McelogLogfile "/var/log/mcelog" +# + +# +# Device "/dev/md0" +# IgnoreSelected false +# + +# +# +# Server "localhost" +# Key "page_key" +# +# Regex "(\\d+) bytes sent" +# ExcludeRegex "" +# DSType CounterAdd +# Type "ipt_octets" +# Instance "type_instance" +# +# +# + +# +# +# #Host "memcache.example.com" +# Address "127.0.0.1" +# Port "11211" +# +# + +# +# ValuesAbsolute true +# ValuesPercentage false +# + +# +# +# RegisterBase 1234 +# RegisterCmd ReadHolding +# RegisterType float +# Type gauge +# Instance "..." +# #Scale 1.0 +# #Shift 0.0 +# +# +# +# Address "addr" +# Port "1234" +# Interval 60 +# +# +# Instance "foobar" # optional +# Collect "data_name" +# +# +# + +# +# +# Host "localhost" +# Port 1883 +# ClientId "localhost" +# User "user" +# Password "secret" +# QoS 0 +# Prefix "collectd" +# StoreRates true +# Retain false +# CACert "/etc/ssl/ca.crt" +# CertificateFile "/etc/ssl/client.crt" +# CertificateKeyFile "/etc/ssl/client.pem" +# TLSProtocol "tlsv1.2" +# CipherSuite "ciphers" +# +# +# Host "localhost" +# Port 1883 +# ClientId "localhost" +# User "user" +# Password "secret" +# QoS 2 +# Topic "collectd/#" +# CleanSession true +# CACert "/etc/ssl/ca.crt" +# CertificateFile "/etc/ssl/client.crt" +# CertificateKeyFile "/etc/ssl/client.pem" +# TLSProtocol "tlsv1.2" +# CipherSuite "ciphers" +# +# + +# +# +# Host "database.serv.er" +# User "db_user" +# Password "secret" +# Database "db_name" +# SSLKey "/path/to/key.pem" +# SSLCert "/path/to/cert.pem" +# SSLCA "/path/to/ca.pem" +# SSLCAPath "/path/to/cas/" +# SSLCipher "DHE-RSA-AES256-SHA" +# MasterStats true +# ConnectTimeout 10 +# InnodbStats true +# +# +# +# Alias "squeeze" +# Host "localhost" +# Socket "/var/run/mysql/mysqld.sock" +# SlaveStats true +# SlaveNotifications true +# +# +# Alias "galera" +# Host "localhost" +# Socket "/var/run/mysql/mysqld.sock" +# WsrepStats true +# +# + +# +# +# Protocol "https" +# Address "10.0.0.1" +# Port 443 +# User "username" +# Password "aef4Aebe" +# Interval 30 +# +# +# Interval 30 +# GetNameCache true +# GetDirCache true +# GetBufferCache true +# GetInodeCache true +# +# +# +# Interval 30 +# GetBusy true +# +# +# +# Interval 30 +# GetIO "volume0" +# IgnoreSelectedIO false +# GetOps "volume0" +# IgnoreSelectedOps false +# GetLatency "volume0" +# IgnoreSelectedLatency false +# +# +# +# Interval 30 +# GetCapacity "vol0" +# GetCapacity "vol1" +# IgnoreSelectedCapacity false +# GetSnapshot "vol1" +# GetSnapshot "vol3" +# IgnoreSelectedSnapshot false +# +# +# +# Interval 30 +# GetCPULoad true +# GetInterfaces true +# GetDiskOps true +# GetDiskIO true +# +# +# + +# +# Interface "All" +# VerboseInterface "All" +# QDisc "eth0" "pfifo_fast-1:0" +# Class "ppp0" "htb-1:10" +# Filter "ppp0" "u32-1:0" +# IgnoreSelected false +# + +# +# # client setup: +# Server "ff18::efc0:4a42" "25826" +# +# SecurityLevel Encrypt +# Username "user" +# Password "secret" +# Interface "eth0" +# ResolveInterval 14400 +# +# TimeToLive 128 +# +# # server setup: +# Listen "ff18::efc0:4a42" "25826" +# +# SecurityLevel Sign +# AuthFile "/etc/collectd/passwd" +# Interface "eth0" +# +# MaxPacketSize 1452 +# +# # proxy setup (client and server as above): +# Forward true +# +# # statistics about the network plugin itself +# ReportStats false +# +# # "garbage collection" +# CacheFlush 1800 +# + +# +# ReportV2 false +# #ReportV3 false +# #ReportV4 false +# + +# +# URL "http://localhost/status?auto" +# User "www-user" +# Password "secret" +# CACert "/etc/ssl/ca.crt" +# + +# +# OkayTimeout 1000 +# WarningTimeout 5000 +# FailureTimeout 0 +# + +# +# SMTPServer "localhost" +# SMTPPort 25 +# SMTPUser "my-username" +# SMTPPassword "my-password" +# From "collectd@main0server.com" +# # on . beware! do not use not more than two %s in this string!!! +# Subject "Aaaaaa!! %s on %s!!!!!" +# Recipient "email1@domain1.net" +# Recipient "email2@domain2.com" +# + +# +# CommandFile "/usr/local/nagios/var/rw/nagios.cmd" +# + +# +# Host "localhost" +# Port 123 +# ReverseLookups false +# IncludeUnitID true +# + +# +# UPS "upsname@hostname:port" +# ForceSSL true +# VerifyPeer true +# CAPath "/path/to/folder" +# #ConnectTimeout 5000 +# + +# +# Host "127.0.0.1" +# Port "2006" +# CollectLinks "Summary" +# CollectRoutes "Summary" +# CollectTopology "Summary" +# + +# +# Device "-s localhost:4304" +# Sensor "F10FCA000800" +# IgnoreSelected false +# + +# +# +# URL "ldap://localhost:389" +# StartTLS false +# VerifyHost true +# CACert "/path/to/ca.crt" +# Timeout -1 +# Version 3 +# +# + +# +# StatusFile "/etc/openvpn/openvpn-status.log" +# ImprovedNamingSchema false +# CollectCompression true +# CollectIndividualUsers true +# CollectUserCount false +# + +# +# +# Statement "SELECT category, COUNT(*) AS value FROM products WHERE in_stock = 0 GROUP BY category" +# +# Type "gauge" +# InstancesFrom "category" +# ValuesFrom "value" +# +# +# +# #Plugin "warehouse" +# ConnectID "db01" +# Username "oracle" +# Password "secret" +# Query "out_of_stock" +# +# + +# +# Port "6640" +# Address "127.0.0.1" +# Socket "/var/run/openvswitch/db.sock" +# Interfaces "br0" "veth0" +# SendNotification true +# DispatchValues false +# + +# +# Port "6640" +# Address "127.0.0.1" +# Socket "/var/run/openvswitch/db.sock" +# Bridges "br0" "br_ext" +# + +# +# Source "sysfs" +# ReportMasked false +# PersistentNotifications false +# + +# +# IncludeDir "/my/include/path" +# BaseName "Collectd::Plugins" +# EnableDebugger "" +# LoadPlugin Monitorus +# LoadPlugin OpenVZ +# +# +# Foo "Bar" +# Qux "Baz" +# +# + +# +# Address "::0" +# Port "30002" +# +# Host "host name" +# Server "server name" +# Script "script name" +# +# + +# +# Host "host.foo.bar" +# Interval 1.0 +# Timeout 0.9 +# TTL 255 +# SourceAddress "1.2.3.4" +# AddressFamily "any" +# Device "eth0" +# MaxMissed -1 +# + +# +# +# Statement "SELECT magic FROM wizard WHERE host = $1;" +# Param hostname +# +# Type gauge +# InstancePrefix "magic" +# ValuesFrom magic +# +# +# +# Statement "SELECT COUNT(type) AS count, type \ +# FROM (SELECT CASE \ +# WHEN resolved = 'epoch' THEN 'open' \ +# ELSE 'resolved' END AS type \ +# FROM tickets) type \ +# GROUP BY type;" +# +# Type counter +# InstancePrefix "rt36_tickets" +# InstancesFrom "type" +# ValuesFrom "count" +# +# +# +# # See contrib/postgresql/collectd_insert.sql for details +# Statement "SELECT collectd_insert($1, $2, $3, $4, $5, $6, $7, $8, $9);" +# StoreRates true +# +# +# #Plugin "kingdom" +# Host "hostname" +# Port "5432" +# User "username" +# Password "secret" +# SSLMode "prefer" +# KRBSrvName "kerberos_service_name" +# Query magic +# +# +# Interval 60 +# Service "service_name" +# Query backends # predefined +# Query rt36_tickets +# +# +# Service "collectd_store" +# Writer sqlstore +# # see collectd.conf(5) for details +# CommitInterval 30 +# +# + +# +# +# Collect "latency" +# Collect "udp-answers" "udp-queries" +# Socket "/var/run/pdns.controlsocket" +# +# +# Collect "questions" +# Collect "cache-hits" "cache-misses" +# Socket "/var/run/pdns_recursor.controlsocket" +# +# LocalSocket "/opt/collectd/var/run/collectd-powerdns" +# + +# +# CollectFileDescriptor true +# CollectContextSwitch true +# CollectMemoryMaps true +# CollectDelayAccounting false +# Process "name" +# ProcessMatch "name" "regex" +# +# CollectFileDescriptor false +# CollectContextSwitch false +# CollectDelayAccounting true +# +# +# CollectFileDescriptor false +# CollectContextSwitch true +# +# + +# +# BufferLength 10 +# ProcessRegex "/^ovs.*$/" +# Process tuned +# + +# +# Value "/^Tcp:/" +# IgnoreSelected false +# + +# +# ModulePath "/path/to/your/python/modules" +# LogTraces true +# Interactive true +# Import "spam" +# +# +# spam "wonderful" "lovely" +# +# + +# +# +# Host "redis.example.com" +# Port "6379" +# #Socket "/var/run/redis/redis.sock" +# Timeout 2000 +# +# #Database 0 +# Type "queue_length" +# Instance "myqueue" +# +# +# + +# +# +# Endpoint "/redfish/v1/Chassis/Chassis-1/Thermal" +# +# +# PluginInstance "chassis-1" +# Type "rpm" +# +# +# +# +# Endpoint "/redfish/v1/Chassis/Chassis-1/Thermal" +# +# +# PluginInstance "chassis-1" +# Type "degrees" +# +# +# +# +# Endpoint "/redfish/v1/Chassis/Chassis-1/Power" +# +# +# PluginInstance "chassis-1" +# Type "volts" +# +# +# +# +# Host "127.0.0.1:5000" +# User "user" +# Passwd "passwd" +# Queries "fans" "voltages" "temperatures" +# +# +# + +# +# +# Host "router.example.com" +# Port "8728" +# User "admin" +# Password "dozaiTh4" +# CollectInterface true +# CollectRegistrationTable true +# CollectCPULoad true +# CollectMemory true +# CollectDF true +# CollectDisk true +# CollectHealth true +# +# + +# +# DaemonAddress "unix:/tmp/rrdcached.sock" +# DataDir "/var/lib/collectd/rrd" +# CreateFiles true +# CreateFilesAsync false +# CollectStatistics true +# + +# +# DataDir "/var/lib/collectd/rrd" +# CreateFilesAsync false +# CacheTimeout 120 +# CacheFlush 900 +# WritesPerSecond 50 +# + +# +# SensorConfigFile "/etc/sensors.conf" +# Sensor "it8712-isa-0290/temperature-temp1" +# Sensor "it8712-isa-0290/fanspeed-fan3" +# Sensor "it8712-isa-0290/voltage-in8" +# IgnoreSelected false +# + +# +# LogLevel 3 +# +# Driver "fluke-dmm" +# MinimumInterval 10 +# Conn "/dev/ttyUSB2" +# +# +# Driver "cem-dt-885x" +# Conn "/dev/ttyUSB1" +# +# + +# +# Disk "/^[hs]d[a-f][0-9]?$/" +# IgnoreSelected false +# + +# +# +# Table false +# Type "voltage" +# TypeInstance "input_line1" +# Values "SNMPv2-SMI::enterprises.6050.5.4.1.1.2.1" +# +# +# Table false +# Type "users" +# TypeInstance "" +# Values "HOST-RESOURCES-MIB::hrSystemNumUsers.0" +# +# +# Table true +# Type "if_octets" +# TypeInstanceOID "IF-MIB::ifDescr" +# #TypeInstancePrefix "port" +# Values "IF-MIB::ifInOctets" "IF-MIB::ifOutOctets" +# #FilterOID "IF-MIB::ifOperStatus" +# #FilterValues "1", "2" +# +# +# Table true +# Type "if_octets" +# Plugin "interface" +# PluginInstanceOID "IF-MIB::ifDescr" +# Values "IF-MIB::ifInOctets" "IF-MIB::ifOutOctets" +# +# +# +# Address "192.168.0.2" +# Version 1 +# Community "community_string" +# Collect "std_traffic" +# Interval 120 +# Timeout 10 +# Retries 1 +# +# +# Address "192.168.0.42" +# Version 2 +# Community "another_string" +# Collect "std_traffic" "hr_users" +# BulkSize 0 +# +# +# Address "192.168.0.3" +# Version 1 +# Community "more_communities" +# Collect "powerplus_voltge_input" +# Interval 300 +# Timeout 5 +# Retries 5 +# +# +# Address "192.168.0.3" +# Version 2 +# Community "another_string" +# Collect "std_traffic" +# Interval 10 +# Timeout 10 +# BulkSize 100 +# +# + +# +# +# Plugin "memory" +# Type "memory" +# TypeInstance "free" +# OIDs "1.3.6.1.4.1.2021.4.6.0" +# +# +# IndexOID "IF-MIB::ifIndex" +# SizeOID "IF-MIB::ifNumber" +# +# +# Source "PluginInstance" +# +# Plugin "interface" +# OIDs "IF-MIB::ifDescr" +# +# +# Plugin "interface" +# Type "if_octets" +# TypeInstance "" +# OIDs "IF-MIB::ifInOctets" "IF-MIB::ifOutOctets" +# +#
+#
+ +# +# Host "::" +# Port "8125" +# DeleteCounters false +# DeleteTimers false +# DeleteGauges false +# DeleteSets false +# CounterSum false +# TimerPercentile 90.0 +# TimerPercentile 95.0 +# TimerPercentile 99.0 +# TimerLower false +# TimerUpper false +# TimerSum false +# TimerCount false +# + +# +# ReportByDevice false +# ReportBytes true +# ValuesAbsolute true +# ValuesPercentage false +# ReportIO true +# + +# +# Listen "127.0.0.1" "6666" +# BufferSize 1024 +# BufferLength 10 +# RegexFilter "regex" +# + +# +# +# #Plugin "table" +# Instance "slabinfo" +# Separator " " +# +# Type gauge +# InstancePrefix "active_objs" +# InstancesFrom 0 +# ValuesFrom 1 +# +# +# Type gauge +# InstancePrefix "objperslab" +# InstancesFrom 0 +# ValuesFrom 4 +# +#
+#
+ +# +# +# Instance "exim" +# Interval 60 +# +# Regex "S=([1-9][0-9]*)" +# DSType "CounterAdd" +# Type "ipt_bytes" +# Instance "total" +# +# +# Regex "\\" +# ExcludeRegex "\\.*mail_spool defer" +# DSType "CounterInc" +# Type "counter" +# Instance "local_user" +# +# +# +# #Use the following log format in nginx: +# #log_format response_time '[$host] "$upstream_response_time" ...' +# Instance "apache" +# +# Regex "^\\S+ \"([0-9.]+)\"" +# +# Percentile 80 # -> latency-foo-80 +# Percentile 95 # -> latency-foo-95 +# Percentile 99 # -> latency-foo-99 +# Bucket 0 0.1 # -> bucket-latency-foo-0_0.1 +# Bucket 0.1 0.2 # -> bucket-latency-foo-0.1_0.2 +# Bucket 0.2 0.5 # -> bucket-latency-foo-0.2_0.5 +# Bucket 0.5 1.0 # -> bucket-latency-foo-0.5_1 +# Bucket 1.0 2.0 # -> bucket-latency-foo-1_2 +# Bucket 2.0 0 # -> bucket-latency-foo-2_inf +# #BucketType "bucket" +# +# Type "latency" +# Instance "foo" +# +# +# + +# +# +# Type "percent" +# Instance "dropped" +# ValueFrom 1 +# +# +# Type "bytes" +# Instance "wire-realtime" +# ValueFrom 2 +# +# +# Type "alerts_per_second" +# ValueFrom 3 +# +# +# Type "kpackets_wire_per_sec.realtime" +# ValueFrom 4 +# +# +# Instance "snort-eth0" +# Interval 600 +# Collect "dropped" "mbps" "alerts" "kpps" +# TimeFrom 0 +# +# + +# +# ListeningPorts false +# AllPortsSummary false +# LocalPort "25" +# RemotePort "25" +# + +# +# Host "127.0.0.1" +# Port "51234" +# Server "8767" +# + +# +# Device "/dev/ttyUSB0" +# Retries 0 +# + +# +# ForceUseProcfs false +# Device "THRM" +# IgnoreSelected false +# + +# +# Host "localhost" +# Port "1978" +# + +# +## None of the following option should be set manually +## This plugin automatically detect most optimal options +## Only set values here if: +## - The module asks you to +## - You want to disable the collection of some data +## - Your (Intel) CPU is not supported (yet) by the module +## - The module generates a lot of errors 'MSR offset 0x... read failed' +## In the last two cases, please open a bug request +# +# TCCActivationTemp "100" +# CoreCstates "392" +# PackageCstates "396" +# SystemManagementInterrupt true +# DigitalTemperatureSensor true +# PackageThermalManagement true +# RunningAveragePowerLimit "7" +# + +# +# Device "ubi0" +# IgnoreSelected false +# + +# +# SocketFile "/usr/var/run/collectd-unixsock" +# SocketGroup "collectd" +# SocketPerms "0660" +# DeleteSocket false +# + +# +# UUIDFile "/etc/uuid" +# + +# +# ShowCPU true +# ShowCPUCores true +# ShowMemory true +# ShowTemperatures true +## Temperature Sensors can be ignored/shown by repeated #Temperature lines, and +## then inverted with a IgnoreSelectedTemperature. +## Known Temperature sensors: die, devmem, fin, fout, vccp, vddg, vddq +# Temperature vddg +# IgnoreSelectedTemperature true +# ShowPower true +## Power Sensors can be ignored/shown by repeated #Power lines, and +## then inverted with a IgnoreSelectedTemperature. +## Known Temperature sensors: total0, total1, inst, imax, pci3, c2x3, c2x4, vccp, vddg, vddq +# Power total1 +# IgnoreSelectedPower true +# + +# +# This tag support an argument if you want to +# monitor the local instance just use +# If you prefer defining another instance you can do +# so by using +# +# CollectBackend true +# CollectBan false # Varnish 3 and above +# CollectCache true +# CollectConnections true +# CollectDirectorDNS false # Varnish 3 only +# CollectESI false +# CollectFetch false +# CollectHCB false +# CollectObjects false +# CollectPurge false # Varnish 2 only +# CollectSession false +# CollectSHM true +# CollectSMA false # Varnish 2 & 4 only +# CollectSMS false +# CollectSM false # Varnish 2 only +# CollectStruct false +# CollectTotals false +# CollectUptime false # Varnish 3 and above +# CollectVCL false +# CollectVSM false # Varnish 4 only +# CollectWorkers false +# CollectLock false # Varnish 4 only +# CollectMempool false # Varnish 4 only +# CollectManagement false # Varnish 4 only +# CollectSMF false # Varnish 4 only +# CollectVBE false # Varnish 4 only +# CollectMSE false # Varnish-Plus 4 only +# +# + +# +# Connection "xen:///" +# RefreshInterval 60 +# Domain "name" +# ReportBlockDevices true +# ReportNetworkInterfaces true +# BlockDevice "name:device" +# BlockDeviceFormat target +# BlockDeviceFormatBasename false +# InterfaceDevice "name:device" +# IgnoreSelected false +# HostnameFormat name +# HostnameMetadataXPath "/instance/name/text()" +# HostnameMetadataNS "http://openstack.org/xmlns/libvirt/nova/1.0" +# InterfaceFormat name +# PluginInstanceFormat name +# Instances 1 +# ExtraStats "cpu_util disk disk_err domain_state fs_info job_stats_background pcpu perf vcpu vcpupin disk_physical disk_allocation disk_capacity memory" +# PersistentNotification false +# + +# +# Verbose false +# + +# +# +# Host "localhost" +# Port "2003" +# Protocol "tcp" +# ReconnectInterval 0 +# LogSendErrors true +# Prefix "collectd" +# Postfix "collectd" +# StoreRates true +# AlwaysAppendDS false +# EscapeCharacter "_" +# SeparateInstances false +# PreserveSeparator false +# DropDuplicateFields false +# ReverseHost false +# +# + +# +# +# URL "http://example.com/collectd-post" +# User "collectd" +# Password "weCh3ik0" +# VerifyPeer true +# VerifyHost true +# CACert "/etc/ssl/ca.crt" +# CAPath "/etc/ssl/certs/" +# ClientKey "/etc/ssl/client.pem" +# ClientCert "/etc/ssl/client.crt" +# ClientKeyPass "secret" +# Header "X-Custom-Header: custom_value" +# SSLVersion "TLSv1" +# Format "Command" +# Prefix "collectd" # metric prefix, only available for KAIROSDB format +# Attribute "key" "value" # only available for KAIROSDB format +# TTL 0 # data ttl, only available for KAIROSDB format +# Metrics true +# Notifications false +# StoreRates false +# BufferSize 4096 +# LowSpeedLimit 0 +# Timeout 0 +# +# + +# +# Server "localhost" +# StoreRates true +# MaxPacketSize 32768 +# TimeToLive 128 +# + +# +# Property "metadata.broker.list" "localhost:9092" +# +# Format JSON +# +# + +# +# +# Host "localhost" +# Port "27017" +# Timeout 1000 +# StoreRates false +# Database "auth_db" +# User "auth_user" +# Password "auth_passwd" +# +# + +# +# Port "9103" +# + +# +# +# Host "localhost" +# Port "6379" +# Timeout 1000 +# Prefix "collectd/" +# +# + +# +# +# Host "localhost" +# Port 5555 +# Protocol TCP +# Batch true +# BatchMaxSize 8192 +# StoreRates true +# AlwaysAppendDS false +# TTLFactor 2.0 +# Notifications true +# CheckThresholds false +# EventServicePrefix "" +# +# Tag "foobar" +# Attribute "foo" "bar" +# + +# +# +# Host "localhost" +# Port 3030 +# StoreRates true +# AlwaysAppendDS false +# Notifications true +# Metrics true +# EventServicePrefix "" +# MetricHandler "influx" +# MetricHandler "default" +# NotificationHandler "flapjack" +# NotificationHandler "howling_monkey" +# +# Tag "foobar" +# Attribute "foo" "bar" +# + +# +# Project "stackdriver-account" +# CredentialFile "/path/to/gcp-project-id-12345.json" +# Email "123456789012@developer.gserviceaccount.com" +# +# Label "project_id" "gcp-project-id" +# +# Url "https://monitoring.googleapis.com/v3" +# + +# +# +# Host "localhost" +# Port "44514" +# Prefix "collectd" +# MessageFormat "human" +# HostTags "" +# StoreRates false +# AlwaysAppendDS false +# +# + +# +# +# Host "localhost" +# Port "4242" +# HostTags "status=production" +# StoreRates false +# AlwaysAppendDS false +# +# + +# +# Host "localhost" +# Port "2181" +# + +############################################################################## +# Filter configuration # +#----------------------------------------------------------------------------# +# The following configures collectd's filtering mechanism. Before changing # +# anything in this section, please read the `FILTER CONFIGURATION' section # +# in the collectd.conf(5) manual page. # +############################################################################## + +# Load required matches: +#LoadPlugin match_empty_counter +#LoadPlugin match_hashed +#LoadPlugin match_regex +#LoadPlugin match_value +#LoadPlugin match_timediff + +# Load required targets: +#LoadPlugin target_notification +#LoadPlugin target_replace +#LoadPlugin target_scale +#LoadPlugin target_set +#LoadPlugin target_v5upgrade + +#----------------------------------------------------------------------------# +# The following block demonstrates the default behavior if no filtering is # +# configured at all: All values will be sent to all available write plugins. # +#----------------------------------------------------------------------------# + +# +# Target "write" +# + +############################################################################## +# Threshold configuration # +#----------------------------------------------------------------------------# +# The following outlines how to configure collectd's threshold checking # +# plugin. The plugin and possible configuration options are documented in # +# the collectd-threshold(5) manual page. # +############################################################################## + +#LoadPlugin "threshold" +# +# +# WarningMin 0.00 +# WarningMax 1000.00 +# FailureMin 0.00 +# FailureMax 1200.00 +# Invert false +# Instance "bar" +# +# +# +# Instance "eth0" +# +# FailureMax 10000000 +# DataSource "rx" +# +# +# +# +# +# Instance "idle" +# FailureMin 10 +# +# +# +# +# Instance "cached" +# WarningMin 100000000 +# +# +# +# +# DataSource "midterm" +# FailureMax 4 +# Hits 3 +# Hysteresis 3 +# +# +# +{% endif %} +Include "/etc/collectd.d" diff --git a/roles/collectd/vars/defaults.yml b/roles/collectd/vars/defaults.yml new file mode 100644 index 0000000..79b4ddc --- /dev/null +++ b/roles/collectd/vars/defaults.yml @@ -0,0 +1,4 @@ +collectd_packages: +- collectd +- collectd-chrony +- collectd-disk From 4a4f984f1f1f544cd43f40d31ad66ee832a6bb44 Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Tue, 8 Dec 2020 21:26:43 -0600 Subject: [PATCH 2/6] ci: Add Jenkins pipeline for collectd --- ci/collectd.jenkinsfile | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 ci/collectd.jenkinsfile diff --git a/ci/collectd.jenkinsfile b/ci/collectd.jenkinsfile new file mode 100644 index 0000000..189a700 --- /dev/null +++ b/ci/collectd.jenkinsfile @@ -0,0 +1,10 @@ +@Library('cfgpol') + +applyConfigPolicy( + 'collectd', + [ + 'collectd': [ + 'collectd.yml' + ] + ] +) From 8d442b2aafb005a8a6d1a8c65f7fd426c660acbc Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Wed, 23 Dec 2020 20:54:48 -0600 Subject: [PATCH 3/6] roles/collectd: Support setting server interface For hosts with multiple network interfaces, collectd may not send multicast messages through the correct interface. To ensure that it does, the `Interface` configuration option can be specified with each `Server` option. To define this option, entries in the `collectd_network_servers` list can now have an `interface` property. --- roles/collectd/templates/collectd-network.conf.j2 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/roles/collectd/templates/collectd-network.conf.j2 b/roles/collectd/templates/collectd-network.conf.j2 index 177d9f2..27654bd 100644 --- a/roles/collectd/templates/collectd-network.conf.j2 +++ b/roles/collectd/templates/collectd-network.conf.j2 @@ -6,6 +6,10 @@ LoadPlugin network {% for server in collectd_network_servers %} {% if server is string %} Server "{{ server }}" +{% elif server.interface is defined %} + + Interface "{{ server.interface }}" + {% else %} Server "{{ server.host }}" {{ server.port }} {% endif %} From 71f55ddfdf4eaff20c78721c67c13a6054cf3d44 Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Wed, 23 Dec 2020 20:57:01 -0600 Subject: [PATCH 4/6] hosts: hass1: Set collectd network interface Because *hass1.pyrocufflink.blue* has multiple interfaces, collectd does not know which interface it should use to send multicast metrics messages. To force it to use the wired interface, which is connected to the default internal ("blue") network, the `interface` property needs to be set. --- host_vars/hass1.pyrocufflink.blue.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/host_vars/hass1.pyrocufflink.blue.yml b/host_vars/hass1.pyrocufflink.blue.yml index cfca450..558df41 100644 --- a/host_vars/hass1.pyrocufflink.blue.yml +++ b/host_vars/hass1.pyrocufflink.blue.yml @@ -1,2 +1,5 @@ burp_backup: - include: /var/lib/homeassistant +collectd_network_servers: +- host: ff18::efc0:4a42 + interface: eth0 From debf7d8e5ab26dbc0ec46df449bde0ae997ca912 Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Wed, 23 Dec 2020 21:04:49 -0600 Subject: [PATCH 5/6] hosts: Add pyrocufflink to collectd group We want collectd deployed on all production machines. --- hosts | 3 +++ hosts.offline | 3 +++ 2 files changed, 6 insertions(+) diff --git a/hosts b/hosts index 530bcb4..4d825c4 100644 --- a/hosts +++ b/hosts @@ -18,6 +18,9 @@ burp1.pyrocufflink.blue [certbot] +[collectd:children] +pyrocufflink + [dch-proxy] [dch-vpn] diff --git a/hosts.offline b/hosts.offline index 1afe7c3..5b11e70 100644 --- a/hosts.offline +++ b/hosts.offline @@ -1,6 +1,9 @@ [all:vars] ansible_python_interpreter=/usr/bin/python3 +[collectd:children] +pyrocufflink + [dhcpcd:children] vm-hosts From 8e180d00ab961f3b0c82f8d614d6ed9c615f80d2 Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Wed, 23 Dec 2020 21:25:49 -0600 Subject: [PATCH 6/6] collectd: Ensure service is enabled --- roles/collectd/tasks/main.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/roles/collectd/tasks/main.yml b/roles/collectd/tasks/main.yml index c38e169..07c775f 100644 --- a/roles/collectd/tasks/main.yml +++ b/roles/collectd/tasks/main.yml @@ -33,3 +33,8 @@ tags: - collectd-config - collectd-network + +- name: ensure collectd starts at boot + service: + name: collectd + enabled: true