diff options
-rw-r--r-- | ansible/roles/munin/handlers/main.yml | 10 | ||||
-rw-r--r-- | ansible/roles/munin/tasks/main.yml | 34 | ||||
-rw-r--r-- | ansible/roles/munin/templates/munin-node.conf.j2 | 61 | ||||
-rw-r--r-- | ansible/roles/munin/templates/munin.conf.j2 | 155 |
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 +# |