diff --git a/README.md b/README.md
index 260ee00..3988202 100644
--- a/README.md
+++ b/README.md
@@ -60,13 +60,59 @@ The following may also be added to your inventory.
* `collectd_interval`: at what interval in seconds to take measurements (default: 60)
* `check_disk`: a value which we will use to select what disk to monitor (default: xvde)
-* `fs_type`: the file system type to monitor (default: ext4)
+* `collectd_df_fs_type`: the file system type to monitor (Collectd 5.4 default: ext4. Collectd 5.5 default: undefined)
+* `collectd_df_device`: the dev device to monitor.
+* `collectd_df_mountpoint`: the mount point to monitor.
+* `collectd_df_IgnoreSelected`: [see wiki](https://collectd.org/wiki/index.php/Plugin:DF#Parameters) (default: false)
+* `collectd_df_ReportByDevice`: [see wiki](https://collectd.org/wiki/index.php/Plugin:DF#Parameters) (default: false)
+* `collectd_df_ReportInodes`: [see wiki](https://collectd.org/wiki/index.php/Plugin:DF#Parameters) (default: false)
+* `collectd_df_ValuesAbsolute`: [see wiki](https://collectd.org/wiki/index.php/Plugin:DF#Parameters) (default: true)
+* `collectd_df_ValuesPercentage`: [see wiki](https://collectd.org/wiki/index.php/Plugin:DF#Parameters) (default: false)
* `monitor_coretemp`: set to true if you want to monitor coretemp (only useful on real hardware)
* `private_ip`: set to the IP address of the `collectd_forwarder` if `collectd_fowarder` has multiple IPs. Example:
```
collectd1.somedc.prod ansible_ssh_host=10.0.1.111 private_ip=172.16.1.111
```
+### Plugin configuration
+
+#### [Disk](https://collectd.org/wiki/index.php/Plugin:Disk)
+
+
+Default: xvde
+
+```
+check_disk: xvde
+```
+
+#### [DF](https://collectd.org/wiki/index.php/Plugin:DF)
+
+All options are optional.
+
+The following should be set as an array.
+Example 1: (Single value)
+```
+collectd_df_device: '["/dev/xvda1"]'
+collectd_df_mountpoint: '["/"]'
+collectd_df_fs_type: '["xfs"]'
+```
+Example 2: (Multiple values)
+```
+collectd_df_device: '["/dev/xvda1","/dev/xvdb1"]'
+collectd_df_mountpoint: '["/","/data"]'
+collectd_df_fs_type: '["xfs","ext4"]'
+```
+
+You can change the rest of the defaults.
+```
+collectd_df_IgnoreSelected: false
+collectd_df_ReportByDevice: false
+collectd_df_ReportInodes: false
+collectd_df_ValuesAbsolute: true
+collectd_df_ValuesPercentage: false
+```
+
+
### Roles addition
It is possible for any roles to add their own custom metric collection configuration.
diff --git a/tasks/centos.yml b/tasks/centos.yml
index be0d7b0..e5551be 100644
--- a/tasks/centos.yml
+++ b/tasks/centos.yml
@@ -1,6 +1,7 @@
- name: "Set collectd's config file destination"
set_fact: >
collectd_config_dest=/etc/collectd.conf
+ collectd_d_config_dir=/etc/collectd.d
tags:
- collectd
@@ -71,3 +72,19 @@
tags:
- collectd
- files
+
+- name: "Get Collectd version"
+ shell: |
+ executable=/bin/bash
+ v=$(rpm -qa --queryformat %{version} collectd); echo "${v%.*}"
+ register: collectd_version
+ tags:
+ - collectd
+ - files
+
+- name: "Set version"
+ set_fact:
+ installed_version: "{{ collectd_version.stdout }}"
+ tags:
+ - collectd
+ - files
diff --git a/tasks/debian.yml b/tasks/debian.yml
index e297ac5..e1fcf52 100644
--- a/tasks/debian.yml
+++ b/tasks/debian.yml
@@ -1,6 +1,7 @@
- name: "Set collectd's config file destination"
set_fact: >
collectd_config_dest=/etc/collectd/collectd.conf
+ collectd_d_config_dir=/etc/collectd/collectd.conf.d
tags:
- collectd
@@ -25,4 +26,20 @@
when: monitor_coretemp
tags:
- collectd
- - files
\ No newline at end of file
+ - files
+
+- name: "Get Collectd version"
+ shell: |
+ executable=/bin/bash
+ v=$(dpkg-query --showformat='${Version}' --show collectd); echo "${v%.*}"
+ register: collectd_version
+ tags:
+ - collectd
+ - files
+
+- name: "Set version"
+ set_fact:
+ installed_version: "{{ collectd_version.stdout }}"
+ tags:
+ - collectd
+ - files
diff --git a/tasks/main.yml b/tasks/main.yml
index e31b376..cc51caf 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -24,9 +24,21 @@
- files
- configs
+- name: "Upload df plugin config"
+ template: >
+ src=df.conf.j2
+ dest={{ collectd_d_config_dir }}/df.conf
+ mode=0644
+ notify:
+ - Restart collectd
+ tags:
+ - collectd
+ - files
+ - configs
+
- name: "Upload Librato collectd config"
template: >
- src=librato.conf.j2
+ src=librato.conf.{{ installed_version }}.j2
dest=/etc/collectd.d/librato.conf
owner=root
group=root
@@ -53,7 +65,7 @@
- name: "Install /etc/collectd.conf"
template: >
- src=collectd.conf.j2
+ src=collectd.conf.{{ installed_version }}.j2
dest={{ collectd_config_dest }}
mode=0644
notify:
diff --git a/templates/collectd.conf.j2 b/templates/collectd.conf.5.4.j2
similarity index 99%
rename from templates/collectd.conf.j2
rename to templates/collectd.conf.5.4.j2
index 66d05dd..987305f 100644
--- a/templates/collectd.conf.j2
+++ b/templates/collectd.conf.5.4.j2
@@ -133,10 +133,6 @@ LoadPlugin network
ReportStats false
-LoadPlugin df
-
- FSType "{{ fs_type|default('ext4') }}"
-
#
# Custom python plugins
diff --git a/templates/collectd.conf.5.5.j2 b/templates/collectd.conf.5.5.j2
new file mode 100644
index 0000000..85e0620
--- /dev/null
+++ b/templates/collectd.conf.5.5.j2
@@ -0,0 +1,1575 @@
+#
+# 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 "{{ server_hostname | default(inventory_hostname) }}"
+FQDNLookup false
+#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 true
+
+#----------------------------------------------------------------------------#
+# 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 {{ collectd_interval|default('60') }}
+
+#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 begnning with `##' belong to plugins which have not been built due #
+# to missing dependencies or because they have been deactivated explicitly. #
+##############################################################################
+
+#LoadPlugin aggregation
+#LoadPlugin amqp
+#LoadPlugin apache
+#LoadPlugin apcups
+##LoadPlugin apple_sensors
+##LoadPlugin aquaero
+#LoadPlugin ascent
+##LoadPlugin barometer
+#LoadPlugin battery
+#LoadPlugin bind
+#LoadPlugin ceph
+#LoadPlugin cgroups
+#LoadPlugin conntrack
+#LoadPlugin contextswitch
+LoadPlugin cpu
+#LoadPlugin cpufreq
+#LoadPlugin csv
+#LoadPlugin curl
+#LoadPlugin curl_json
+#LoadPlugin curl_xml
+#LoadPlugin dbi
+LoadPlugin disk
+
+ Disk "/^{{ check_disk|default('xvde') }}/"
+ IgnoreSelected false
+
+#LoadPlugin dns
+#LoadPlugin drbd
+#LoadPlugin email
+#LoadPlugin entropy
+#LoadPlugin ethstat
+{% if monitor_coretemp|bool %}
+LoadPlugin exec
+
+ Exec nobody "/opt/collectd-exec-modules/collectd-coretemp.sh"
+
+{% else %}
+#LoadPlugin exec
+{% endif %}
+#LoadPlugin fhcount
+#LoadPlugin filecount
+#LoadPlugin fscache
+#LoadPlugin gmond
+#LoadPlugin hddtemp
+LoadPlugin interface
+
+ Interface "lo"
+ IgnoreSelected true
+
+#LoadPlugin ipc
+#LoadPlugin ipmi
+#LoadPlugin iptables
+#LoadPlugin ipvs
+#LoadPlugin irq
+#LoadPlugin java
+LoadPlugin load
+##LoadPlugin lpar
+#LoadPlugin lvm
+#LoadPlugin madwifi
+#LoadPlugin mbmon
+#LoadPlugin md
+##LoadPlugin memcachec
+#LoadPlugin memcached
+LoadPlugin memory
+##LoadPlugin mic
+#LoadPlugin modbus
+#LoadPlugin multimeter
+#LoadPlugin mysql
+##LoadPlugin netapp
+#LoadPlugin netlink
+LoadPlugin network
+
+ {% if collectd_forwarder is defined and collectd_forward_to_logstash|bool %}
+
+ Interface "{{ private_interface }}"
+
+
+ TimeToLive 128
+
+ {% elif collectd_forwarder is defined and collectd_forwarder != inventory_hostname %}
+
+ Interface "{{ private_interface }}"
+
+
+ TimeToLive 128
+
+ {% else %}
+
+
+ Interface "{{ private_interface }}"
+
+
+ MaxPacketSize 4096
+
+ {% endif %}
+
+ # statistics about the network plugin itself
+ ReportStats false
+
+#LoadPlugin nfs
+#LoadPlugin nginx
+#LoadPlugin notify_desktop
+#LoadPlugin notify_email
+#LoadPlugin ntpd
+#LoadPlugin numa
+#LoadPlugin nut
+#LoadPlugin olsrd
+##LoadPlugin onewire
+#LoadPlugin openldap
+#LoadPlugin openvpn
+##LoadPlugin oracle
+#LoadPlugin perl
+#LoadPlugin pinba
+#LoadPlugin ping
+#LoadPlugin postgresql
+#LoadPlugin powerdns
+#LoadPlugin processes
+#LoadPlugin protocols
+#LoadPlugin python
+
+#
+# Custom python plugins
+#
+LoadPlugin python
+
+{% if collectd_forwarder is defined and collectd_forwarder == inventory_hostname %}
+{% if use_graphite|bool %}
+
+ Interval {{ graphite_interval|default('10') }}
+
+
+
+ Host "{{ graphite_host }}"
+ Port "{{ graphite_port }}"
+ Protocol "udp"
+ LogSendErrors true
+ Prefix "collectd"
+ Postfix "collectd"
+ StoreRates true
+ AlwaysAppendDS false
+ EscapeCharacter "_"
+
+
+{% endif %}
+{% endif %}
+
+
+#LoadPlugin redis
+##LoadPlugin routeros
+#LoadPlugin rrdcached
+LoadPlugin rrdtool
+
+ DataDir "/var/lib/collectd/rrd"
+ CacheFlush 120
+ WritesPerSecond 50
+
+#LoadPlugin sensors
+#LoadPlugin serial
+##LoadPlugin sigrok
+#LoadPlugin smart
+#LoadPlugin snmp
+#LoadPlugin statsd
+#LoadPlugin swap
+#LoadPlugin table
+#LoadPlugin tail
+#LoadPlugin tail_csv
+##LoadPlugin tape
+#LoadPlugin tcpconns
+#LoadPlugin teamspeak2
+#LoadPlugin ted
+#LoadPlugin thermal
+##LoadPlugin tokyotyrant
+#LoadPlugin turbostat
+#LoadPlugin unixsock
+#LoadPlugin uptime
+#LoadPlugin users
+#LoadPlugin uuid
+#LoadPlugin varnish
+#LoadPlugin virt
+LoadPlugin vmem
+#LoadPlugin vserver
+#LoadPlugin wireless
+#LoadPlugin write_graphite
+#LoadPlugin write_http
+##LoadPlugin write_kafka
+#LoadPlugin write_log
+##LoadPlugin write_mongodb
+#LoadPlugin write_redis
+#LoadPlugin write_riemann
+#LoadPlugin write_sensu
+#LoadPlugin write_tsdb
+##LoadPlugin xmms
+##LoadPlugin zfs_arc
+#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
+#
+#
+
+#
+#
+# URL "http://localhost/status?auto"
+# User "www-user"
+# Password "secret"
+# CACert "/etc/ssl/ca.crt"
+#
+#
+
+#
+# Host "localhost"
+# Port "3551"
+# ReportSeconds 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
+#
+
+#
+# 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"
+#
+#
+
+#
+# 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"
+#
+#
+
+#
+# CGroup "libvirt"
+# IgnoreSelected false
+#
+
+#
+# ReportByCpu true
+# ReportByState true
+# ValuesPercentage false
+#
+#
+#
+# DataDir "/var/lib/collectd/csv"
+# StoreRates false
+#
+
+#
+#
+# URL "http://finance.google.com/finance?q=NYSE%3AAMD"
+# 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"
+#
+#
+#
+
+#
+#
+# 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
+#
+# Instance "httpd"
+#
+# Type "http_requests"
+#
+#
+#
+# Type "http_request_methods"
+#
+#
+#
+# Type "http_response_codes"
+#
+#
+## Database status metrics:
+#
+# Instance "dbs"
+#
+# Type "gauge"
+#
+#
+# Type "counter"
+#
+#
+# Type "bytes"
+#
+#
+#
+
+#
+#
+# Host "my_host"
+# 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]"
+# 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"
+#
+#
+#
+# Driver "mysql"
+# DriverOption "host" "localhost"
+# DriverOption "username" "collectd"
+# DriverOption "password" "AeXohy0O"
+# DriverOption "dbname" "custdb0"
+# #SelectDB "custdb0"
+# Query "num_of_customers"
+# #Query "..."
+# #Host "..."
+#
+#
+
+#
+# Device "/dev/hda1"
+# Device "192.168.0.2:/mnt/nfs"
+# MountPoint "/home"
+# FSType "ext3"
+# IgnoreSelected 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
+#
+
+#
+# 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
+#
+
+#
+#
+# Instance "foodir"
+# Name "*.conf"
+# MTime "-5m"
+# Size "+10k"
+# Recursive true
+# IncludeHidden false
+#
+#
+
+#
+# MCReceiveFrom "239.2.11.71" "8649"
+#
+# Type "swap"
+# TypeInstance "total"
+# DataSource "value"
+#
+#
+# Type "swap"
+# TypeInstance "free"
+# DataSource "value"
+#
+#
+
+#
+# Host "127.0.0.1"
+# Port "7634"
+#
+
+#
+# Interface "eth0"
+# IgnoreSelected false
+#
+
+#
+# Sensor "some_sensor"
+# Sensor "another_one"
+# IgnoreSelected false
+# NotifySensorAdd false
+# NotifySensorRemove true
+# NotifySensorNotPresent 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
+#
+
+#
+# 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"
+#
+
+#
+# Device "/dev/md0"
+# IgnoreSelected false
+#
+
+#
+#
+# Server "localhost"
+# Key "page_key"
+#
+# Regex "(\\d+) bytes sent"
+# ExcludeRegex ""
+# DSType CounterAdd
+# Type "ipt_octets"
+# Instance "type_instance"
+#
+#
+#
+
+#
+#
+# Host "127.0.0.1"
+# Port "11211"
+#
+#
+
+#
+# ValuesAbsolute true
+# ValuesPercentage false
+#
+
+#
+#
+# RegisterBase 1234
+# RegisterCmd ReadHolding
+# RegisterType float
+# Type gauge
+# Instance "..."
+#
+#
+#
+# Address "addr"
+# Port "1234"
+# Interval 60
+#
+#
+# Instance "foobar" # optional
+# Collect "data_name"
+#
+#
+#
+
+#
+#
+# Host "database.serv.er"
+# User "db_user"
+# Password "secret"
+# Database "db_name"
+# MasterStats true
+# ConnectTimeout 10
+# InnodbStats true
+#
+#
+#
+# Alias "squeeze"
+# Host "localhost"
+# Socket "/var/run/mysql/mysqld.sock"
+# SlaveStats true
+# SlaveNotifications 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
+#
+
+#
+# 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"
+#
+
+#
+# Host "localhost"
+# Port 123
+# ReverseLookups false
+# IncludeUnitID true
+#
+
+#
+# UPS "upsname@hostname:port"
+#
+
+#
+# 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"
+#
+#
+#
+# ConnectID "db01"
+# Username "oracle"
+# Password "secret"
+# Query "out_of_stock"
+#
+#
+
+#
+# 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"
+# 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
+#
+#
+# Host "hostname"
+# Port "5432"
+# User "username"
+# Password "secret"
+# SSLMode "prefer"
+# KRBSrvName "kerberos_service_name"
+# Query magic
+#
+#
+# Interval 60
+# Service "service_name"
+# Query backend # 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"
+#
+
+#
+# Process "name"
+#
+
+#
+# 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"
+# Timeout 2000
+#
+#
+
+#
+#
+# Host "router.example.com"
+# Port "8728"
+# User "admin"
+# Password "dozaiTh4"
+# CollectInterface true
+# CollectRegistrationTable true
+# CollectCPULoad true
+# CollectMemory true
+# CollectDF true
+# CollectDisk 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
+#
+
+#
+#
+# Type "voltage"
+# Table false
+# Instance "input_line1"
+# Values "SNMPv2-SMI::enterprises.6050.5.4.1.1.2.1"
+#
+#
+# Type "users"
+# Table false
+# Instance ""
+# Values "HOST-RESOURCES-MIB::hrSystemNumUsers.0"
+#
+#
+# Type "if_octets"
+# Table true
+# Instance "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
+#
+#
+# Address "192.168.0.42"
+# Version 2
+# Community "another_string"
+# Collect "std_traffic" "hr_users"
+#
+#
+# Address "192.168.0.3"
+# Version 1
+# Community "more_communities"
+# Collect "powerplus_voltge_input"
+# Interval 300
+#
+#
+
+#
+# Host "::"
+# Port "8125"
+# DeleteCounters false
+# DeleteTimers false
+# DeleteGauges false
+# DeleteSets 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
+#
+
+#
+#
+# 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"
+#
+#
+#
+
+#
+#
+# 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 ask you to
+## - You want to disable the collection of some data
+## - Your (intel) CPU is not supported (yet) by the module
+## - The module generate 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"
+#
+
+#
+# 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 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
+#
+#
+
+#
+# Connection "xen:///"
+# RefreshInterval 60
+# Domain "name"
+# BlockDevice "name:device"
+# InterfaceDevice "name:device"
+# IgnoreSelected false
+# HostnameFormat name
+# InterfaceFormat name
+# PluginInstanceFormat name
+#
+
+#
+# Verbose false
+#
+
+#
+#
+# Host "localhost"
+# Port "2003"
+# Protocol "tcp"
+# LogSendErrors true
+# Prefix "collectd"
+# Postfix "collectd"
+# StoreRates true
+# AlwaysAppendDS false
+# EscapeCharacter "_"
+#
+#
+
+#
+#
+# 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"
+# SSLVersion "TLSv1"
+# Format "Command"
+# StoreRates false
+# BufferSize 4096
+# LowSpeedLimit 0
+# Timeout 0
+#
+#
+
+#
+# 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"
+#
+#
+
+#
+#
+# Host "localhost"
+# Port "6379"
+# Timeout 1000
+#
+#
+
+#
+#
+# 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"
+#
+
+#
+#
+# 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
+#
+#
+#
+Include "/etc/collectd.d"
diff --git a/templates/df.conf.j2 b/templates/df.conf.j2
new file mode 100644
index 0000000..c468343
--- /dev/null
+++ b/templates/df.conf.j2
@@ -0,0 +1,23 @@
+LoadPlugin df
+
+{% if collectd_df_device is defined %}
+{% for device in collectd_df_device|from_json %}
+ Device "{{ device }}"
+{% endfor %}
+{% endif %}
+{% if collectd_df_mountpoint is defined %}
+{% for mountpoint in collectd_df_mountpoint|from_json %}
+ MountPoint "{{ mountpoint }}"
+{% endfor %}
+{% endif %}
+{% if collectd_df_fs_type is defined %}
+{% for fs in collectd_df_fs_type|from_json %}
+ FSType "{{ fs|default('ext4') }}"
+{% endfor %}
+{% endif %}
+{% if collectd_df_IgnoreSelected is defined %} IgnoreSelected "{{ collectd_df_IgnoreSelected|default('false') }}"{% endif %}
+{% if collectd_df_ReportByDevice is defined %} ReportByDevice "{{ collectd_df_ReportByDevice|default('false') }}"{% endif %}
+{% if collectd_df_ReportInodes is defined %} ReportInodes "{{ collectd_df_ReportInodes|default('false') }}"{% endif %}
+{% if collectd_df_ValuesAbsolute is defined %} ValuesAbsolute "{{ collectd_df_ValuesAbsolute|default('true') }}"{% endif %}
+{% if collectd_df_ValuesPercentage is defined %} ValuesPercentage "{{ collectd_df_ValuesPercentage|default('false') }}"{% endif %}
+
diff --git a/templates/librato.conf.j2 b/templates/librato.conf.5.4.j2
similarity index 100%
rename from templates/librato.conf.j2
rename to templates/librato.conf.5.4.j2
diff --git a/templates/librato.conf.5.5.j2 b/templates/librato.conf.5.5.j2
new file mode 100644
index 0000000..d8717ce
--- /dev/null
+++ b/templates/librato.conf.5.5.j2
@@ -0,0 +1,9 @@
+LoadPlugin write_http
+
+
+ URL "https://collectd.librato.com/v1/measurements"
+ User "{{ librato_email }}"
+ Password "{{ librato_token }}"
+ Format "JSON"
+
+