summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormh <mh@immerda.ch>2008-04-24 13:26:14 +0000
committermh <mh@immerda.ch>2008-04-24 13:26:14 +0000
commit20f5f7d8c26c9272ef302606a6d71ef1b943919a (patch)
treefddac14151d5157edc5dd6c1f51f3f82e834479e
parent470e23c19625c8aa6e9e68085d284fa8be01bc3e (diff)
merged with puzzle upstream
-rwxr-xr-xfiles/plugins/nagios_hosts28
-rwxr-xr-xfiles/plugins/nagios_perf_35
-rwxr-xr-xfiles/plugins/nagios_svc33
-rw-r--r--files/plugins/xen_traffic_all63
-rw-r--r--manifests/client.pp168
-rw-r--r--manifests/host.pp4
-rw-r--r--manifests/init.pp4
-rw-r--r--manifests/plugin.pp27
l---------templates/munin-node.conf.Ubuntu.feisty (renamed from templates/munin-node.conf.Debian.gutsy)0
l---------templates/munin-node.conf.Ubuntu.gutsy1
l---------templates/munin-node.conf.Ubuntu.hardy1
11 files changed, 237 insertions, 127 deletions
diff --git a/files/plugins/nagios_hosts b/files/plugins/nagios_hosts
new file mode 100755
index 0000000..04fe8ed
--- /dev/null
+++ b/files/plugins/nagios_hosts
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+if [ "$1" = "config" ]; then
+ echo 'graph_title Nagios host stats'
+ echo 'graph_args --base 1000 -l 0'
+ echo 'graph_vlabel hosts'
+ echo 'graph_category nagios'
+ echo 'graph_info The number of hosts checked by nagios'
+ echo 'up.label up'
+ echo 'up.draw AREA'
+ echo 'up.info number of hosts UP'
+ echo 'down.label down'
+ echo 'down.draw STACK'
+ echo 'down.info number of hosts DOWN'
+ echo 'unr.label unr'
+ echo 'unr.draw STACK'
+ echo 'unr.info number of hosts UNREACHABLE'
+
+ exit 0
+fi
+
+echo -n 'up.value '
+nagios2stats --mrtg --data NUMHSTUP
+echo -n 'down.value '
+nagios2stats --mrtg --data NUMHSTDOWN
+echo -n 'unr.value '
+nagios2stats --mrtg --data NUMHSTUNR
+
diff --git a/files/plugins/nagios_perf_ b/files/plugins/nagios_perf_
new file mode 100755
index 0000000..f819def
--- /dev/null
+++ b/files/plugins/nagios_perf_
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+NAME=$(basename $0)
+
+TYPE=${NAME##nagios_perf_}
+
+[ "x$TYPE" = 'xhosts' ] && TYPE_ABBR=HST
+[ "x$TYPE" = 'xsvc' ] && TYPE_ABBR=SVC
+[ -z "$TYPE_ABBR" ] && echo "unknown type $TYPE" >&2 && exit 1
+
+if [ "$1" = "config" ]; then
+ echo "graph_title Nagios $TYPE performance stats"
+ echo "graph_args --base 1000"
+ echo "graph_vlabel seconds"
+ echo "graph_category nagios"
+ echo "graph_info Check performance statistics"
+
+ echo "act_lat_$TYPE_ABBR.label act lat"
+ echo "act_lat_$TYPE_ABBR.type GAUGE"
+ echo "act_lat_$TYPE_ABBR.draw AREA"
+ echo "act_lat_$TYPE_ABBR.cdef act_lat_$TYPE_ABBR,1000,/"
+ echo "act_lat_$TYPE_ABBR.info average latency of active checks over the last 5 minutes"
+
+ echo "act_ext_$TYPE_ABBR.label act ext"
+ echo "act_ext_$TYPE_ABBR.type GAUGE"
+ echo "act_ext_$TYPE_ABBR.draw LINE1"
+ echo "act_ext_$TYPE_ABBR.cdef act_ext_$TYPE_ABBR,1000,/"
+ echo "act_ext_$TYPE_ABBR.info average execution time of active checks over the last 5 minutes"
+
+ exit 0
+fi
+
+echo "act_lat_$TYPE_ABBR.value " $(nagios2stats --mrtg --data AVGACT${TYPE_ABBR}LAT)
+echo "act_ext_$TYPE_ABBR.value " $(nagios2stats --mrtg --data AVGACT${TYPE_ABBR}EXT)
+
diff --git a/files/plugins/nagios_svc b/files/plugins/nagios_svc
new file mode 100755
index 0000000..3938999
--- /dev/null
+++ b/files/plugins/nagios_svc
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+if [ "$1" = "config" ]; then
+ echo 'graph_title Nagios service stats'
+ echo 'graph_args --base 1000 -l 0'
+ echo 'graph_vlabel services'
+ echo 'graph_category nagios'
+ echo 'graph_info The number of services checked by nagios'
+ echo 'ok.label ok'
+ echo 'ok.draw AREA'
+ echo 'ok.info number of services OK'
+ echo 'warn.label warn'
+ echo 'warn.draw STACK'
+ echo 'warn.info number of services WARNING'
+ echo 'crit.label crit'
+ echo 'crit.draw STACK'
+ echo 'crit.info number of services CRITICAL'
+ echo 'unkn.label unkn'
+ echo 'unkn.draw STACK'
+ echo 'unkn.info number of services UNKNOWN'
+
+ exit 0
+fi
+
+echo -n 'ok.value '
+nagios2stats --mrtg --data NUMSVCOK
+echo -n 'warn.value '
+nagios2stats --mrtg --data NUMSVCWARN
+echo -n 'crit.value '
+nagios2stats --mrtg --data NUMSVCCRIT
+echo -n 'unkn.value '
+nagios2stats --mrtg --data NUMSVCUNKN
+
diff --git a/files/plugins/xen_traffic_all b/files/plugins/xen_traffic_all
new file mode 100644
index 0000000..1216a7d
--- /dev/null
+++ b/files/plugins/xen_traffic_all
@@ -0,0 +1,63 @@
+#!/bin/sh
+# Author: mario manno <projects@manno.name>
+# Description: measure traffic for all xen hosts
+#
+#%# family=auto
+#%# capabilities=autoconf
+
+if [ "$1" = "autoconf" ]; then
+ if which xm > /dev/null ; then
+ echo yes
+ else
+ echo "no (xm not found)"
+ exit 1
+ fi
+ if [ -r /proc/net/dev ]; then
+ echo yes
+ else
+ echo "no (/proc/net/dev not found)"
+ exit 1
+ fi
+ exit 0
+fi
+
+if [ "$1" = "config" ]; then
+ echo 'graph_title Xen Traffic'
+ echo 'graph_vlabel bits received (-) / sent (+) per ${graph_period}'
+ echo 'graph_args --base 1024 -l 0'
+ echo 'graph_category xen'
+ DOMAINS=$(xm list | awk '{print $1}' | egrep -v "^(Name|Domain-0)")
+ for dom in $DOMAINS; do
+ name=$( echo $dom | sed -e's/-/_/g' )
+ #echo $name"UP.label $name"
+ #echo $name"DOWN.label $name"
+
+ echo $name'Down.label received'
+ echo $name'Down.type COUNTER'
+ echo $name'Down.graph no'
+ echo "${name}Down.cdef ${name}Down,8,*"
+ echo "${name}Up.label ${name}"
+ echo $name'Up.type COUNTER'
+ echo "${name}Up.negative ${name}Down"
+ echo "${name}Up.cdef ${name}Up,8,*"
+ done
+ exit 0
+fi
+
+DOMAINS=$(xm list | awk '{print $1}' | egrep -v "^(Name|Domain-0)")
+for dom in $DOMAINS; do
+ dev=$( xm network-list $dom |\
+ egrep "^[0-9]+" | sed 's@^.*vif/\([0-9]*\)/\([0-9]*\).*$@vif\1.\2@')
+ name=$( echo $dom | sed -e's/-/_/g' )
+ #awk -v name="$name" -v interface="$dev" -F'[: \t]+' \
+ #'{ sub(/^ */,""); if ($1 == interface) \
+ #print name"DOWN.value "$2"\n"name"UP.value "$10; }' /proc/net/dev
+ awk -v name="$name" -v interface="$dev" \
+ 'BEGIN { gsub(/\./, "\\.", interface) } \
+ $1 ~ "^" interface ":" {
+ split($0, a, /: */); $0 = a[2]; \
+ print name"Down.value " $1 "\n"name"Up.value " $9 \
+ }' \
+ /proc/net/dev
+done
+
diff --git a/manifests/client.pp b/manifests/client.pp
index 8181845..69e9f2e 100644
--- a/manifests/client.pp
+++ b/manifests/client.pp
@@ -11,47 +11,14 @@ class munin::client {
default => $munin_host
}
- case $operatingsystem {
- darwin: { include munin::client::darwin }
- debian: {
- include munin::client::debian
- include munin::plugins::debian
- }
- ubuntu: {
- info ( "Trying to configure Ubuntu's munin with Debian class" )
- include munin::client::debian
- include munin::plugins::debian
- }
- gentoo: {
- include munin::client::gentoo
- include munin::plugins::gentoo
- }
- centos: {
- include munin::client::centos
- include munin::plugins::centos
- }
- default: { fail ("Don't know how to handle munin on $operatingsystem") }
- }
-
- case $kernel {
- linux: {
- case $vserver {
- guest: { include munin::plugins::vserver }
- default: {
- include munin::plugins::linux
- }
- }
- }
- default: {
- err( "Don't know which munin plugins to install for $kernel" )
- }
- }
- case $virtual {
- physical: { include munin::plugins::physical }
- xen0: { include munin::plugins::dom0 }
- xenu: { include munin::plugins::domU }
+ case $operatingsystem {
+ darwin: { include munin::client::darwin }
+ debian: { include munin::client::debian }
+ ubuntu: { include munin::client::ubuntu }
+ centos: { include munin::client::centos }
+ gentoo: { include munin::client::gentoo }
+ default: { include munin::client::base }
}
-
}
define munin::register()
@@ -66,7 +33,7 @@ define munin::register()
@@file { "${NODESDIR}/${name}_${munin_port_real}":
ensure => present,
content => template("munin/defaultclient.erb"),
- tag => 'munin',
+ tag => 'munin',
}
}
@@ -75,12 +42,34 @@ define munin::register_snmp()
@@file { "munin_snmp_${name}": path => "${NODESDIR}/${name}",
ensure => present,
content => template("munin/snmpclient.erb"),
- tag => 'munin',
+ tag => 'munin',
}
}
-class munin::client::darwin
-{
+class munin::client::base {
+ package { "munin-node": ensure => installed }
+ service { "munin-node":
+ ensure => running,
+ hasstatus => true,
+ hasrestart => true,
+ require => Package[munin-node],
+ }
+ file {
+ "/etc/munin/":
+ ensure => directory,
+ mode => 0755, owner => root, group => 0;
+ "/etc/munin/munin-node.conf":
+ content => template("munin/munin-node.conf.$operatingsystem.$lsbdistrelease"),
+ mode => 0644, owner => root, group => 0,
+ # this has to be installed before the package, so the postinst can
+ # boot the munin-node without failure!
+ before => Package["munin-node"],
+ }
+ munin::register { $fqdn: }
+ include munin::plugins::base
+}
+
+class munin::client::darwin {
file { "/usr/share/snmp/snmpd.conf":
mode => 744,
content => template("munin/darwin_snmpd.conf.erb"),
@@ -102,95 +91,30 @@ class munin::client::darwin
munin::register_snmp { $fqdn: }
}
-class munin::client::debian
-{
- package { "munin-node": ensure => installed }
+class munin::client::debian inherits munin::client::base {
# the plugin will need that
package { "iproute": ensure => installed }
- file {
- "/etc/munin/":
- ensure => directory,
- mode => 0755, owner => root, group => 0;
- "/etc/munin/munin-node.conf":
- content => template("munin/munin-node.conf.${operatingsystem}.${lsbdistcodename}"),
- mode => 0644, owner => root, group => 0,
- # this has to be installed before the package, so the postinst can
- # boot the munin-node without failure!
- before => Package["munin-node"],
- notify => Service["munin-node"],
- }
-
- service { "munin-node":
- ensure => running,
+ Service["munin-node"]{
# sarge's munin-node init script has no status
hasstatus => $lsbdistcodename ? { sarge => false, default => true }
}
-
- munin::register { $fqdn: }
-
# workaround bug in munin_node_configure
- munin::plugin { "postfix_mailvolume": ensure => absent }
+ plugin { "postfix_mailvolume": ensure => absent }
+ include munin::plugins::debian
}
-class munin::client::gentoo
-{
- $acpi_available = "absent"
- package { 'munin-node':
- name => 'munin',
- ensure => present,
- category => $operatingsystem ? {
- gentoo => 'net-analyzer',
- default => '',
- },
- }
-
- file {
- "/etc/munin/":
- ensure => directory,
- mode => 0755, owner => root, group => 0;
- "/etc/munin/munin-node.conf":
- content => template("munin/munin-node.conf.Gentoo."),
- mode => 0644, owner => root, group => 0,
- # this has to be installed before the package, so the postinst can
- # boot the munin-node without failure!
- before => Package["munin-node"],
- # notify => Service["munin"],
- }
-
- service { "munin-node":
- ensure => running,
- }
-
- munin::register { $fqdn: }
-}
+class munin::client::ubuntu inherits munin::client::debian {}
-class munin::client::centos
-{
- package { 'munin-node':
- ensure => present,
+class munin::client::gentoo inherits munin::client::base {
+ Package['munin-node'] {
+ name => 'munin',
+ category => 'net-analyzer',
}
-
- file {
- "/etc/munin/":
- ensure => directory,
- mode => 0755, owner => root, group =>0;
- "/etc/munin/munin-node.conf":
- content => template("munin/munin-node.conf.CentOS."),
- mode => 0644, owner => root, group => 0,
- # this has to be installed before the package, so the postinst can
- # boot the munin-node without failure!
- before => Package["munin-node"],
- notify => Service["munin-node"],
- }
-
- service { "munin-node":
- ensure => running,
- }
-
- munin::register { $fqdn: }
-
+ include munin::plugins::gentoo
}
-
+class munin::client::centos inherits munin::client::base {
+ include munin::plugins::centos
+}
diff --git a/manifests/host.pp b/manifests/host.pp
index d49c5a2..8f79020 100644
--- a/manifests/host.pp
+++ b/manifests/host.pp
@@ -4,7 +4,7 @@
class munin::host
{
- package { [ "munin", "nmap"]: ensure => installed, }
+ package {"munin": ensure => installed, }
File <<| tag == 'munin' |>>
@@ -12,7 +12,7 @@ class munin::host
dir => $NODESDIR,
header => "/etc/munin/munin.conf.header",
}
-
+
file { ["/var/log/munin-update.log", "/var/log/munin-limits.log",
"/var/log/munin-graph.log", "/var/log/munin-html.log"]:
ensure => present,
diff --git a/manifests/init.pp b/manifests/init.pp
index 9c4b1de..6b6cd08 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -1,7 +1,8 @@
# munin.pp - everything a sitewide munin installation needs
# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
# See LICENSE for the full license granted to you.
-
+# adapted by Puzzle ITC - haerry+puppet(at)puzzle.ch
+#
# the port is a parameter so vservers can share IP addresses and still be happy
# Define where the individual nodes' configs are stored
@@ -16,4 +17,3 @@ import "plugin.pp"
case $operatingsystem {
debian,ubuntu: { include assert_lsbdistcodename }
}
-
diff --git a/manifests/plugin.pp b/manifests/plugin.pp
index ac25abf..6a92c56 100644
--- a/manifests/plugin.pp
+++ b/manifests/plugin.pp
@@ -93,8 +93,9 @@ define munin::remoteplugin($ensure = "present", $source, $config = '') {
}
}
define munin::plugin::deploy ($source = '', $ensure = 'present', $config = '') {
+ $plugin_src = $ensure ? { "present" => $name, default => $ensure }
$real_source = $source ? {
- '' => "munin/plugins/$name",
+ '' => "munin/plugins/$plugin_src",
default => $source
}
include munin::plugin::scriptpaths
@@ -142,6 +143,21 @@ class munin::plugins::base {
}
}
}
+ case $kernel {
+ linux: {
+ case $vserver {
+ guest: { include munin::plugins::vserver }
+ default: {
+ include munin::plugins::linux
+ }
+ }
+ }
+ }
+ case $virtual {
+ physical: { include munin::plugins::physical }
+ xen0: { include munin::plugins::dom0 }
+ xenu: { include munin::plugins::domU }
+ }
}
# handle if_ and if_err_ plugins
@@ -195,6 +211,7 @@ class munin::plugins::dom0 inherits munin::plugins::physical {
munin::plugin::deploy { "xen-cpu": config => "user root"}
munin::plugin::deploy { "xen_memory": config => "user root"}
munin::plugin::deploy { "xen_vbd": config => "user root"}
+ munin::plugin::deploy { "xen_traffic_all": config => "user root"}
}
class munin::plugins::physical inherits munin::plugins::base {
@@ -229,3 +246,11 @@ class munin::plugins::postgres inherits munin::plugins::base {
munin::plugin::deploy { "pg__connections": ensure => false }
munin::plugin::deploy { "pg__locks": ensure => false }
}
+class munin::plugins::nagios inherits munin::plugins::base {
+ munin::plugin::deploy {
+ nagios_hosts: config => 'user root';
+ nagios_svc: config => 'user root';
+ nagios_perf_hosts: ensure => nagios_perf_, config => 'user root';
+ nagios_perf_svc: ensure => nagios_perf_, config => 'user root';
+ }
+}
diff --git a/templates/munin-node.conf.Debian.gutsy b/templates/munin-node.conf.Ubuntu.feisty
index e0646b9..e0646b9 120000
--- a/templates/munin-node.conf.Debian.gutsy
+++ b/templates/munin-node.conf.Ubuntu.feisty
diff --git a/templates/munin-node.conf.Ubuntu.gutsy b/templates/munin-node.conf.Ubuntu.gutsy
new file mode 120000
index 0000000..e0646b9
--- /dev/null
+++ b/templates/munin-node.conf.Ubuntu.gutsy
@@ -0,0 +1 @@
+munin-node.conf.Debian.etch \ No newline at end of file
diff --git a/templates/munin-node.conf.Ubuntu.hardy b/templates/munin-node.conf.Ubuntu.hardy
new file mode 120000
index 0000000..e0646b9
--- /dev/null
+++ b/templates/munin-node.conf.Ubuntu.hardy
@@ -0,0 +1 @@
+munin-node.conf.Debian.etch \ No newline at end of file