diff options
author | mh <mh@immerda.ch> | 2013-06-13 00:38:22 +0200 |
---|---|---|
committer | mh <mh@immerda.ch> | 2013-06-13 00:38:22 +0200 |
commit | 2d11bc0ba8a636cee4adeb73689392a077a76006 (patch) | |
tree | 5990d356a1f1be9277507b7e51c28ea19ce5ec39 | |
parent | ded0a8765946706262ec3c746864df4d09638292 (diff) | |
parent | a814cdad2b1ff47066df4c8b5d948f22210c0832 (diff) |
Merge branch 'master' of git.puppet.immerda.ch:module-nagios
-rw-r--r-- | README | 5 | ||||
-rw-r--r-- | README.pnp4nagios | 65 | ||||
-rw-r--r-- | files/munin/nagios_hosts | 10 | ||||
-rw-r--r-- | files/munin/nagios_perf | 8 | ||||
-rw-r--r-- | files/munin/nagios_svc | 12 | ||||
-rw-r--r-- | files/pnp4nagios/action.gif | bin | 0 -> 1536 bytes | |||
-rw-r--r-- | files/pnp4nagios/apache.conf | 30 | ||||
-rw-r--r-- | files/pnp4nagios/npcd | 8 | ||||
-rw-r--r-- | files/pnp4nagios/pnp4nagios-popup-templates.cfg | 31 | ||||
-rw-r--r-- | files/pnp4nagios/pnp4nagios-templates.cfg | 33 | ||||
-rw-r--r-- | files/pnp4nagios/status-header.ssi | 8 | ||||
-rw-r--r-- | images/nagiosgraph.gif | bin | 0 -> 1252 bytes | |||
-rw-r--r-- | manifests/defaults/pnp4nagios.pp | 10 | ||||
-rw-r--r-- | manifests/headless.pp | 5 | ||||
-rw-r--r-- | manifests/munin.pp | 41 | ||||
-rw-r--r-- | manifests/pnp4nagios.pp | 63 | ||||
-rw-r--r-- | manifests/pnp4nagios/popup.pp | 19 |
17 files changed, 312 insertions, 36 deletions
@@ -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 Binary files differnew file mode 100644 index 0000000..96571a4 --- /dev/null +++ b/files/pnp4nagios/action.gif 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 Binary files differnew file mode 100644 index 0000000..068082a --- /dev/null +++ b/images/nagiosgraph.gif 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'], + } +} |