From ca916b9d1cc11db1288d568e316380b90219e36b Mon Sep 17 00:00:00 2001 From: Dean Wilson Date: Mon, 16 May 2016 15:31:33 +0100 Subject: [PATCH 1/4] Add external collectd plugin. This functionality is bundled in collect 5.5 but we have no current upgrade plans or path so we'll use this for now --- .../files/usr/lib/collectd/file_handles.sh | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 modules/collectd/files/usr/lib/collectd/file_handles.sh diff --git a/modules/collectd/files/usr/lib/collectd/file_handles.sh b/modules/collectd/files/usr/lib/collectd/file_handles.sh new file mode 100644 index 0000000000..a20a5b2acd --- /dev/null +++ b/modules/collectd/files/usr/lib/collectd/file_handles.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# Author: Phil Dufault (phil@dufault.info) +# https://raw.githubusercontent.com/pdufault/collectd-exec-file_handles/master/file_handles.sh +# Commit 76e100799ae4d1cc231d0d343bd930f28d8d90c5 +# Date: April 2nd, 2014 +# Use: collectd exec script to collect system file handle metrics + +HOSTNAME="${COLLECTD_HOSTNAME:-`hostname -f`}" +INTERVAL="${COLLECTD_INTERVAL:-10}" + +while sleep "$INTERVAL"; do + + # Historically, the three values in file-nr denoted the number of + # * allocated file handles + # * the number of allocated but unused file handles + # * the maximum number of file handles. + # Linux 2.6 always reports 0 as the number of free file handles -- this is not an error, it just means that the number of allocated file handles exactly matches the number of used file handles. + + # Grab the metrics + file_nr=($(cat /proc/sys/fs/file-nr)) + allocated=${file_nr[0]} + allunused=${file_nr[1]} + max=${file_nr[2]} + + # Output time + echo "PUTVAL $HOSTNAME/system-file_handles/gauge-file_handles_used interval=$INTERVAL N:$allocated" + echo "PUTVAL $HOSTNAME/system-file_handles/gauge-file_handles_allocatedunused interval=$INTERVAL N:$allunused" + echo "PUTVAL $HOSTNAME/system-file_handles/gauge-file_handles_max interval=$INTERVAL N:$max" + + # putval format + # /-/- + +done From 4d33c965abeccabe1b807b255de824f4593ff53e Mon Sep 17 00:00:00 2001 From: Dean Wilson Date: Mon, 16 May 2016 15:49:28 +0100 Subject: [PATCH 2/4] Puppet deploy a collectd file handle plugin --- .../collectd/manifests/plugin/file_handles.pp | 22 +++++++++++++++++++ .../etc/collectd/conf.d/file_handles.conf.erb | 3 +++ 2 files changed, 25 insertions(+) create mode 100644 modules/collectd/manifests/plugin/file_handles.pp create mode 100644 modules/collectd/templates/etc/collectd/conf.d/file_handles.conf.erb diff --git a/modules/collectd/manifests/plugin/file_handles.pp b/modules/collectd/manifests/plugin/file_handles.pp new file mode 100644 index 0000000000..158c050f4c --- /dev/null +++ b/modules/collectd/manifests/plugin/file_handles.pp @@ -0,0 +1,22 @@ +# == Class: collectd::plugin::file_handles +# +# Monitors the number of file handles in use on a system +# +class collectd::plugin::file_handles( +) { + + @file { '/usr/lib/collectd/file_handles.sh': + ensure => 'present', + mode => '0755', + owner => 'root', + group => 'root', + content => file('collectd/usr/lib/collectd/file_handles.sh'), + tag => 'collectd::plugin', + } + + @collectd::plugin { 'file_handles': + content => template('collectd/etc/collectd/conf.d/file_handles.conf.erb'), + require => File['/usr/lib/collectd/file_handles.sh'], + } + +} diff --git a/modules/collectd/templates/etc/collectd/conf.d/file_handles.conf.erb b/modules/collectd/templates/etc/collectd/conf.d/file_handles.conf.erb new file mode 100644 index 0000000000..33784b57dc --- /dev/null +++ b/modules/collectd/templates/etc/collectd/conf.d/file_handles.conf.erb @@ -0,0 +1,3 @@ + + Exec nobody "/usr/lib/collectd/file_handles.sh" + From 14d5416a3397683c6b99e15ed64122555b47103c Mon Sep 17 00:00:00 2001 From: Dean Wilson Date: Mon, 16 May 2016 16:44:21 +0100 Subject: [PATCH 3/4] Include the plugin on all nodes --- modules/collectd/manifests/config.pp | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/collectd/manifests/config.pp b/modules/collectd/manifests/config.pp index 0922b9b8b6..567b1aca6d 100644 --- a/modules/collectd/manifests/config.pp +++ b/modules/collectd/manifests/config.pp @@ -36,6 +36,7 @@ source => 'puppet:///modules/collectd/etc/collectd/conf.d/network.conf.client', } + include ::collectd::plugin::file_handles # Always collect basic processlist info. include ::collectd::plugin::processes include ::collectd::plugin::tcpconns From 01a7d54b3edf9df447db97febf39d0270d7b2816 Mon Sep 17 00:00:00 2001 From: Dean Wilson Date: Mon, 16 May 2016 17:21:31 +0100 Subject: [PATCH 4/4] Load the plugin --- .../templates/etc/collectd/conf.d/file_handles.conf.erb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/collectd/templates/etc/collectd/conf.d/file_handles.conf.erb b/modules/collectd/templates/etc/collectd/conf.d/file_handles.conf.erb index 33784b57dc..38ca60d308 100644 --- a/modules/collectd/templates/etc/collectd/conf.d/file_handles.conf.erb +++ b/modules/collectd/templates/etc/collectd/conf.d/file_handles.conf.erb @@ -1,3 +1,5 @@ +LoadPlugin exec + Exec nobody "/usr/lib/collectd/file_handles.sh"