scripts/munin/scripts/hosts_plugins.py
Daniel STAN a15eec657b [munin] retrait plugin vigile
Il n'affiche rien de pertinent anyway.
2013-05-08 03:40:20 +02:00

184 lines
5.9 KiB
Python
Executable file

#!/usr/bin/env python
# -!- encoding: utf-8 -!-
# Correspondance hôte <-> plugin munin custom
#
# Copyright © 2009 Nicolas Dandrimont <Nicolas.Dandrimont@crans.org>
#
# Licence: MIT
import sys as _sys
_sys.path.append("/usr/scripts/gestion")
del _sys
import annuaires
import config
__all__ = ["hosts_plugins", "munin_fw", "cron_plugins", "hosts_crons"]
# Lignes cron correspondant aux plugins customs
cron_plugins = {
# plugin: (utilisateur, commande),
# %s est remplacé par le lien dans /etc/munin/plugins
"audimat": ("root", "nice -n 14 %s generate 2> /dev/null"),
"batiments": ("root", "nice -n 14 %s fichier 2> /dev/null"),
"stats-ip_": ("root", "nice -n 14 %s fichier 2> /dev/null"),
"stats-ip": ("root", "nice -n 14 %s fichier 2> /dev/null"),
"wiki_pages": ("www-data", "%s fichier 2> /dev/null"),
}
# Hôtes pour lesquels le firewall est muninisé
munin_fw = sorted(["zamok", "redisdead", "komaz", "sable", "gordon"])
hosts_plugins = {
"zamok": {
"canon_compteur": "canon_",
"canon_papier": "canon_",
"canon_ton-p": "canon_",
"webalizer_intranet": "webalizer_",
"webalizer_perso": "webalizer_",
"who": "who",
"whokfet": "whokfet",
},
"vert": {
"slapd_bdb_cache_pages": "slapd_bdb_cache_",
"slapd_bdb_cache_percent": "slapd_bdb_cache_",
},
"redisdead": {
"machines": "machines",
# "webalizer_dixans": "webalizer_",
# "webalizer_install-party": "webalizer_",
# "webalizer_news": "webalizer_",
# "webalizer_trophee": "webalizer_",
# "webalizer_webmail": "webalizer_",
# "webalizer_wiki": "webalizer_",
# "webalizer_www": "webalizer_",
},
"komaz": {
"machines": "machines",
"if_sixxs2": "/usr/share/munin/plugins/if_",
"if_err_sixxs2": "/usr/share/munin/plugins/if_err_",
"if_crans.2": "/usr/share/munin/plugins/if_",
"if_err_crans.2": "/usr/share/munin/plugins/if_err_",
"if_crans.3": "/usr/share/munin/plugins/if_",
"if_err_crans.3": "/usr/share/munin/plugins/if_err_",
"if_crans.21": "/usr/share/munin/plugins/if_",
"if_err_crans.21": "/usr/share/munin/plugins/if_err_",
},
"sable": {
"blacklist": "blacklist",
"squid_efficiency": "squid_efficiency",
"bind9_rndc": "/usr/share/munin/plugins/bind9_rndc",
},
"charybde": {
"bind9_rndc": "/usr/share/munin/plugins/bind9_rndc",
},
"gordon": {
"wifi_clients": "/usr/scripts/wifi_new/munin.py",
"ap_states": "/usr/scripts/wifi_new/munin.py",
"wifi_auth": "/usr/scripts/wifi_new/munin_auth",
"bind9_rndc": "/usr/share/munin/plugins/bind9_rndc"
},
"eap": {
"wifi_auth": "/usr/scripts/wifi_new/munin_auth",
},
"xmpp": {
"jabber": "jabber",
"ejabberd_connections": "ejabberd_",
"ejabberd_users": "ejabberd_",
"ejabberd_registrations": "ejabberd_",
"ejabberd_statuses": "ejabberd_",
"ejabberd_memory": "ejabberd_",
"ejabberd_threads": "ejabberd_",
"ejabberd_usersindays": "ejabberd_",
"ejabberd_uptime": "ejabberd_",
},
"niomniom": {
"wiki_pages": "wiki_pages",
"wiki_themes": "wiki_themes",
"wiki_users": "wiki_users",
},
"dyson": {
"audimat": "audimat",
"batiments": "batiments",
"munin": "munin",
"ping_multiprise_v6.adm": "ping_",
"stats-ip": "stats-ip",
# La suite plus bas...
},
"news": {
"innd_total": "innd_total",
"innd_last": "innd_last",
"innd_connects": "innd_connects",
}
}
# Plugins Cr@ns systématiquement rajoutés
general_plugins = {
"check_ntp": "check_ntp",
}
####
# Trucs spécifiques à munin.crans.org
# Onduleur
for mge_truc in ["batt", "hygro", "intensite", "temp", "temps", "tension"]:
hosts_plugins["dyson"]["mge_%s" % mge_truc] = "mge_%s" % mge_truc
# Stats d'utilisation des réseaux
for net in config.NETs:
hosts_plugins["dyson"]["stats-ip_%s" % net] = "stats-ip_"
# Stats de peuplement des bâtiments
for bat in annuaires.bat_switchs:
if bat not in ('v',):
hosts_plugins["dyson"]["stats-batiment_%s" % bat] = "stats-batiment_"
# Ping de tous les switches de bâtiments
for switch in annuaires.all_switchs():
# Suppression du .adm.crans.org
switch = switch[:switch.index('.')]
switch = switch.replace('-', '_')
hosts_plugins["dyson"]["ping_%s.adm" % switch] = "ping_bat_"
# On rajoute les stats de connexion
for host in hosts_plugins.keys():
hosts_plugins[host].update({"sockets": "sockets"})
# La météo au 4J
hosts_plugins.setdefault("mdr", {})
for meteo_truc in ["hygro", "temp"]:
hosts_plugins["mdr"]["meteo4J_%s" % meteo_truc] = "meteo4J_"
#########
# Muninisation des firewalls
#
for host in munin_fw:
hosts_plugins[host].update({
"iptables_filter": "iptables_",
"iptables_mangle": "iptables_",
"iptables_nat": "iptables_",
"ipset_macip":"/usr/scripts/munin/ipset",
"ipset":"/usr/scripts/munin/ipset",
})
# format de la ligne cron
CRON_FORMAT = "%s-%s/%s * * * * %s %s"
# fréquence
FREQ = 15
# lignes cron par hôte
hosts_crons = {}
for host, plugins in hosts_plugins.items():
minute = 1
hosts_crons[host] = []
for path, plugin in plugins.items():
if plugin in cron_plugins:
path = "/etc/munin/plugins/" + path
user, line = cron_plugins[plugin]
hosts_crons[host].append(CRON_FORMAT % (minute,
60 - FREQ + minute,
FREQ,
user,
line % path))
minute = (minute + 4) % FREQ
if not hosts_crons[host]:
del hosts_crons[host]