implemented cgi usage for munin graphing for centso
authorMarcel Haerry <haerry@puzzle.ch>
Mon, 21 Jul 2008 08:32:13 +0000 (10:32 +0200)
committerMarcel Haerry <haerry@puzzle.ch>
Mon, 21 Jul 2008 08:32:13 +0000 (10:32 +0200)
README
files/config/host/logrotate.CentOS [new file with mode: 0644]
files/config/host/munin.conf.header.CentOS [new file with mode: 0644]
manifests/host.pp

diff --git a/README b/README
index 12b73e8..f7da439 100644 (file)
--- a/README
+++ b/README
@@ -87,4 +87,4 @@ To use this module, follow these directions:
       $munin_port = 4948
 
    i. if you'd like to do cgi graphing, please note the following page: http://munin.projects.linpro.no/wiki/CgiHowto
-      ToDo: implement this in puppet
+      For CentOS this is enabled in the default header config
diff --git a/files/config/host/logrotate.CentOS b/files/config/host/logrotate.CentOS
new file mode 100644 (file)
index 0000000..411de3f
--- /dev/null
@@ -0,0 +1,35 @@
+/var/log/munin/munin-update.log {
+        daily
+        missingok
+        rotate 7
+        compress
+        notifempty
+        create 640 munin adm
+}
+
+/var/log/munin/munin-graph.log {
+        daily
+        missingok
+        rotate 7
+        compress
+        notifempty
+        create 660 munin apache
+}
+
+/var/log/munin/munin-html.log {
+        daily
+        missingok
+        rotate 7
+        compress
+        notifempty
+        create 640 munin adm
+}
+
+/var/log/munin/munin-limits.log {
+        daily
+        missingok
+        rotate 7
+        compress
+        notifempty
+        create 640 munin adm
+}
diff --git a/files/config/host/munin.conf.header.CentOS b/files/config/host/munin.conf.header.CentOS
new file mode 100644 (file)
index 0000000..314a979
--- /dev/null
@@ -0,0 +1,73 @@
+# Example configuration file for Munin, generated by 'make build'
+
+# The next three variables specifies where the location of the RRD
+# databases, the HTML output, and the logs, severally.  They all
+# must be writable by the user running munin-cron.
+dbdir   /var/lib/munin
+htmldir /var/www/munin
+logdir  /var/log/munin
+rundir  /var/run/munin
+
+# Where to look for the HTML templates
+tmpldir /etc/munin/templates
+
+# Make graphs show values per minute instead of per second
+#graph_period minute
+
+# Drop somejuser@fnord.comm and anotheruser@blibb.comm an email everytime
+# something changes (OK -> WARNING, CRITICAL -> OK, etc)
+#contact.someuser.command mail -s "Munin notification" somejuser@fnord.comm
+#contact.anotheruser.command mail -s "Munin notification" anotheruser@blibb.comm
+#
+# For those with Nagios, the following might come in handy. In addition,
+# the services must be defined in the Nagios server as well.
+#contact.nagios.command /usr/sbin/send_nsca -H nagios.host.com -c /etc/send_nsca.cfg
+
+graph_strategy cgi
+
+# a simple host tree
+#[localhost]
+#    address 127.0.0.1
+#    use_node_name yes
+
+#
+# A more complex example of a host tree
+#
+## First our "normal" host.
+# [fii.foo.com]
+#       address foo
+#
+## Then our other host...
+# [fay.foo.com]
+#       address fay
+#
+## Then we want totals...
+# [foo.com;Totals] #Force it into the "foo.com"-domain...
+#       update no   # Turn off data-fetching for this "host".
+#
+#   # The graph "load1". We want to see the loads of both machines...
+#   # "fii=fii.foo.com:load.load" means "label=machine:graph.field"
+#       load1.graph_title Loads side by side
+#       load1.graph_order fii=fii.foo.com:load.load fay=fay.foo.com:load.load
+#
+#   # The graph "load2". Now we want them stacked on top of each other.
+#       load2.graph_title Loads on top of each other
+#       load2.dummy_field.stack fii=fii.foo.com:load.load fay=fay.foo.com:load.load
+#       load2.dummy_field.draw AREA # We want area instead the default LINE2.
+#       load2.dummy_field.label dummy # This is needed. Silly, really.
+#
+#   # The graph "load3". Now we want them summarised into one field
+#       load3.graph_title Loads summarised
+#       load3.combined_loads.sum fii.foo.com:load.load fay.foo.com:load.load
+#       load3.combined_loads.label Combined loads # Must be set, as this is
+#                                                 # not a dummy field!
+#
+## ...and on a side note, I want them listen in another order (default is
+## alphabetically)
+#
+# # Since [foo.com] would be interpreted as a host in the domain "com", we
+# # specify that this is a domain by adding a semicolon.
+# [foo.com;]
+#       node_order Totals fii.foo.com fay.foo.com
+#
+
index 8f79020..aeb254d 100644 (file)
@@ -8,6 +8,16 @@ class munin::host
 
        File <<| tag == 'munin' |>>
 
+    file{'/etc/munin/munin.conf.header':
+        source => [ "puppet://$server/files/munin/config/host/${fqdn}/munin.conf.header",
+                    "puppet://$server/files/munin/config/host/munin.conf.header.$operatingsystem",
+                    "puppet://$server/files/munin/config/host/munin.conf.header",
+                    "puppet://$server/munin/config/host/munin.conf.header.$operatingsystem",
+                    "puppet://$server/munin/config/host/munin.conf.header" ],
+        notify => Exec['concat_/etc/munin/munin.conf'],
+        owner => root, group => 0, mode => 0644;
+    }
+
        concatenated_file { "/etc/munin/munin.conf":
                dir => $NODESDIR,
                header => "/etc/munin/munin.conf.header",
@@ -20,6 +30,27 @@ class munin::host
     }
 
     include munin::plugins::muninhost
+
+    case $operatingsystem {
+        centos: { include munin::host::cgi }
+    }
+}
+
+class munin::host::cgi {
+    exec{'set_modes_for_cgi':
+        command => 'chgrp apache /var/log/munin /var/log/munin/munin-graph.log && chmod g+w /var/log/munin /var/log/munin/munin-graph.log && find /var/www/munin/* -maxdepth 1 -type d -exec chgrp -R apache {} \; && find /var/www/munin/* -maxdepth 1 -type d -exec chmod g+w {} \;',
+        refreshonly => true,
+        subscribe => File['/etc/munin/munin.conf.header'],
+    }
+
+    file{'/etc/logrotate.d/munin'
+        source => [ "puppet://$server/files/munin/config/host/${fqdn}/logrotate"
+                    "puppet://$server/files/munin/config/host/logrotate.$operatingsystem",
+                    "puppet://$server/files/munin/config/host/logrotate",
+                    "puppet://$server/munin/config/host/logrotate.$operatingsystem",
+                    "puppet://$server/munin/config/host/logrotate" ],
+        owner => root, group => 0, mode => 0644;
+    }
 }
 
 class munin::snmp_collector