summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormh <mh@immerda.ch>2013-06-13 00:38:22 +0200
committermh <mh@immerda.ch>2013-06-13 00:38:22 +0200
commit2d11bc0ba8a636cee4adeb73689392a077a76006 (patch)
tree5990d356a1f1be9277507b7e51c28ea19ce5ec39
parentded0a8765946706262ec3c746864df4d09638292 (diff)
parenta814cdad2b1ff47066df4c8b5d948f22210c0832 (diff)
Merge branch 'master' of git.puppet.immerda.ch:module-nagios
-rw-r--r--README5
-rw-r--r--README.pnp4nagios65
-rw-r--r--files/munin/nagios_hosts10
-rw-r--r--files/munin/nagios_perf8
-rw-r--r--files/munin/nagios_svc12
-rw-r--r--files/pnp4nagios/action.gifbin0 -> 1536 bytes
-rw-r--r--files/pnp4nagios/apache.conf30
-rw-r--r--files/pnp4nagios/npcd8
-rw-r--r--files/pnp4nagios/pnp4nagios-popup-templates.cfg31
-rw-r--r--files/pnp4nagios/pnp4nagios-templates.cfg33
-rw-r--r--files/pnp4nagios/status-header.ssi8
-rw-r--r--images/nagiosgraph.gifbin0 -> 1252 bytes
-rw-r--r--manifests/defaults/pnp4nagios.pp10
-rw-r--r--manifests/headless.pp5
-rw-r--r--manifests/munin.pp41
-rw-r--r--manifests/pnp4nagios.pp63
-rw-r--r--manifests/pnp4nagios/popup.pp19
17 files changed, 312 insertions, 36 deletions
diff --git a/README b/README
index 8fcd85d..0949071 100644
--- a/README
+++ b/README
@@ -193,6 +193,11 @@ For the irc_bot class:
'notice' if you would prefer them to be sent as IRC
NOTICE messages.
+PNP4Nagios integration
+======================
+
+For PNP4Nagios integration information, please see README.pnp4nagios
+
Examples
========
diff --git a/README.pnp4nagios b/README.pnp4nagios
new file mode 100644
index 0000000..dd40702
--- /dev/null
+++ b/README.pnp4nagios
@@ -0,0 +1,65 @@
+PNP4Nagios integration
+======================
+
+As of 2012/01 debian packages for pnp4nagios are availible from lenny-backports on.
+
+See http://docs.pnp4nagios.org/pnp-0.6/start for installation notes.
+
+Integration in the nagios/icinga webinterface is configured by including either
+the nagios::pnp4nagios or the nagios::pnp4nagios::popup class, the later one
+includes fancy popups when you hoover over the extra service action image. For
+hosts you need to use the host-pnp definition, for services the srv-pnp def.
+i.e.
+
+ @@nagios_service { "ping_example_node":
+ use => "generic-service,srv-pnp",
+ ...
+
+ nagios_host { 'example_node':
+ use => 'generic-host,host-pnp',
+ ...
+
+In the default config files the "Bulk Mode with NPCD" is used
+(see http://docs.pnp4nagios.org/en/pnp-0.6/config for more infos about the different
+modes).
+
+Include the nagios::pnp4nagios::popup class for fancy popups when you hoover over
+the extra service action image.
+
+
+Please include this in your nagios.cfg:
+
+process_performance_data=1
+
+#http://docs.pnp4nagios.org/en/pnp-0.6/config#bulk_mode_mit_npcd
+#
+# Service Performance-Data
+#
+service_perfdata_file=/var/lib/nagios3/service-perfdata
+service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
+service_perfdata_file_mode=a
+service_perfdata_file_processing_interval=15
+service_perfdata_file_processing_command=process-service-perfdata-file-pnp4nagios-bulk-npcd
+
+#
+# Host Performance-Data
+#
+host_perfdata_file=/var/lib/nagios3/host-perfdata
+host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
+host_perfdata_file_mode=a
+host_perfdata_file_processing_interval=15
+host_perfdata_file_processing_command=process-host-perfdata-file-pnp4nagios-bulk-npcd
+
+
+For hosts you need to use the host-pnp definition, for services the srv-pnp def.
+i.e.
+
+ @@nagios_service { "ping_example_node":
+ use => "generic-service,srv-pnp",
+ ...
+
+ nagios_host { 'example_node':
+ use => 'generic-host,host-pnp',
+ ...
+
+
diff --git a/files/munin/nagios_hosts b/files/munin/nagios_hosts
index fa8f9dc..3fa00f1 100644
--- a/files/munin/nagios_hosts
+++ b/files/munin/nagios_hosts
@@ -1,5 +1,9 @@
#!/bin/bash
+if [ -z "$nag_stats_binary" ]; then
+ nag_stats_binary=/usr/sbin/nagios3stats
+fi
+
if [ "$1" = "config" ]; then
echo 'graph_title Nagios host stats'
echo 'graph_args --base 1000 -l 0'
@@ -20,9 +24,9 @@ if [ "$1" = "config" ]; then
fi
echo -n 'up.value '
-/usr/local/sbin/nagiostats --mrtg --data NUMHSTUP
+$nag_stats_binary --mrtg --data NUMHSTUP
echo -n 'down.value '
-/usr/local/sbin/nagiostats --mrtg --data NUMHSTDOWN
+$nag_stats_binary --mrtg --data NUMHSTDOWN
echo -n 'unr.value '
-/usr/local/sbin/nagiostats --mrtg --data NUMHSTUNR
+$nag_stats_binary --mrtg --data NUMHSTUNR
diff --git a/files/munin/nagios_perf b/files/munin/nagios_perf
index 35fd9cd..609d62f 100644
--- a/files/munin/nagios_perf
+++ b/files/munin/nagios_perf
@@ -1,5 +1,9 @@
#!/bin/bash
+if [ -z "$nag_stats_binary" ]; then
+ nag_stats_binary=/usr/sbin/nagios3stats
+fi
+
NAME=$(basename $0)
TYPE=${NAME##nagios_perf_}
@@ -30,5 +34,5 @@ if [ "$1" = "config" ]; then
exit 0
fi
-echo "act_lat_$TYPE_ABBR.value " $(/usr/local/sbin/nagiostats --mrtg --data AVGACT${TYPE_ABBR}LAT)
-echo "act_ext_$TYPE_ABBR.value " $(/usr/local/sbin/nagiostats --mrtg --data AVGACT${TYPE_ABBR}EXT)
+echo "act_lat_$TYPE_ABBR.value " $($nag_stats_binary --mrtg --data AVGACT${TYPE_ABBR}LAT)
+echo "act_ext_$TYPE_ABBR.value " $($nag_stats_binary --mrtg --data AVGACT${TYPE_ABBR}EXT)
diff --git a/files/munin/nagios_svc b/files/munin/nagios_svc
index 0a9a9bf..97c8bfc 100644
--- a/files/munin/nagios_svc
+++ b/files/munin/nagios_svc
@@ -1,5 +1,9 @@
#!/bin/bash
+if [ -z "$nag_stats_binary" ]; then
+ nag_stats_binary=/usr/sbin/nagios3stats
+fi
+
if [ "$1" = "config" ]; then
echo 'graph_title Nagios service stats'
echo 'graph_args --base 1000 -l 0'
@@ -23,11 +27,11 @@ if [ "$1" = "config" ]; then
fi
echo -n 'ok.value '
-/usr/local/sbin/nagiostats --mrtg --data NUMSVCOK
+$nag_stats_binary --mrtg --data NUMSVCOK
echo -n 'warn.value '
-/usr/local/sbin/nagiostats --mrtg --data NUMSVCWARN
+$nag_stats_binary --mrtg --data NUMSVCWARN
echo -n 'crit.value '
-/usr/local/sbin/nagiostats --mrtg --data NUMSVCCRIT
+$nag_stats_binary --mrtg --data NUMSVCCRIT
echo -n 'unkn.value '
-/usr/local/sbin/nagiostats --mrtg --data NUMSVCUNKN
+$nag_stats_binary --mrtg --data NUMSVCUNKN
diff --git a/files/pnp4nagios/action.gif b/files/pnp4nagios/action.gif
new file mode 100644
index 0000000..96571a4
--- /dev/null
+++ b/files/pnp4nagios/action.gif
Binary files differ
diff --git a/files/pnp4nagios/apache.conf b/files/pnp4nagios/apache.conf
new file mode 100644
index 0000000..8f66756
--- /dev/null
+++ b/files/pnp4nagios/apache.conf
@@ -0,0 +1,30 @@
+# SAMPLE CONFIG SNIPPETS FOR APACHE WEB SERVER
+
+Alias /pnp4nagios "/usr/share/pnp4nagios/html"
+
+<Directory "/usr/share/pnp4nagios/html">
+ AllowOverride None
+ Order allow,deny
+ Allow from all
+ #
+ # Use the same value as defined in nagios.conf
+ #
+ AuthName "Nagios Access"
+ AuthType Basic
+ AuthUserFile /etc/nagios3/htpasswd.users
+ Require valid-user
+ <IfModule mod_rewrite.c>
+ # Turn on URL rewriting
+ RewriteEngine On
+ Options FollowSymLinks
+ # Installation directory
+ RewriteBase /pnp4nagios/
+ # Protect application and system files from being viewed
+ RewriteRule ^(application|modules|system) - [F,L]
+ # Allow any files or directories that exist to be displayed directly
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteCond %{REQUEST_FILENAME} !-d
+ # Rewrite all other URLs to index.php/URL
+ RewriteRule .* index.php/$0 [PT,L]
+ </IfModule>
+</Directory>
diff --git a/files/pnp4nagios/npcd b/files/pnp4nagios/npcd
new file mode 100644
index 0000000..64b3d4d
--- /dev/null
+++ b/files/pnp4nagios/npcd
@@ -0,0 +1,8 @@
+# Default settings for the NPCD init script.
+
+# Should NPCD be started? ("yes" to enable)
+RUN="yes"
+
+# Additional options that are passed to the daemon.
+DAEMON_OPTS="-d -f /etc/pnp4nagios/npcd.cfg"
+
diff --git a/files/pnp4nagios/pnp4nagios-popup-templates.cfg b/files/pnp4nagios/pnp4nagios-popup-templates.cfg
new file mode 100644
index 0000000..de17d84
--- /dev/null
+++ b/files/pnp4nagios/pnp4nagios-popup-templates.cfg
@@ -0,0 +1,31 @@
+# http://docs.pnp4nagios.org/de/pnp-0.6/webfe
+
+define host {
+ name host-pnp
+ action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
+ register 0
+}
+
+define service {
+ name srv-pnp
+ action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
+ register 0
+}
+
+# templates for explicit use, i.e.
+# use => 'generic-host-pnp'
+
+define host {
+ name generic-host-pnp
+ use generic-host,host-pnp
+# action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
+ register 0
+}
+
+define service {
+ name generic-service-pnp
+ use generic-service,srv-pnp
+# action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
+ register 0
+}
+
diff --git a/files/pnp4nagios/pnp4nagios-templates.cfg b/files/pnp4nagios/pnp4nagios-templates.cfg
new file mode 100644
index 0000000..64c5186
--- /dev/null
+++ b/files/pnp4nagios/pnp4nagios-templates.cfg
@@ -0,0 +1,33 @@
+# http://docs.pnp4nagios.org/de/pnp-0.6/webfe
+
+# templates for additional use, i.e.
+# use => 'generic-host,host-pnp'
+define host {
+ name host-pnp
+ action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
+ register 0
+}
+
+define service {
+ name srv-pnp
+ action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
+ register 0
+}
+
+# templates for explicit use, i.e.
+# use => 'generic-host-pnp'
+
+define host {
+ name generic-host-pnp
+ use generic-host,host-pnp
+# action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
+ register 0
+}
+
+define service {
+ name generic-service-pnp
+ use generic-service,srv-pnp
+# action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
+ register 0
+}
+
diff --git a/files/pnp4nagios/status-header.ssi b/files/pnp4nagios/status-header.ssi
new file mode 100644
index 0000000..472be3a
--- /dev/null
+++ b/files/pnp4nagios/status-header.ssi
@@ -0,0 +1,8 @@
+<script src="/pnp4nagios/media/js/jquery-min.js" type="text/javascript"></script>
+<script src="/pnp4nagios/media/js/jquery.cluetip.js" type="text/javascript"></script>
+<script type="text/javascript">
+$(document).ready(function() {
+ $('a.tips').cluetip({ajaxCache: false, dropShadow: false,showTitle: false });
+});
+</script>
+
diff --git a/images/nagiosgraph.gif b/images/nagiosgraph.gif
new file mode 100644
index 0000000..068082a
--- /dev/null
+++ b/images/nagiosgraph.gif
Binary files differ
diff --git a/manifests/defaults/pnp4nagios.pp b/manifests/defaults/pnp4nagios.pp
new file mode 100644
index 0000000..662d13b
--- /dev/null
+++ b/manifests/defaults/pnp4nagios.pp
@@ -0,0 +1,10 @@
+class nagios::defaults::pnp4nagios {
+ # performance data cmds
+ # http://docs.pnp4nagios.org/de/pnp-0.6/config#bulk_mode_mit_npcd
+ nagios_command {
+ 'process-service-perfdata-file-pnp4nagios-bulk-npcd':
+ command_line => '/bin/mv /var/lib/nagios3/service-perfdata /var/spool/pnp4nagios/npcd/service-perfdata.$TIMET$';
+ 'process-host-perfdata-file-pnp4nagios-bulk-npcd':
+ command_line => '/bin/mv /var/lib/nagios3/host-perfdata /var/spool/pnp4nagios/npcd/host-perfdata.$TIMET$'
+ }
+}
diff --git a/manifests/headless.pp b/manifests/headless.pp
index cccfce7..ba8af8f 100644
--- a/manifests/headless.pp
+++ b/manifests/headless.pp
@@ -1,4 +1,5 @@
class nagios::headless {
- $nagios_httpd = 'absent'
- include nagios
+ class { 'nagios':
+ httpd => 'absent',
+ }
}
diff --git a/manifests/munin.pp b/manifests/munin.pp
index 92a389f..dc5cc4c 100644
--- a/manifests/munin.pp
+++ b/manifests/munin.pp
@@ -1,28 +1,19 @@
-class nagios::munin inherits munin::plugins::base {
+class nagios::munin {
+ include munin::plugins::base
- munin::plugin::deploy {
- nagios_hosts:
- source => 'nagios/munin/nagios_hosts',
- config => 'user root';
- nagios_svc:
- source => 'nagios/munin/nagios_svc',
- config => 'user root';
- nagios_perf_hosts:
- source => 'nagios/munin/nagios_perf',
- config => 'user root';
- nagios_perf_svc:
- source => 'nagios/munin/nagios_perf',
- config => 'user root';
- }
-
- exec { 'munin_nagios2stats_link':
- command => 'ln -s /usr/sbin/nagios2stats /usr/local/sbin/nagiostats',
- onlyif => ["test ! -e /usr/local/sbin/nagiostats", "test -e /usr/sbin/nagios2stats"],
- }
-
- exec { 'munin_nagios3stats_link':
- command => 'ln -s /usr/sbin/nagios3stats /usr/local/sbin/nagiostats',
- onlyif => ["test ! -e /usr/local/sbin/nagiostats", "test -e /usr/sbin/nagios3stats"],
- }
+ munin::plugin::deploy {
+ 'nagios_hosts':
+ source => 'nagios/munin/nagios_hosts',
+ config => 'user nagios';
+ 'nagios_svc':
+ source => 'nagios/munin/nagios_svc',
+ config => 'user nagios';
+ 'nagios_perf_hosts':
+ source => 'nagios/munin/nagios_perf',
+ config => 'user nagios';
+ 'nagios_perf_svc':
+ source => 'nagios/munin/nagios_perf',
+ config => 'user nagios';
+ }
}
diff --git a/manifests/pnp4nagios.pp b/manifests/pnp4nagios.pp
new file mode 100644
index 0000000..5ade74f
--- /dev/null
+++ b/manifests/pnp4nagios.pp
@@ -0,0 +1,63 @@
+class nagios::pnp4nagios {
+ include nagios::defaults::pnp4nagios
+
+ package { 'pnp4nagios':
+ ensure => installed }
+
+
+ # unfortunatly we can't use the nagios_host and nagios_service
+ # definition to define templates, so we need to copy a file here.
+ # see http://projects.reductivelabs.com/issues/1180 for this limitation
+
+ file { 'pnp4nagios-templates.cfg':
+ path => "${nagios::defaults::vars::int_cfgdir}/conf.d/pnp4nagios-templates.cfg",
+ source => [ 'puppet:///modules/site_nagios/pnp4nagios/pnp4nagios-templates.cfg',
+ 'puppet:///modules/nagios/pnp4nagios/pnp4nagios-templates.cfg' ],
+ mode => '0644',
+ owner => root,
+ group => root,
+ notify => Service['nagios'],
+ }
+
+ file { 'apache.conf':
+ path => '/etc/pnp4nagios/apache.conf',
+ source => [ 'puppet:///modules/site_nagios/pnp4nagios/apache.conf',
+ 'puppet:///modules/nagios/pnp4nagios/apache.conf' ],
+ mode => '0644',
+ owner => root,
+ group => root,
+ notify => Service['apache'],
+ require => Package['pnp4nagios'],
+ }
+
+ # run npcd as daemon
+
+ file { '/etc/default/npcd':
+ path => '/etc/default/npcd',
+ source => [ 'puppet:///modules/site_nagios/pnp4nagios/npcd',
+ 'puppet:///modules/nagios/pnp4nagios/npcd' ],
+ mode => '0644',
+ owner => root,
+ group => root,
+ notify => Service['npcd'];
+ }
+
+ service { 'npcd':
+ ensure => running,
+ enable => true,
+ hasstatus => true,
+ require => Package['pnp4nagios'],
+ }
+
+ # modify action.gif
+
+ file { '/usr/share/nagios3/htdocs/images/action.gif':
+ path => '/usr/share/nagios3/htdocs/images/action.gif',
+ source => [ 'puppet:///modules/site_nagios/pnp4nagios/action.gif',
+ 'puppet:///modules/nagios/pnp4nagios/action.gif' ],
+ mode => '0644',
+ owner => root,
+ group => root,
+ notify => Service['nagios'];
+ }
+}
diff --git a/manifests/pnp4nagios/popup.pp b/manifests/pnp4nagios/popup.pp
new file mode 100644
index 0000000..0dc04b0
--- /dev/null
+++ b/manifests/pnp4nagios/popup.pp
@@ -0,0 +1,19 @@
+class nagios::pnp4nagios::popup inherits nagios::pnp4nagios {
+ File['pnp4nagios-templates.cfg']{
+ source => [ 'puppet:///modules/site_nagios/pnp4nagios/pnp4nagios-popup-templates.cfg',
+ 'puppet:///modules/nagios/pnp4nagios/pnp4nagios-popup-templates.cfg' ],
+ }
+
+ file { '/usr/share/nagios3/htdocs/ssi':
+ ensure => directory }
+
+ file { 'status-header.ssi':
+ path => '/usr/share/nagios3/htdocs/ssi/status-header.ssi',
+ source => [ 'puppet:///modules/site_nagios/pnp4nagios/status-header.ssi',
+ 'puppet:///modules/nagios/pnp4nagios/status-header.ssi' ],
+ mode => '0644',
+ owner => root,
+ group => root,
+ notify => Service['nagios'],
+ }
+}