En este artículo, describiré cómo puede monitorear su servidor CentOS 5.2 con munin y monit. munin produce pequeños gráficos ingeniosos sobre casi todos los aspectos de su servidor (promedio de carga, uso de memoria, uso de CPU, rendimiento de MySQL, tráfico eth0, etc.) sin mucha configuración, mientras que monit verifica la disponibilidad de servicios como Apache, MySQL, Postfix y toma la acción adecuada, como un reinicio, si encuentra que un servicio no se comporta como se esperaba. La combinación de los dos le brinda un monitoreo completo:gráficos que le permiten reconocer problemas actuales o futuros (como "Necesitamos un servidor más grande pronto, nuestro promedio de carga está aumentando rápidamente") y un perro guardián que garantiza la disponibilidad de los servicios monitoreados. .
Aunque munin le permite monitorear más de un servidor, aquí solo discutiremos el monitoreo del sistema donde está instalado.
Este tutorial se escribió para CentOS 5.2, pero la configuración también debería aplicarse a otras distribuciones con pequeños cambios.
Primero quiero decir que esta no es la única forma de establecer un sistema de este tipo. Hay muchas maneras de lograr este objetivo, pero este es el camino que tomo. ¡No emito ninguna garantía de que esto funcione para usted!
1 nota preliminar
El nombre de host de nuestro sistema es server1.example.com, y tenemos un sitio web www.example.com con la raíz del documento /var/www/www.example.com/web.
2 Habilitar el repositorio RPMforge
En CentOS 5.2, munin y monit no están disponibles en los repositorios predeterminados de CentOS. Afortunadamente podemos instalarlos desde el repositorio de RPMforge. Para habilitar el repositorio de RPMforge, ejecutamos
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rm -f rpmforge-release-0.3.6-1.el5.rf.i386.rpm
en servidores i386 y
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rm -f rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
en hosts x86_64 (consulte https://rpmrepo.org/RPMforge/Using para obtener las últimas versiones).
3 Instalar y configurar munin
Para instalar munin en CentOS 5.2, hacemos esto:
yum install munin munin-node
Luego creamos los enlaces de inicio del sistema para munin y lo iniciamos:
chkconfig --levels 235 munin-node on
/etc/init.d/munin-node start
A continuación, debemos editar el archivo de configuración de munin /etc/munin/munin.conf. Queremos que Munin coloque su salida en el directorio /var/www/www.example.com/web/monitoring, por lo tanto, cambiamos el valor de htmldir y queremos que use el nombre server1.example.com en lugar de localhost. localdomain en la salida HTML, por lo tanto, reemplazamos localhost.localdomain con server1.example.com. Sin los comentarios, el archivo modificado se ve así:
vi /etc/munin/munin.conf
[...] dbdir /var/lib/munin htmldir /var/www/www.example.com/web/monitoring logdir /var/log/munin rundir /var/run/munin # Where to look for the HTML templates tmpldir /etc/munin/templates [...] # a simple host tree [server1.example.com] address 127.0.0.1 use_node_name yes [...] |
AuthType Basic AuthName "Members Only" AuthUserFile /var/www/www.example.com/.htpasswd <limit GET PUT POST> require valid-user </limit> |
set daemon 60 set logfile syslog facility log_daemon set mailserver localhost set mail-format { from: [email protected] } set alert [email protected] set httpd port 2812 and SSL ENABLE PEMFILE /var/certs/monit.pem allow admin:test check process proftpd with pidfile /var/run/proftpd.pid start program = "/etc/init.d/proftpd start" stop program = "/etc/init.d/proftpd stop" if failed port 21 protocol ftp then restart if 5 restarts within 5 cycles then timeout check process sshd with pidfile /var/run/sshd.pid start program "/etc/init.d/sshd start" stop program "/etc/init.d/sshd stop" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout check process mysql with pidfile /var/run/mysqld/mysqld.pid group database start program = "/etc/init.d/mysqld start" stop program = "/etc/init.d/mysqld stop" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout check process apache with pidfile /var/run/httpd.pid group www start program = "/etc/init.d/httpd start" stop program = "/etc/init.d/httpd stop" if failed host www.example.com port 80 protocol http and request "/monit/token" then restart if cpu is greater than 60% for 2 cycles then alert if cpu > 80% for 5 cycles then restart if totalmem > 500 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if 3 restarts within 5 cycles then timeout check process postfix with pidfile /var/spool/postfix/pid/master.pid group mail start program = "/etc/init.d/postfix start" stop program = "/etc/init.d/postfix stop" if failed port 25 protocol smtp then restart if 5 restarts within 5 cycles then timeout |
if failed host www.example.com port 80 protocol http and request "/monit/token" then restart |
# create RSA certs - Server RANDFILE = ./openssl.rnd [ req ] default_bits = 1024 encrypt_key = yes distinguished_name = req_dn x509_extensions = cert_type [ req_dn ] countryName = Country Name (2 letter code) countryName_default = MO stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = Monitoria localityName = Locality Name (eg, city) localityName_default = Monittown organizationName = Organization Name (eg, company) organizationName_default = Monit Inc. organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = Dept. of Monitoring Technologies commonName = Common Name (FQDN of your server) commonName_default = server.monit.mo emailAddress = Email Address emailAddress_default = [email protected] [ cert_type ] nsCertType = server |