crans_bcfg2/Python/etc/monit/services
Brice Dubost 237347e141 [Bcfg2/.../mumudvb] Configuration "finale" pour mumudvb
On ajoute le bundler pour le paquet mumudvb
On met une exception si le probe chie (peut etre qu'on peut faire ca
plus clean)
On appelle les nouveaux scripts de generation de la conf

darcs-hash:20090410124245-c9953-87ad38835be5ca992b0009e944083128e7fd0812.gz
2009-04-10 14:42:45 +02:00

246 lines
6.8 KiB
Python

# -*- coding: utf-8; mode: python -*-
import sre
include("ip")
info["owner"] = "root"
info["group"] = "root"
info["perms"] = 0644
header()
import sys
def service(group,
name=None,
init=None,
pidf=None,
pidp=None,
extra=[],
max_restart=5):
if group == None or has(group):
name = name or group
init = init or name
pidf = pidf or name
pidp = pidp or "/var/run/%s.pid" % pidf
print ('''# %(name)s
check process %(name)s with pidfile %(pidp)s
start program = "/etc/init.d/%(init)s start"
stop program = "/etc/init.d/%(init)s stop"''' %
{ "name": name,
"pidp": pidp,
"init": init })
for line in extra:
if line:
print " ", line
print " if %d restarts within 5 cycles then timeout" % max_restart
print
service("apache",
name="apache2",
extra=[ has("http-server") and "if failed host localhost port 80 protocol http timeout 30 seconds then restart",
has("https-server") and "if failed host localhost port 443 type tcpssl protocol http timeout 30 seconds then restart",
has("intranet-server") and "if failed host intranet.crans.org port 443 type tcpssl protocol http timeout 30 seconds then restart",
"if cpu is greater than 60% for 2 cycles then alert",
"if cpu > 80% for 5 cycles then restart",
"if totalmem > 500.0 MB for 5 cycles then restart",
"if children > 250 then restart",
"if loadavg(5min) greater than 10 for 8 cycles then restart",
],
max_restart=3)
service("at",
init="atd",
pidf="atd")
service("cherrypy",
name="intranet")
service("backuppc-server",
name="backuppc",
pidf="backuppc/BackupPC")
service("bind",
init="bind9",
pidf="bind/run/named")
service("cups",
init="cupsys",
pidf="cups/cupsd")
service("cron",
pidf="crond")
if has("firewall"):
service(None,
name="netacct",
pidf="nacctd",
init="net-acct")
service(None,
name="filtrage_netacct")
service(None,
name="filtrage_firewall")
service("dhcp-detect")
service("freeradius",
pidf="freeradius/freeradius")
service("inn",
pidf="news/innd",
init="inn2")
service("mailman",
pidf="mailman/mailman")
service("monit-ovh")
service("mysql",
pidf="mysqld/mysqld")
service("munin-node",
pidf="munin/munin-node")
service("nscd",
pidf="nscd/nscd",
extra=["if failed unixsocket /var/run/nscd/socket then restart"])
service("postfix",
pidp="/var/spool/postfix/pid/master.pid",
extra=["if failed port 25 protocol smtp timeout 30 seconds then restart"])
service("openvpn-ovh",
pidf="openvpn.ovh",
init="openvpn")
service("openvpn-komaz",
pidf="openvpn.komaz",
init="openvpn")
service("openvpn-freebox",
pidf="openvpn.freebox",
init="openvpn",
extra=["depends on openvpn-komaz"])
service("pgsql",
name="postgresql",
init="postgresql-7.4",
pidp="/var/lib/postgres/data/postmaster.pid",
extra=["if failed port 5432 timeout 30 seconds then restart"])
service("privoxy",
extra=["if failed host localhost port 8117 timeout 30 seconds then restart"])
service("proftpd",
extra=["if failed port 21 protocol ftp timeout 30 seconds then restart"])
service("rsync")
service("slapd",
pidp="/var/run/slapd/slapd.pid",
extra=["if failed host localhost port 389 protocol ldap3 timeout 30 seconds then restart"])
service("spamassassin",
name="spamd",
init="spamassassin")
service("sqlgrey")
service("ssh",
pidf="sshd",
extra=["if failed port 22 protocol ssh timeout 30 seconds then restart",
"if children > 200 then restart"])
service("syslog-ng",
extra=["depend on file/var/log/syslog"])
if has('adm-only'):
vsftpd_ip = admip()
else:
vsftpd_ip = pubip()
service("vsftpd",
pidf="vsftpd/vsftpd",
extra=["if failed host %s port 21 protocol ftp timeout 30 seconds then restart" % vsftpd_ip])
service("vsftpd-federez",
extra=["if failed host 138.231.136.129 port 21 protocol ftp timeout 30 seconds then restart"])
dernierecarte=int(metadata.probes["cartesdvb"])
try:
cartesdesactivees=map(lambda x : int(x),metadata.probes["cartesdvbdesactivees_local"].split(' '))
except:
cartesdesactivees=[]
if dernierecarte:
print "# Il y a %d carte(s) DVB sur ce serveur dont %d cartes desactivee(s)\n" % (dernierecarte,len(cartesdesactivees))
for i in range(0,dernierecarte):
if not i in cartesdesactivees:
service("mumudvb",
name = "mumudvb%d" % i,
init = "mumudvb",
pidf = "mumudvb/mumudvb_carte%d" % i)
@check file file/var/log/syslog with path /var/log/syslog
@ if timestamp > 15 minutes then alert
@
# on ne monitore pas les disques de canard
if hostname in ['canard'] :
done()
for line in metadata.probes["fstab_local"].splitlines():
# on supprime les espaces
line = line.strip()
# on saute les lignes inintérassantes
if not line :
continue
if line[0] == "#" :
continue
# on découpe la ligne
[fs, mntpoint, type, options, dump, pass_] = sre.split('[ \t]*',line)
options = options.split(",")
# on saute si c'est une partition non montée au démarrage
if "noauto" in options:
continue
# on saute si c'est une partition bind
if "bind" in options:
continue
# on saute les système pas intéressants
if type in ['swap','proc','tmpfs','sysfs', 'nfs', 'devpts']:
continue
# on ajoute les lignes de configuration générale
comment("partition %s" % mntpoint)
print 'check device fs%s with path %s' % (mntpoint, fs)
print ' if failed permission 660 then alert'
print ' if failed uid root then alert'
# place sur les disques
alert_level = {
('sable','/var/spool/squid1') : None,
('sable','/var/spool/squid2') : None,
('egon','/pubftp') : 95,
('sable','/var/log/squid') : 92,
('sila','/pubftp') : 92,
('news','/var') : 90
}.get((hostname, mntpoint), -1)
if alert_level == -1:
if mntpoint in ('/usr', '/var/lib/mailman', '/localhome' , '/home') or has('domu'):
alert_level = 90
else:
alert_level = 80
if alert_level:
print ' if space usage > %d%% then alert' % alert_level
# inodes pour les disques
if type != 'reiserfs' :
print ' if inode usage > 80% then alert'
print ' mode passive'
print