Browse Source

Ajout de la première version

Philippe Caseiro 1 year ago
parent
commit
d80857843c
6 changed files with 615 additions and 0 deletions
  1. 27 0
      Makefile
  2. 64 0
      apps.mk
  3. 24 0
      diagnose/75-munin
  4. 122 0
      dicos/99_munin-server.xml
  5. 231 0
      eole.mk
  6. 147 0
      tmpl/munin.conf

+ 27 - 0
Makefile

@@ -0,0 +1,27 @@
1
+################################
2
+# Makefile pour XXX-XXX
3
+################################
4
+
5
+SOURCE=eole-munin
6
+VERSION=1.0
7
+EOLE_VERSION=2.6
8
+EOLE_RELEASE=2.6.1
9
+PKGAPPS=non
10
+#FLASK_MODULE=<APPLICATION>
11
+
12
+################################
13
+# Début de zone à ne pas éditer
14
+################################
15
+
16
+include eole.mk
17
+include apps.mk
18
+
19
+################################
20
+# Fin de zone à ne pas éditer
21
+################################
22
+
23
+# Makefile rules dedicated to application
24
+# if exists
25
+ifneq (, $(strip $(wildcard $(SOURCE).mk)))
26
+include $(SOURCE).mk
27
+endif

+ 64 - 0
apps.mk

@@ -0,0 +1,64 @@
1
+# 
2
+# NE PAS EDITER CE FICHIER
3
+#
4
+# Voir Makefile
5
+
6
+
7
+##########################
8
+# Application web envole #
9
+##########################
10
+ifneq (, $(filter oui web, $(PKGAPPS)))
11
+#
12
+# Sanity check
13
+#
14
+ifeq (, $(filter-out X.X, $(strip $(VERSION))))
15
+$(error $$(VERSION) variable has incorrect value '$(VERSION)')
16
+endif
17
+
18
+# Where to store web application files
19
+WEB_PATH				:= $(DESTDIR)/var/www/html
20
+
21
+# Envole
22
+sharenvole_PROG_DIR			:= $(DESTDIR)/usr/share/envole/$(SOURCE)
23
+
24
+src_$(SOURCE)-$(VERSION)_REC_DIR	:= $(WEB_PATH)/$(SOURCE)
25
+src_plugins-$(VERSION)_REC_DIR		:= $(WEB_PATH)/$(SOURCE)/plugin
26
+src_lang-$(VERSION)_REC_DIR		:= $(WEB_PATH)/$(SOURCE)/lang
27
+
28
+endif
29
+
30
+##########################
31
+# Application EOLE flask #
32
+##########################
33
+ifneq (, $(filter flask, $(PKGAPPS)))
34
+#
35
+# Sanity check
36
+#
37
+ifeq (, $(filter-out XXX, $(strip $(FLASK_MODULE))))
38
+$(error $$(FLASK_MODULE) variable has incorrect value '$(FLASK_MODULE)')
39
+endif
40
+
41
+ifeq (, $(strip $(wildcard src/$(FLASK_MODULE).conf)))
42
+$(error missing eoleflask configuration file 'src/$(FLASK_MODULE).conf')
43
+endif
44
+
45
+# Everything is related to mount point
46
+APPS_MOUNT_POINT	:= $(shell sed -ne 's|^"MOUNT_POINT"[[:space:]]*:[[:space:]]*"/\([^"]*\)",|\1|p' \
47
+	src/$(FLASK_MODULE).conf)
48
+
49
+ifeq (, $(strip $(APPS_MOUNT_POINT)))
50
+$(error no "MOUNT_POINT" in eoleflask configuration file 'src/$(FLASK_MODULE).conf')
51
+endif
52
+
53
+# eole-flask configuration
54
+src_DATA_DIR		:= $(DESTDIR)/etc/eole/flask/available
55
+
56
+# Where to store flask application files
57
+FLASK_PATH		:= $(eole_DIR)/flask/$(APPS_MOUNT_POINT)
58
+
59
+# static files
60
+src_$(FLASK_MODULE)_static_REC_DIR	:= $(FLASK_PATH)/static
61
+src_$(FLASK_MODULE)_templates_REC_DIR	:= $(FLASK_PATH)/templates
62
+src_$(FLASK_MODULE)_instance_REC_DIR	:= $(FLASK_PATH)/resources
63
+
64
+endif

+ 24 - 0
diagnose/75-munin

@@ -0,0 +1,24 @@
1
+#!/bin/bash
2
+
3
+. /usr/lib/eole/diagnose.sh
4
+
5
+if [ $(CreoleGet activer_firewall) = "oui" ]; then
6
+    EchoGras "*** Service Munin"
7
+#    TestPid "Munin-node" munin-node
8
+    echo
9
+fi
10
+
11
+nb_interface=$(CreoleGet nombre_interfaces)
12
+cpt=0
13
+EchoGras "*** Accès distant Munin"
14
+while [ $cpt -lt $nb_interface ]; do
15
+    if [ $(CreoleGet munin_eth${cpt}) = "oui" ]; then
16
+        eth="$(CreoleGet nom_zone_eth$cpt)"
17
+        adresse=$(CreoleGet adresse_ip_eth$cpt)
18
+        TestService "Accès distant client sur $eth" $adresse:4949
19
+        echo
20
+    fi
21
+    let cpt=cpt+1
22
+done
23
+
24
+

+ 122 - 0
dicos/99_munin-server.xml

@@ -0,0 +1,122 @@
1
+<?xml version='1.0' encoding='utf-8'?>
2
+
3
+<creole>
4
+
5
+    <files>
6
+        <package>munin</package>
7
+        <package>munin-node</package>
8
+        <package>munin-plugins-extra</package>
9
+        <package>libwww-perl</package>
10
+        <service>munin-node</service>
11
+        <service>munin</service>
12
+        <file filelist='munin' name="/etc/munin/munin.conf" source='munin.conf'/>
13
+        <service_access service='munin'>
14
+            <port>4949</port>
15
+            <tcpwrapper>munin</tcpwrapper>
16
+        </service_access>
17
+
18
+        <service_restriction service='munin'>
19
+            <ip interface='eth0' netmask='netmask_munin_eth0' netmask_type='SymLinkOption' ip_type='SymLinkOption'>ip_munin_eth0</ip>
20
+            <ip interface='eth1' netmask='netmask_munin_eth1' netmask_type='SymLinkOption' ip_type='SymLinkOption'>ip_munin_eth1</ip>
21
+        </service_restriction>
22
+    </files>
23
+
24
+    <containers>
25
+
26
+    </containers>
27
+
28
+    <variables>
29
+
30
+        <family name='Services'>
31
+            <variable name='activer_munin' type='oui/non' description="Activer Munin pour l'accès des clients distants" mode='expert'>
32
+                <value>non</value>
33
+            </variable>
34
+        </family>
35
+
36
+        <family name='munin'>
37
+            <variable name='ajout_client_munin' type='oui/non' description="Ajouter un nouveau client à Munin">
38
+                <value>non</value>
39
+            </variable>
40
+            <variable name='nom_nouveau_client_munin' type='string' description="Nom du nouveau client" multi="True" mandatory='True'>
41
+                <value>muninclient.muninclient.lan</value>
42
+            </variable>
43
+            <variable name='ip_client_munin' type='network' description="Adresse Ip du client Munin" multi="True" mandatory='True'/>
44
+        </family>
45
+
46
+        <!-- **** Interface interne 0 **** -->
47
+        <family name='Interface-0'>
48
+            <variable name='munin_eth0' type='oui/non' description='Autoriser les connexions distantes au service Munin' mode='expert'>
49
+                <value>non</value>
50
+            </variable>
51
+            <variable name='ip_munin_eth0' type='network' description="Adresse IP réseau autorisée pour les connexions distantes au service Munin" multi='True' mandatory='True'/>
52
+            <variable name='netmask_munin_eth0' type='netmask' description="Masque du sous réseau pour les connexions distantes au service Munin" mandatory='True'/>
53
+        </family>
54
+
55
+        <!-- **** Interface interne 1 **** -->
56
+        <family name='Interface-1'>
57
+            <variable name='munin_eth1' type='oui/non' description='Autoriser les connexions distantes au service Munin' mode='expert'>
58
+                <value>non</value>
59
+            </variable>
60
+            <variable name='ip_munin_eth1' type='network' description="Adresse IP réseau autorisée pour les connexions distantes au service Munin" multi='True' mandatory='True'/>
61
+            <variable name='netmask_munin_eth1' type='netmask' description="Masque du sous réseau pour les connexions distantes au service Munin" mandatory='True'/>
62
+        </family>
63
+
64
+        <separators>
65
+            <separator name='munin_eth0' never_hidden='True'>Configurer l'accès distant au service Munin</separator>
66
+            <separator name='munin_eth1'>Configurer l'accès distant au service Munin</separator>
67
+        </separators>
68
+
69
+    </variables>
70
+
71
+    <constraints>
72
+
73
+        <condition name='disabled_if_in' source='activer_firewall'>
74
+            <param>non</param>
75
+            <target type='variable'>activer_munin</target>
76
+            <target type='variable'>munin_eth0</target>
77
+            <target type='variable'>munin_eth1</target>
78
+        </condition>
79
+        <condition name='disabled_if_in' source='activer_munin'>
80
+            <param>non</param>
81
+            <target type='variable'>munin_eth0</target>
82
+            <target type='variable'>munin_eth1</target>
83
+            <target type='family'>munin</target>
84
+            <target type='filelist'>munin</target>
85
+        </condition>
86
+        <condition name='disabled_if_in' source='munin_eth0'>
87
+            <param>non</param>
88
+            <target type='variable'>ip_munin_eth0</target>
89
+            <target type='variable'>netmask_munin_eth0</target>
90
+        </condition>
91
+        <check name="valid_networknetmask" target="netmask_munin_eth0">
92
+            <param type='eole'>ip_munin_eth0</param>
93
+        </check>
94
+        <condition name='disabled_if_in' source='munin_eth1'>
95
+            <param>non</param>
96
+            <target type='variable'>ip_munin_eth1</target>
97
+            <target type='variable'>netmask_munin_eth1</target>
98
+        </condition>
99
+        <condition name='disabled_if_in' source='ajout_client_munin'>
100
+            <param>non</param>
101
+            <target type='variable'>nom_nouveau_client_munin</target>
102
+            <target type='variable'>ip_client_munin</target>
103
+        </condition>
104
+        <check name="valid_networknetmask" target="netmask_munin_eth1">
105
+            <param type='eole'>ip_munin_eth1</param>
106
+        </check>
107
+        <group master='ip_munin_eth0'>
108
+            <slave>netmask_munin_eth0</slave>
109
+        </group>
110
+        <group master='ip_munin_eth1'>
111
+            <slave>netmask_munin_eth1</slave>
112
+        </group>
113
+        <group master='nom_nouveau_client_munin'>
114
+            <slave>ip_client_munin</slave>
115
+        </group>
116
+    </constraints>
117
+
118
+    <help>
119
+
120
+    </help>
121
+
122
+</creole>

+ 231 - 0
eole.mk

@@ -0,0 +1,231 @@
1
+#
2
+# NE PAS EDITER CE FICHIER
3
+#
4
+# Utiliser <appli>.mk à inclure à la fin de Makefile
5
+
6
+#################
7
+# Sanity checks #
8
+#################
9
+
10
+ifeq (, $(DESTDIR))
11
+$(warning $$(DESTDIR) is empty, installation will be done in /)
12
+endif
13
+
14
+ifeq (, $(filter-out XXX-XXX, $(strip $(SOURCE))))
15
+$(error $$(SOURCE) variable has incorrect value '$(SOURCE)')
16
+endif
17
+
18
+ifeq (, $(filter-out 2.X, $(strip $(EOLE_VERSION))))
19
+$(error $$(EOLE_VERSION) variable has incorrect value '$(EOLE_VERSION)')
20
+endif
21
+
22
+ifeq (, $(filter-out 2.X.Y, $(strip $(EOLE_RELEASE))))
23
+$(error $$(EOLE_RELEASE) variable has incorrect value '$(EOLE_RELEASE)')
24
+endif
25
+
26
+#########################
27
+# Variables definitions #
28
+#########################
29
+
30
+INSTALL                 := install
31
+INSTALL_DATA            := install -m 644
32
+INSTALL_PROGRAM         := install -m 755
33
+INSTALL_DIRECTORY       := install -m 755 -d
34
+INSTALL_RECURSIVE       := cp -dr --no-preserve=ownership
35
+
36
+# Standard path
37
+bin_PROG_DIR		:= $(DESTDIR)/usr/bin
38
+sbin_PROG_DIR		:= $(DESTDIR)/usr/sbin
39
+man8_DATA_DIR		:= $(DESTDIR)/usr/share/man/fr.UTF-8/man8
40
+
41
+# Base
42
+eole_DIR                := $(DESTDIR)/usr/share/eole
43
+
44
+ifeq ($(strip $(EOLE_VERSION)), 2.3)
45
+diagnose_PROG_DIR       := $(eole_DIR)/diagnose/module
46
+else
47
+diagnose_PROG_DIR       := $(eole_DIR)/diagnose/
48
+endif
49
+
50
+# Creole
51
+creole_DIR              := $(eole_DIR)/creole
52
+dicos_DATA_DIR          := $(creole_DIR)/dicos
53
+tmpl_DATA_DIR           := $(creole_DIR)/distrib
54
+preservice_PROG_DIR     := $(eole_DIR)/preservice
55
+pretemplate_PROG_DIR    := $(eole_DIR)/pretemplate
56
+posttemplate_PROG_DIR   := $(eole_DIR)/posttemplate
57
+postservice_PROG_DIR    := $(eole_DIR)/postservice
58
+ifeq ($(strip $(EOLE_VERSION)), 2.3)
59
+firewall_DATA_DIR       := $(eole_DIR)/firewall
60
+endif
61
+bacula_restore_DATA_DIR := $(eole_DIR)/bacula/restore
62
+bareos_restore_DATA_DIR := $(eole_DIR)/bareos/restore
63
+bacula_fichier_DATA_DIR := $(DESTDIR)/etc/bacula/baculafichiers.d
64
+bareos_fichier_DATA_DIR	:= $(DESTDIR)/etc/bareos/bareosfichiers.d
65
+ifeq ($(strip $(EOLE_VERSION)), 2.3)
66
+schedule_pre_PROG_DIR   := $(eole_DIR)/schedule/pre
67
+schedule_post_PROG_DIR  := $(eole_DIR)/schedule/post
68
+else
69
+schedule_scripts_PROG_DIR	:= $(eole_DIR)/schedule/scripts
70
+endif
71
+extra_REC_DIR		:= $(creole_DIR)/extra
72
+
73
+# Zéphir
74
+zephir_DATA_DIR         := $(DESTDIR)/usr/share/zephir
75
+zephir_configs_DATA_DIR := $(zephir_DATA_DIR)/monitor/configs
76
+zephir_srv_DATA_DIR     := $(zephir_configs_DATA_DIR)/services
77
+zephir_scripts_PROG_DIR := $(zephir_DATA_DIR)/scripts
78
+
79
+# SSO
80
+sso_DATA_DIR            := $(DESTDIR)/usr/share/sso
81
+sso_filtres_DATA_DIR    := $(sso_DATA_DIR)/app_filters
82
+sso_user-info_DATA_DIR  := $(sso_DATA_DIR)/user_infos
83
+
84
+# EAD
85
+ead_DATA_DIR            := $(DESTDIR)/usr/share/ead2/backend/config
86
+ead_actions_DATA_DIR    := $(ead_DATA_DIR)/actions
87
+ead_perms_DATA_DIR      := $(ead_DATA_DIR)/perms
88
+ead_roles_DATA_DIR      := $(ead_DATA_DIR)/roles
89
+
90
+# Program libraries goes under /usr/lib/<PROGRAM>/
91
+lib_$(SOURCE)_DATA_DIR	:= $(DESTDIR)/usr/lib/$(SOURCE)
92
+
93
+# Scripts Eole
94
+scripts_PROG_DIR        := $(eole_DIR)/sbin
95
+lib_eole_DATA_DIR	:= $(DESTDIR)/usr/lib/eole
96
+
97
+# LDAP
98
+ldap_passwords_DATA_DIR := $(eole_DIR)/annuaire/password_files
99
+
100
+# LXC
101
+lxc_DATA_DIR            := $(eole_DIR)/lxc
102
+lxc_fstab_DATA_DIR      := $(lxc_DATA_DIR)/fstab
103
+lxc_hosts_DATA_DIR	:= $(lxc_DATA_DIR)/hosts
104
+
105
+# SQL
106
+sql_DATA_DIR            := $(eole_DIR)/mysql/$(SOURCE)
107
+sql_gen_DATA_DIR        := $(sql_DATA_DIR)/gen
108
+sql_updates_DATA_DIR    := $(sql_DATA_DIR)/updates
109
+
110
+sql_conf_gen_DATA_DIR		:= $(eole_DIR)/applications/gen
111
+sql_conf_passwords_DATA_DIR	:= $(eole_DIR)/applications/passwords
112
+sql_conf_updates_DATA_DIR	:= $(eole_DIR)/applications/updates/$(SOURCE)
113
+
114
+# EoleDB sql directory
115
+db_DIR               := $(eole_DIR)/db
116
+db_gen_DATA_DIR      := $(eole_DIR)/db/$(SOURCE)/gen
117
+db_updates_DATA_DIR  := $(eole_DIR)/db/$(SOURCE)/updates
118
+
119
+# Certifs
120
+certs_DATA_DIR		:= $(eole_DIR)/certs
121
+
122
+# Logrotate
123
+logrotate_DATA_DIR      := $(DESTDIR)/etc/logrotate.d
124
+
125
+# Cron
126
+cron_PROG_DIR 		:= $(DESTDIR)/etc/cron.daily
127
+
128
+# Python modules
129
+ifneq ($(DESTDIR),)
130
+PYTHON_OPTS     := --root $(DESTDIR)
131
+endif
132
+
133
+# Translation
134
+TRANSLATION_SRC := translation
135
+TRANSLATION_DEST := $(DESTDIR)/usr/share/locale
136
+PO_FILES = $(wildcard $(TRANSLATION_SRC)/*/*.po)
137
+MO_FOLDERS = $(addprefix $(TRANSLATION_DEST), $(addsuffix LC_MESSAGES,$(subst $(TRANSLATION_SRC),,$(dir $(PO_FILES)))))
138
+
139
+#############################################
140
+# Common directories and files installation #
141
+#############################################
142
+
143
+all:
144
+
145
+$(MO_FOLDERS):
146
+	$(INSTALL_DIRECTORY) $@
147
+
148
+$(PO_FILES): $(MO_FOLDERS)
149
+	msgfmt -o $(TRANSLATION_DEST)$(subst $(TRANSLATION_SRC),,$(addsuffix LC_MESSAGES,$(dir $@)))/$(notdir $(@:.po=.mo)) $@
150
+
151
+install-lang: $(PO_FILES)
152
+
153
+install:: install-dirs install-files install-lang
154
+
155
+# $1 = command to run
156
+# $2 = source directory
157
+# $3 = destination directory
158
+define fc_install_file
159
+	if [ -d $2 ]; then					\
160
+		for file in `ls -1 $2/`; do			\
161
+		   $1 $2/$$file $3 || true;			\
162
+	    done;						\
163
+	fi
164
+endef
165
+
166
+##
167
+## Directory creation
168
+##
169
+
170
+# use % to catch local name in $*
171
+# data, program and recursive directory require a corresponding
172
+# directory in local sources
173
+%_DATA_DIR %_PROG_DIR %REC_DIR:
174
+	test ! -d $(subst _,/,$*) || $(INSTALL_DIRECTORY) $($@)
175
+
176
+# Create the directory referenced by the variable without a local one.
177
+%_DIR:
178
+	@: # do nothing
179
+
180
+##
181
+## Install files present directly under data, program and recursive directories
182
+##
183
+
184
+# $*   : name of variable
185
+# $($*): value of variable
186
+%-instdata:
187
+	$(call fc_install_file, $(INSTALL_DATA), $(subst _,/,$(subst _DATA_DIR,,$*)), $($*))
188
+
189
+%-instprog:
190
+	$(call fc_install_file, $(INSTALL_PROGRAM), $(subst _,/,$(subst _PROG_DIR,,$*)), $($*))
191
+
192
+%-instrec:
193
+	$(call fc_install_file, $(INSTALL_RECURSIVE), $(subst _,/,$(subst _REC_DIR,,$*)), $($*))
194
+
195
+
196
+# Use second expansion as variables may be created in included
197
+# Makefiles
198
+.SECONDEXPANSION:
199
+
200
+# List of all directories
201
+installdirs_LIST	= $(foreach V, $(filter %_DIR, $(.VARIABLES)),	\
202
+				$(if $(filter file, $(origin $(V))),	\
203
+					$(V)))
204
+# List of data directories
205
+installdata_LIST	= $(filter %_DATA_DIR, $(installdirs_LIST))
206
+# List of program directories
207
+installprog_LIST	= $(filter %_PROG_DIR, $(installdirs_LIST))
208
+# List of recursive directories
209
+installrec_LIST	 	= $(filter %_REC_DIR, $(installdirs_LIST))
210
+
211
+# Expand directories to create as dependency
212
+# Use double-colon to permit user to define additionnal install-dirs
213
+install-dirs:: $$(installdirs_LIST)
214
+
215
+# Expand files to install as dependency
216
+# Use double-colon to permit user to define additionnal install-files
217
+install-files:: install-data-files install-prog-files install-rec-dirs
218
+
219
+install-data-files: $$(patsubst %,%-instdata,$$(installdata_LIST))
220
+
221
+install-prog-files: $$(patsubst %,%-instprog,$$(installprog_LIST))
222
+
223
+install-rec-dirs:   $$(patsubst %,%-instrec,$$(installrec_LIST))
224
+
225
+# Installation of python modules
226
+ifeq ($(shell test -f setup.py && echo 0), 0)
227
+install-files::
228
+	python setup.py install --no-compile --install-layout=deb $(PYTHON_OPTS)
229
+endif
230
+
231
+.PHONY: install install-dirs install-files install-data-files install-prog-files install-rec-dirs

+ 147 - 0
tmpl/munin.conf

@@ -0,0 +1,147 @@
1
+# Example configuration file for Munin, generated by 'make build'
2
+
3
+# The next three variables specifies where the location of the RRD
4
+# databases, the HTML output, logs and the lock/pid files.  They all
5
+# must be writable by the user running munin-cron.  They are all
6
+# defaulted to the values you see here.
7
+#
8
+dbdir	/var/lib/munin
9
+htmldir /var/cache/munin/www
10
+logdir /var/log/munin
11
+rundir  /var/run/munin
12
+
13
+# Where to look for the HTML templates
14
+#
15
+#tmpldir	/etc/munin/templates
16
+
17
+# Where to look for the static www files
18
+#
19
+#staticdir /etc/munin/static
20
+
21
+# temporary cgi files are here. note that it has to be writable by
22
+# the cgi user (usually nobody or httpd).
23
+#
24
+# cgitmpdir /var/lib/munin/cgi-tmp
25
+
26
+# (Exactly one) directory to include all files from.
27
+includedir /etc/munin/munin-conf.d
28
+
29
+# You can choose the time reference for "DERIVE" like graphs, and show
30
+# "per minute", "per hour" values instead of the default "per second"
31
+#
32
+#graph_period second
33
+
34
+# Graphics files are generated either via cron or by a CGI process.
35
+# See http://munin-monitoring.org/wiki/CgiHowto2 for more
36
+# documentation.
37
+# Since 2.0, munin-graph has been rewritten to use the cgi code.
38
+# It is single threaded *by design* now.
39
+#
40
+#graph_strategy cron
41
+
42
+# munin-cgi-graph is invoked by the web server up to very many times at the
43
+# same time.  This is not optimal since it results in high CPU and memory
44
+# consumption to the degree that the system can thrash.  Again the default is
45
+# 6.  Most likely the optimal number for max_cgi_graph_jobs is the same as
46
+# max_graph_jobs.
47
+#
48
+#munin_cgi_graph_jobs 6
49
+
50
+# If the automatic CGI url is wrong for your system override it here:
51
+#
52
+#cgiurl_graph /munin-cgi/munin-cgi-graph
53
+
54
+# max_size_x and max_size_y are the max size of images in pixel.
55
+# Default is 4000. Do not make it too large otherwise RRD might use all
56
+# RAM to generate the images.
57
+#
58
+#max_size_x 4000
59
+#max_size_y 4000
60
+
61
+# HTML files are normally generated by munin-html, no matter if the
62
+# files are used or not. You can change this to on-demand generation
63
+# by following the instructions in http://munin-monitoring.org/wiki/CgiHowto2
64
+#
65
+# Notes:
66
+# - moving to CGI for HTML means you cannot have graph generated by cron.
67
+# - cgi html has some bugs, mostly you still have to launch munin-html by hand
68
+#
69
+#html_strategy cron
70
+
71
+# munin-update runs in parallel.
72
+#
73
+# The default max number of processes is 16, and is probably ok for you.
74
+#
75
+# If set too high, it might hit some process/ram/filedesc limits.
76
+# If set too low, munin-update might take more than 5 min.
77
+#
78
+# If you want munin-update to not be parallel set it to 0.
79
+#
80
+#max_processes 16
81
+
82
+# RRD updates are per default, performed directly on the rrd files.
83
+# To reduce IO and enable the use of the rrdcached, uncomment it and set it to
84
+# the location of the socket that rrdcached uses.
85
+#
86
+#rrdcached_socket /var/run/rrdcached.sock
87
+
88
+# Drop somejuser@fnord.comm and anotheruser@blibb.comm an email everytime
89
+# something changes (OK -> WARNING, CRITICAL -> OK, etc)
90
+#contact.someuser.command mail -s "Munin notification" somejuser@fnord.comm
91
+#contact.anotheruser.command mail -s "Munin notification" anotheruser@blibb.comm
92
+#
93
+# For those with Nagios, the following might come in handy. In addition,
94
+# the services must be defined in the Nagios server as well.
95
+#contact.nagios.command /usr/bin/send_nsca nagios.host.comm -c /etc/nsca.conf
96
+
97
+# a simple host tree
98
+[%%nom_machine.%%.nom_domain_local]
99
+    address 127.0.0.1
100
+    use_node_name yes
101
+[%%nom_nouveau_client_munin]
102
+    adress %%ip_client_munin
103
+    use_node_name yes
104
+#
105
+# A more complex example of a host tree
106
+#
107
+## First our "normal" host.
108
+# [fii.foo.com]
109
+#       address foo
110
+#
111
+## Then our other host...
112
+# [fay.foo.com]
113
+#       address fay
114
+#
115
+## IPv6 host. note that the ip adress has to be in brackets
116
+# [ip6.foo.com]
117
+#       address [2001::1234:1]
118
+#
119
+## Then we want totals...
120
+# [foo.com;Totals] #Force it into the "foo.com"-domain...
121
+#       update no   # Turn off data-fetching for this "host".
122
+#
123
+#   # The graph "load1". We want to see the loads of both machines...
124
+#   # "fii=fii.foo.com:load.load" means "label=machine:graph.field"
125
+#       load1.graph_title Loads side by side
126
+#       load1.graph_order fii=fii.foo.com:load.load fay=fay.foo.com:load.load
127
+#
128
+#   # The graph "load2". Now we want them stacked on top of each other.
129
+#       load2.graph_title Loads on top of each other
130
+#       load2.dummy_field.stack fii=fii.foo.com:load.load fay=fay.foo.com:load.load
131
+#       load2.dummy_field.draw AREA # We want area instead the default LINE2.
132
+#       load2.dummy_field.label dummy # This is needed. Silly, really.
133
+#
134
+#   # The graph "load3". Now we want them summarised into one field
135
+#       load3.graph_title Loads summarised
136
+#       load3.combined_loads.sum fii.foo.com:load.load fay.foo.com:load.load
137
+#       load3.combined_loads.label Combined loads # Must be set, as this is
138
+#                                                 # not a dummy field!
139
+#
140
+## ...and on a side note, I want them listen in another order (default is
141
+## alphabetically)
142
+#
143
+# # Since [foo.com] would be interpreted as a host in the domain "com", we
144
+# # specify that this is a domain by adding a semicolon.
145
+# [foo.com;]
146
+#       node_order Totals fii.foo.com fay.foo.com
147
+#