viernes, 14 de diciembre de 2018

Instalar Nagios integrado con Pnp4nagios + Check_Mk + Nagvis sobre Centos 7


Hace tiempo atrás, había instalado Nagios para monitorear la infraestructura de TI, en estos días quise documentar la instalación con  los últimas versiones disponibles partiendo de una instalación mínima con CENTOS 7, espero les guste y no haber omitido ningún detalle, así que manos a la obra!!!

Verifique que se haya asignada una dirección IP al dispositivo de red principal:
ip addr

si su Dispositivos de red está inactivo y  realizó la instalación mínima sin agregar grupos de paquetes al diseño predeterminado o bien sin configurar dispositivos de red, descubrirá que los dispositivos de red están desactivados. Edite los archivos de configuración de cada dispositivo de red:

 /etc/sysconfig/network-scripts/ifcfg-ens33

Asegúrese que al menos una de los dispositivos de red tenga la opción «ONBOOT» con el valor «yes»:
 
ONBOOT="yes"
Una vez que ya tenemos conexión a la red, vamos a entretenernos con la instalación:

1: Instalación de apache

yum install httpd
service httpd start
yum install php php-mysql

2: Descargar paquetes Nagios y extras
Yum install wget
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.2.tar.gz
wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
tar -xzf nagios-4.4.2.tar.gz
tar -xzf nagios-plugins-2.2.1.tar.gz
3: Instalar paquetes requeridos
yum install httpd php gcc glibc glibc-common gd gd-devel perl unzip –y
Esperamos y nos tomamos un café o jugamos una partida de algo.
4: Agregar usuarios y asignar permisos
/usr/sbin/useradd -m nagios
passwd nagios
/usr/sbin/groupadd nagcmd # Used for Web Interface
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd apache

5: Compilar y Ejecutar
Cd nagios-4.4.2
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf
Ahora configuramos la seguridad para el front end
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
service nagios restart
service httpd restart
6: Instalar plugin de nagios
Cd ..
cd nagios-plugins-2.1.1
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
Agregamos Nagios como Servicio
chkconfig --add nagios
chkconfig nagios on
Verify the sample Nagios configuration files.
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
service nagios start
7: Deshabilitar selinux
nano /etc/sysconfig/selinux
and set SELINUX=disabled
reboot the machine

8: Add firewall rules
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=444/tcp --permanent
firewall-cmd --zone=public --add-port=25/tcp --permanent
firewall-cmd --reload
systemctl restart nagios
systemctl restart httpd
9: Installation NRPE
yum groupinstall "Development Tools"
wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz
tar -xzf nrpe-3.2.1.tar.gz
cd nrpe
yum install -y gcc glibc glibc-common openssl openssl-devel perl wget
./configure --enable-command-args --with-nagios-user=nagios --with-nagios-group=nagios --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu
make all
make install
make install-plugin
make install-daemon
--nano /etc/xinetd.d/nrpe
--and add only_from = your interal ip
--service xinetd restart
Si va todo bien hasta aquí, ya podemos ingresar a nagios http://IP/nagios
10: Instalación de pnp4nagios
yum install rrdtool perl-Time-HiRes rrdtool-perl php-gd
wget https://downloads.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.26.tar.gz
download pnp4 nagios (https://downloads.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.26.tar.gz)
tar –zxf pnp4nagios-0.6.26.tar.gz
cd pnp4nagios-0.6.26
./configure
make
make all
make fullinstall
chkconfig --add npcd && chkconfig --level 35 npcd on
systemctl reload httpd
mv /usr/local/pnp4nagios/share/install.php /usr/local/pnp4nagios/share/install.php-ori
11: editar archivo nagios.cfg
usr/local/nagios/etc/nagios.cfg
add / edit
# Bulk / NPCD mode
process_performance_data=1
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECH$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=15
service_perfdata_file_processing_command=process-service-perfdata-file

host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$
host_perfdata_file_mode=a
host_perfdata_file_processing_interval=15
host_perfdata_file_processing_command=process-host-perfdata-file

12: edit commands.cfg
/usr/local/nagios/etc/objects/commands.cfg
# 'process-host-perfdata' command definition
define command{
command_name process-host-perfdata
command_line /usr/bin/printf "%b" "$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$$
}
# 'process-service-perfdata' command definition
define command{
command_name process-service-perfdata
command_line /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$$
}
define command{
command_name process-service-perfdata-file
command_line /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$
}
define command{
command_name process-host-perfdata-file
command_line /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$
}
13: editar el archivo templates.cfg
/usr/local/nagios/etc/objects/templates.cfg
define host {
name host-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
register 0
}
define service {
name srv-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
register 0
}
Step 14: editamos un host o localhost
define host{
 use linux-server,host-pnp
 host_name localhost
 alias localhost
 address 127.0.0.1
 }
define service{
 use local-service,srv-pnp
 host_name localhost
 service_description PING
 check_command check_ping!100.0,20%!500.0,60%
 }
cp /root/pnp4nagios-0.6.26/contrib/ssi/status-header.ssi /usr/local/nagios/share/ssi/
systemctl restart npcd
systemctl restart httpd
systemctl restart nagios
Ahora si pasamos solo el ratón por el icono nos muestra ya un popup con la gráfica
15: instalación de check_mk
Para después instslar nagvis necesitamos (check_mk)
wget 'http://www.mathias-kettner.de/download/mk-livestatus-1.2.8.tar.gz'
tar -xzf mk-livestatus-1.2.8.tar.gz
./configure --with-nagios4
make
make install                                                                                                     
si te da error prueba es porque te faltan paquetes, prueba con estos
yum install libstdc++-static
Si deseas instalar check-mk realiza lo siguiente, con su interfaz realiza lo siguiente:
yum install xinetd openssl -y
yum install python -y
yum install epel-release -y

yum install --nogpgcheck check-mk-raw-1.4.0p12-el7-59.x86_64.rpm
omd create sandbox
su - sandbox
omd start
htpasswd -m ~/etc/htpasswd cmkadmin
 
http://IP/sandbox, usando las crendeciales cmkadmin
16: editar archivo  nagios.Cfg
/usr/local/nagios/etc/nagios.cfg
and add : broker_module=/usr/local/lib/mk-livestatus/livestatus.o /usr/local/nagios/var/rw/live
service nagios restart
Revisar que el log se incia el agente correctamente
Yum install nano
nano /usr/local/nagios/var/nagios.log
17: Instalación de nagvis
wget http://www.nagvis.org/share/nagvis-1.9.10.tar.gz
tar -xzf nagvis
./install
Por último editamos el fichero de configuración que nos crea para apache en /etc/httpd/conf.d/nagvis.conf y hacemos un par de cambios para que funcione correctamente en esta versión de apache (2.4):
  #AllowOverride None
  Require all granted
Service httpd restart
Ingresamos  http://IP/nagvis
Lo primero que tendremos que hacer en Nagvis será probar que funciona el acceso a los datos de nuestro nagios a través de mklivestatus.
Ir a un mapa existente (p.e. “Demo1. Datacenter Hamburg”).
    Menu Edit map / lock-unlock all
    Menu Edit Map / Map Options / listbox “backend_id” y selecciona live_1 (save).
    Menu  Edit Map / Add Icon / Host, sitúa el puntero en el map, selecciona un un host en el “listbox” (tendrás al menos tu localhost) y listo.
    Menu Edit map / lock-unlock all  para quitar el modo edición.

18: Integración con Slack (Opcional)
yum install perl perl-devel -y
yum install perl-Net-SSLeay
yum install perl-libwww-perl
yum install perl-Crypt-SSLeay
yum install perl-LWP-Protocol-https
wget https://raw.github.com/tinyspeck/services-examples/master/nagios.pl
cp nagios.pl /usr/local/bin/slack_nagios.pl
chmod 755 /usr/local/bin/slack_nagios.pl

Editar el archivo con las credenciales abajo: /usr/local/bin/slack_nagios.pl
my $opt_domain = "yourdomain.slack.com"; # Su dominio
my $opt_token = "yoursecret"; # El token de tu página de servicios de Nagios

Step 19: En el mismo archivo editamos contacts
Quitamos el comentario
define contact {
contact_name slack
alias Slack
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-slack
host_notification_commands notify-host-by-slack
}
Listo tendremos instalado NAGIOS http://IP/nagios
Bueno espero que les haya gustado y funcionado he tratado de no omitir ningún detalle.
Nos vemos en la próxima!!!

lunes, 18 de junio de 2018

RENOVAR CERTIFICADO EN LINUX CENTOS

Volviendo con un nueva entrada, esta vez se me presento la necesidad de renovar un certificado SSL en un servidor LAMP (LINUX, APACHE, MYSQL y PHP).

Bueno les explico, el servidor tenia el certificado SSL expirado, y la idea era renovarlo, y me puse manos a la obra:

Lo primero que hice fue eliminar o renombrar los certificados actuales expirados, que se encuentran en la siguiente ubicacion:

/etc/pki/tls/certs/localhost.crt
/etc/pki/tls/private/localhost.key

opte por renombrarlos, una vez renombrados hay que solicitar la generacion de unos nuevos, pero por defecto al solicitarlos el tiempo es de 365 dias, pero si deseamos que el certificado dure por mas tiempo usamos el parametro days, quedando de la siguiente forma

genkey localhost --days 650 localhost

Si lo deseas generar por 10 anos, seria modificar el parametro de days de tal forma

genkey localhost --days 3650

La nueva clave se almacenarán en la siguiente ruta:
/etc/pki/tls/private/localhost.key

El nuevo certificado sera almacenado en la siguiente ruta:
/etc/pki/tls/certs/localhost.crt

Damos clik en SIGUIENTE, donde nos preguntara sobre el tamaño del certificado, el cual es directamente proporcional a la seguridad y tiempo de las claves (parámetro --days), en nuestro caso es suficiente seleccionar 2048 y luego damos clik en SIGUIENTE. Luego se tomara un tiempo en generar los bits aleatorios (dependiendo de la longitud seleccionada).

Al ejecutarlo mostrara una pantalla con la siguiente informacion que se generara un nuevo par de claves que se utilizarán para cifrar todo el tráfico SSL con el servidor llamado localhost

Opcionalmente también puede crear .csr Certificado de Solicitud de Firma y envíelo a una Autoridad de Certificación (CA) para la firma.para este caso seleccionamos NO.

Despues nos pregunta si queremos encriptar la clave privada (localhost.key), en nuestro seleccionamos NO.

Finalmente ingresamos los datos para nuestro certificado, como el código del país, la localidad el nombre de la empresa, etc. y luego damos clik en Siguiente, y habremos terminado de generar los certificados.

Espero que les sirva de ayuda, nos vemos en la proxima entrada.