GNU/Linux >> Tutoriales Linux >  >> Cent OS

Monitoreo de servidores con munin y monit en CentOS 5.2

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

A continuación, creamos el directorio /var/www/www.example.com/web/monitoring y cambiamos su propiedad al usuario y grupo munin, de lo contrario, munin no puede colocar su salida en ese directorio. Luego reiniciamos munin:

mkdir -p /var/www/www.example.com/web/monitoring
chown munin:munin /var/www/www.example.com/web/monitoring
/etc/init.d/munin-node restart

Ahora espere unos minutos para que munin pueda producir su primera salida, y luego vaya a http://www.example.com/monitoring/ en su navegador, y verá las primeras estadísticas. Después de unos días, esto podría verse así:

(Esto es solo un pequeño extracto de los muchos gráficos que produce munin...)

4 Proteger con contraseña el directorio de salida de munin (opcional)

Ahora es una buena idea proteger con contraseña el directorio /var/www/www.example.com/web/monitoring a menos que desee que todos puedan ver cada pequeña estadística sobre su servidor.

Para ello, creamos un archivo .htaccess en /var/www/www.example.com/web/monitoring:

vi /var/www/www.example.com/web/monitoring/.htaccess
[...]
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
[...]

Luego debemos crear el archivo de contraseñas /var/www/www.example.com/.htpasswd. Queremos iniciar sesión con el nombre de usuario admin, así que hacemos esto:

htpasswd -c /var/www/www.example.com/.htpasswd admin

Ingrese una contraseña para administrador, ¡y listo!

5 Instalar y configurar monitor

A continuación instalamos monit:

yum install monit

Luego creamos los enlaces de inicio del sistema para monit:

chkconfig --levels 235 monit on

El archivo de configuración predeterminado de monit es /etc/monit.conf donde puede encontrar algunos ejemplos de configuración (puede encontrar más ejemplos de configuración en http://mmonit.com/wiki/Monit/ConfigurationExamples) que están todos comentados, pero le dice a monit para buscar también en el directorio /etc/monit.d los archivos de configuración, por lo tanto, en lugar de modificar /etc/monit.conf, creamos un nuevo archivo de configuración /etc/monit.d/monitrc. En mi caso quiero monitorear proftpd, sshd, mysql, apache y postfix, quiero habilitar la interfaz web monit en el puerto 2812, quiero una interfaz web https, quiero registrar in to la interfaz web con el nombre de usuario admin y la prueba de contraseña, y quiero que monit envíe alertas por correo electrónico a [email protected], por lo que mi archivo se ve así:

vi /etc/monit.d/monitrc
AuthType Basic
AuthName "Members Only"
AuthUserFile /var/www/www.example.com/.htpasswd
<limit GET PUT POST>
require valid-user
</limit>

(Asegúrese de verificar solo los procesos que realmente existen en su servidor; de lo contrario, monit no se iniciará. Es decir, si le dice a monit que verifique Postfix, pero Postfix no está instalado en el sistema, monit no se iniciará).

El archivo de configuración es bastante autoexplicativo; si no está seguro acerca de una opción, eche un vistazo a la documentación de monit:http://mmonit.com/monit/documentation/monit.html

En la parte de apache de la configuración de monit encontrarás esto:

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

lo que significa que monit intenta conectarse a www.example.com en el puerto 80 e intenta acceder al archivo /monit/token que es /var/www/www.example.com/web/monit/token porque la raíz del documento de nuestro sitio web es /var/www/www.ejemplo.com/web. Si monit no tiene éxito, significa que Apache no se está ejecutando y monit lo reiniciará. Ahora debemos crear el archivo /var/www/www.example.com/web/monit/token y escribir una cadena aleatoria en él:

mkdir /var/www/www.example.com/web/monit
echo "hello" > /var/www/www.example.com/web/monit/token

A continuación, creamos el certificado pem (/var/certs/monit.pem) que necesitamos para la interfaz web de monit cifrada con SSL:

mkdir /var/certs
cd /var/certs

Necesitamos un archivo de configuración de OpenSSL para crear nuestro certificado. Puede verse así:

vi /var/certs/monit.cnf
   if failed host www.example.com port 80 protocol http
      and request "/monit/token" then restart

Ahora creamos el certificado así:

openssl req -new -x509 -days 365 -nodes -config ./monit.cnf -out /var/certs/monit.pem -keyout /var/certs/monit.pem
openssl gendh 512 >> /var/certs/monit.pem
openssl x509 -subject -dates -fingerprint -noout -in /var/certs/monit.pem
chmod 700 /var/certs/monit.pem

Finalmente, podemos comenzar a monitorear:

/etc/init.d/monit start

Ahora apunte su navegador a https://www.example.com:2812/ (asegúrese de que su firewall no bloquee el puerto 2812), inicie sesión con admin y pruebe, y debería ver la interfaz web de monit. Debería verse así:

(Pantalla principal)

(Página de estado de Apache)

Dependiendo de su configuración en /etc/monit.d/monitrc, monit reiniciará sus servicios si fallan y enviará correos electrónicos de notificación si cambian los ID de proceso de los servicios, etc.

¡Diviértete!

6 Enlaces

  • munin:http://munin.projects.linpro.no
  • monitor:http://mmonit.com/monit
  • CentOS:http://www.centos.org
  • RPMforge:https://rpmrepo.org/RPMforge

Cent OS
  1. Monitoreo de servidores con Icinga 2 e Icingaweb 2 en CentOS 7

  2. Configuración de un servidor y cliente NFS en CentOS 7.2

  3. Supervise y administre sus servicios con Monit en CentOS 6 / RHEL 6

  4. Cómo monitorear el uso de recursos de su servidor con Munin en CentOS 6

  5. Instale Zenario con Apache, PHP y MariaDB en CentOS 7

Supervisión de servidores con Munin y Monit en Debian 10

Supervisión del servidor con Munin y Monit en Debian 8 (Jessie)

Monitoreo de servidores con Munin y Monit en CentOS 7

Monitoreo de servidores con Munin y Monit en CentOS 7.2

Monitoreo de servidor con munin y monit en Fedora 7

Configuración de un servidor OpenVPN con CentOS y Viscosity

    # 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