aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ansible/roles/munin/handlers/main.yml10
-rw-r--r--ansible/roles/munin/tasks/main.yml34
-rw-r--r--ansible/roles/munin/templates/munin-node.conf.j261
-rw-r--r--ansible/roles/munin/templates/munin.conf.j2155
4 files changed, 260 insertions, 0 deletions
diff --git a/ansible/roles/munin/handlers/main.yml b/ansible/roles/munin/handlers/main.yml
new file mode 100644
index 0000000..5e9c4bc
--- /dev/null
+++ b/ansible/roles/munin/handlers/main.yml
@@ -0,0 +1,10 @@
+---
+- name: Restart munin service
+ service:
+ name: munin
+ state: restarted
+
+- name: Restart munin-node service
+ service:
+ name: munin-node
+ state: restarted
diff --git a/ansible/roles/munin/tasks/main.yml b/ansible/roles/munin/tasks/main.yml
new file mode 100644
index 0000000..613b1a2
--- /dev/null
+++ b/ansible/roles/munin/tasks/main.yml
@@ -0,0 +1,34 @@
+---
+- name: Install munin packages
+ package:
+ name:
+ - munin
+ - munin-node
+ - spawn-fcgi
+ state: present
+ tags:
+ - role::munin
+
+- name: Template munin configuration file
+ template:
+ src: munin.conf.j2
+ dest: /etc/munin/munin.conf
+ owner: root
+ group: root
+ mode: "0444"
+ tags:
+ - role::munin
+ notify:
+ - Restart munin service
+
+- name: Template munin-node configuration file
+ template:
+ src: munin-node.conf.j2
+ dest: /etc/munin/munin-node.conf
+ owner: root
+ group: root
+ mode: "0444"
+ tags:
+ - role::munin
+ notify:
+ - Restart munin-node service
diff --git a/ansible/roles/munin/templates/munin-node.conf.j2 b/ansible/roles/munin/templates/munin-node.conf.j2
new file mode 100644
index 0000000..7f4bd42
--- /dev/null
+++ b/ansible/roles/munin/templates/munin-node.conf.j2
@@ -0,0 +1,61 @@
+# Managed by Ansible
+
+log_level 4
+log_file /var/log/munin/munin-node.log
+pid_file /var/run/munin/munin-node.pid
+
+background 1
+setsid 1
+
+user root
+group root
+
+# This is the timeout for the whole transaction.
+# Units are in sec. Default is 15 min
+#
+# global_timeout 900
+
+# This is the timeout for each plugin.
+# Units are in sec. Default is 1 min
+#
+# timeout 60
+
+# Regexps for files to ignore
+ignore_file [\#~]$
+ignore_file DEADJOE$
+ignore_file \.bak$
+ignore_file %$
+ignore_file \.dpkg-(tmp|new|old|dist)$
+ignore_file \.rpm(save|new)$
+ignore_file \.pod$
+
+# Set this if the client doesn't report the correct hostname when
+# telnetting to localhost, port 4949
+#
+host_name {{ ansible_fqdn }}
+
+# A list of addresses that are allowed to connect. This must be a
+# regular expression, since Net::Server does not understand CIDR-style
+# network notation unless the perl module Net::CIDR is installed. You
+# may repeat the allow line as many times as you'd like
+
+allow ^127\.0\.0\.1$
+allow ^::1$
+
+# If you have installed the Net::CIDR perl module, you can use one or more
+# cidr_allow and cidr_deny address/mask patterns. A connecting client must
+# match any cidr_allow, and not match any cidr_deny. Note that a netmask
+# *must* be provided, even if it's /32
+#
+# Example:
+#
+# cidr_allow 127.0.0.1/32
+# cidr_allow 192.0.2.0/24
+# cidr_deny 192.0.2.42/32
+
+# Which address to bind to;
+host *
+# host 127.0.0.1
+
+# And which port
+port 4949
diff --git a/ansible/roles/munin/templates/munin.conf.j2 b/ansible/roles/munin/templates/munin.conf.j2
new file mode 100644
index 0000000..ca51bde
--- /dev/null
+++ b/ansible/roles/munin/templates/munin.conf.j2
@@ -0,0 +1,155 @@
+# Managed by Ansible
+
+# The next three variables specifies where the location of the RRD
+# databases, the HTML output, logs and the lock/pid files. They all
+# must be writable by the user running munin-cron. They are all
+# defaulted to the values you see here.
+#
+#dbdir /var/lib/munin
+#htmldir /var/cache/munin/www
+#logdir /var/log/munin
+#rundir /var/run/munin
+
+# Where to look for the HTML templates
+#
+#tmpldir /etc/munin/templates
+
+# Where to look for the static www files
+#
+#staticdir /etc/munin/static
+
+# temporary cgi files are here. note that it has to be writable by
+# the cgi user (usually nobody or httpd).
+#
+# cgitmpdir /var/lib/munin/cgi-tmp
+
+# (Exactly one) directory to include all files from.
+includedir /etc/munin/munin-conf.d
+
+# You can choose the time reference for "DERIVE" like graphs, and show
+# "per minute", "per hour" values instead of the default "per second"
+#
+#graph_period second
+
+# Graphics files are generated either via cron or by a CGI process.
+# See http://munin-monitoring.org/wiki/CgiHowto2 for more
+# documentation.
+# Since 2.0, munin-graph has been rewritten to use the cgi code.
+# It is single threaded *by design* now.
+#
+graph_strategy cgi
+
+# munin-cgi-graph is invoked by the web server up to very many times at the
+# same time. This is not optimal since it results in high CPU and memory
+# consumption to the degree that the system can thrash. Again the default is
+# 6. Most likely the optimal number for max_cgi_graph_jobs is the same as
+# max_graph_jobs.
+#
+#munin_cgi_graph_jobs 6
+
+# If the automatic CGI url is wrong for your system override it here:
+#
+#cgiurl_graph /munin-cgi/munin-cgi-graph
+
+# max_size_x and max_size_y are the max size of images in pixel.
+# Default is 4000. Do not make it too large otherwise RRD might use all
+# RAM to generate the images.
+#
+#max_size_x 4000
+#max_size_y 4000
+
+# HTML files are normally generated by munin-html, no matter if the
+# files are used or not. You can change this to on-demand generation
+# by following the instructions in http://munin-monitoring.org/wiki/CgiHowto2
+#
+# Notes:
+# - moving to CGI for HTML means you cannot have graph generated by cron.
+# - cgi html has some bugs, mostly you still have to launch munin-html by hand
+#
+html_strategy cgi
+
+# munin-update runs in parallel.
+#
+# The default max number of processes is 16, and is probably ok for you.
+#
+# If set too high, it might hit some process/ram/filedesc limits.
+# If set too low, munin-update might take more than 5 min.
+#
+# If you want munin-update to not be parallel set it to 0.
+#
+#max_processes 16
+
+# RRD updates are per default, performed directly on the rrd files.
+# To reduce IO and enable the use of the rrdcached, uncomment it and set it to
+# the location of the socket that rrdcached uses.
+#
+#rrdcached_socket /var/run/rrdcached.sock
+
+# Drop [email protected] and [email protected] an email everytime
+# something changes (OK -> WARNING, CRITICAL -> OK, etc)
+#contact.someuser.command mail -s "Munin ${var:worst}: ${var:group}::${var:host}::${var:plugin}" [email protected]
+#contact.anotheruser.command mail -s "Munin ${var:worst}: ${var:group}::${var:host}::${var:plugin}" [email protected]
+#
+# 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/bin/send_nsca nagios.host.comm -c /etc/nsca.conf
+
+# The maximum time the munin-update may take to
+# this might be interesting when using munin-async in case of large transactions and/or backlog.
+# When using the munin protocol to connect to a node, then this value shouldn't be set higher than 240.
+# In case it's higher, gaps might be seen in the graphs.
+timeout_fetch_all_nodes 240
+
+# The maximum amount of time in seconds we may work on 1 node.
+# The value will be limited with timeout_fetch_all_nodes.
+timeout_fetch_one_node 180
+
+# a simple host tree
+[{{ ansible_fqdn }}]
+ 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
+#
+## IPv6 host. note that the ip adress has to be in brackets
+# [ip6.foo.com]
+# address [2001::1234:1]
+#
+## 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
+#