{"id":44,"date":"2020-04-30T11:47:00","date_gmt":"2020-04-30T11:47:00","guid":{"rendered":"https:\/\/www.mainmind.com\/blog\/?p=44"},"modified":"2020-07-29T09:18:49","modified_gmt":"2020-07-29T09:18:49","slug":"monitorizacion-de-servicios-con-icinga","status":"publish","type":"post","link":"https:\/\/www.mainmind.com\/blog\/monitorizacion-de-servicios-con-icinga\/","title":{"rendered":"Monitorizaci\u00f3n de servicios con ICINGA"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Existe una comunidad y popularidad grandes alrededor de <a href=\"https:\/\/www.nagios.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Nagios<\/a>, pero tenemos la alternativa gratuita de <a href=\"https:\/\/icinga.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">ICINGA<\/a> con la que realizaremos esta instalaci\u00f3n sobre <a href=\"https:\/\/www.centos.org\/download\/\" target=\"_blank\" rel=\"noopener noreferrer\">CentOS 8<\/a><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"\/blog\/wp-content\/uploads\/\/2020\/ICINGA\/login_web.JPG\" alt=\"\" width=\"426\" height=\"280\"\/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Comprobamos actualizaciones del sistema operativo para ver si estamos al d\u00eda:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">sudo dnf update<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Instalamos desde el repositorio, m\u00e1s de 330 MB:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">dnf install https:\/\/packages.icinga.com\/epel\/icinga-rpm-release-6-latest.noarch.rpm<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Instalamos dependencias del repositorio EPEL:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">dnf install 'dnf-command(config-manager)'\ndnf config-manager --set-enabled PowerTools\ndnf install epel-release<\/pre>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">Empezamos con el&nbsp;paquete principal, y a\u00f1adimos en el arranque del sistema:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">dnf install icinga2\nsystemctl enable icinga2 --now<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Instalamos todos los plugins compartidos\/compatibles de nagios, ser\u00e1n casi 25 MB y comprobamos el estado:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">dnf install nagios-plugins-all\nsystemctl status icinga2<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Empezamos con la instalaci\u00f3n de SELInux requerido para el control de acceso, para una instalaci\u00f3n m\u00e1s sencilla en esta demo activaremos el <a href=\"https:\/\/access.redhat.com\/documentation\/en-us\/red_hat_enterprise_linux\/8\/html-single\/using_selinux\/index\" target=\"_blank\" rel=\"noopener noreferrer\">modo permisivo<\/a>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">dnf install icinga2-selinux\nsudo setenforce 0\nsudo sed -i 's\/^SELINUX=.*\/SELINUX=permissive\/g' \/etc\/selinux\/config\nsestatus<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/blog\/wp-content\/uploads\/\/2020\/ICINGA\/selinux_status.JPG\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Para el modulo web necesitaremos instalar la Base de Datos (tambi\u00e9n es posible en PostgreSQL)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">dnf install mariadb-server mariadb\nsystemctl enable mariadb --now<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Iniciamos la instalaci\u00f3n y definimos las claves del usuario root con el asistente, adem\u00e1s de instalar el modulo IDO:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">mysql_secure_installation\ndnf install icinga2-ido-mysql<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Creamos la base de datos en blanco con el usuario y contrase\u00f1a que queramos:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">mysql -u root -p\nCREATE DATABASE icinga;\nGRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'Pass4ever$';\nquit<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/blog\/wp-content\/uploads\/\/2020\/ICINGA\/mysql_01.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Con la BBDD en blanco importamos el esquema:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">mysql -u root -p icinga &lt; \/usr\/share\/icinga2-ido-mysql\/schema\/mysql.sql<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Seg\u00fan los datos con los que creamos la BBDD indicamos la conexi\u00f3n el fichero<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">sudo vim \/etc\/icinga2\/features-available\/ido-mysql.conf<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Habilitamos IDO y reiniciamos:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">icinga2 feature enable ido-mysql\nsudo systemctl restart icinga2<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora que ya tenemos la BBDD continuamos con el servidor web Apache, recomendando habilitar HTTPS en lugar de HTTP:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">sudo dnf install httpd php-json php-ldap\nfirewall-cmd --zone=public --permanent --add-service=http\nfirewall-cmd --zone=public --permanent --add-service=https\nfirewall-cmd --reload\n\niptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT\niptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT\nsudo service iptables save<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si no tenemos instalado PHP-FPM para el servicio web, ser\u00e1 necesario PHP &gt;= 5.6.0<br>Ojo porque no todas las versiones de PHP son soportadas en estos momentos, optamos por la 7.2 ya que <a href=\"https:\/\/github.com\/Icinga\/icingaweb2\/issues\/4009\" target=\"_blank\" rel=\"noopener noreferrer\">fuera de la RC no hay soporte para PHP 7.4<\/a>&nbsp;y los m\u00f3dulos cURL, gettext, intl, mbstring, OpenSSL y xml<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Comprobamos las versiones disponibles en los repositorios:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">sudo dnf module list | grep php\n\nsudo dnf module install php:7.2\nsudo dnf install php php-fpm\nsudo dnf install php-intl php-gd php-mysqlnd<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ya deber\u00eda estar instalador, pero comprobamos:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">sudo dnf install php-curl php-gettext php-openssl php-mbstring php-xml php-zip php-gd php-dom php-ldap\n\nsudo dnf install -y php php-devel php-pear make<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">No nos olvidemos de Image Magick como requisito:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">sudo dnf install ImageMagick-devel\nsudo dnf install ImageMagick\n\nsudo pecl install imagick\necho \"extension=imagick.so\" &gt; \/etc\/php.d\/20-imagick.ini\nsystemctl restart httpd<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Comprobamos que aparezca entre los modulos disponibles de PHP y activamos al inicio:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">php -m\nsudo systemctl enable php-fpm.service --now<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/blog\/wp-content\/uploads\/\/2020\/ICINGA\/imagemagick.JPG\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Revisamos la versi\u00f3n de PHP activa, en nuestro caso 7.2.11 y&nbsp;configuramos el inicio autom\u00e1tico y arrancamos el servidor web<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">php -v\nsystemctl enable httpd --now\nsudo dnf install icingacli icingaweb2<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para habilitar REST API para el env\u00edo de comandos y comunicaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">icinga2 api setup\nsystemctl restart icinga2<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/blog\/wp-content\/uploads\/\/2020\/ICINGA\/rest_api.JPG\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Se generan usuario y claves aleatorios en:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">vim \/etc\/icinga2\/conf.d\/api-users.conf<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Llegados a este punto, comprobamos que no tengamos errores antes de continuar:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">sudo tail \/var\/log\/icinga2\/icinga2.log<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Continuamos con la configuraci\u00f3n en el servicio web y reiniciamos:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">sudo icingacli setup config webserver apache\nsudo systemctl restart httpd<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Necesitaremos un token de autenticaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">sudo icingacli setup token create<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ya podemos acceder via web al asistente de configuraci\u00f3n:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"http:\/\/IP_CENTOS8\/icingaweb2\/setup\">http:\/\/IP_CENTOS8\/icingaweb2\/setup<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/blog\/wp-content\/uploads\/\/2020\/ICINGA\/icingaweb2_first_login.JPG\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Continuamos la instalaci\u00f3n guiados por el asistente hasta finalizar el proceso seg\u00fan nuestras preferencias y requisitos:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/blog\/wp-content\/uploads\/\/2020\/ICINGA\/icingaweb2_wizard.JPG\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Con este \u00faltimo paso ha finalizado por completo la instalaci\u00f3n, podemos a\u00f1adir&nbsp;nuestro primer host, <a href=\"https:\/\/packages.icinga.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">descargamos el agente<\/a> para el sistema operativo correspondiente (o cualquier dispositivo SNMP, router, switch&#8230;) la funci\u00f3n b\u00e1sica de PING debemos permitirla a trav\u00e9s del firewall del host:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Editamos y a\u00f1adimos al final del fichero en el servidor:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">vim \/etc\/icinga2\/conf.d\/hosts.conf<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:plain;auto-links:false;toolbar:false\">object Host \"MISERVIDOR\" {\naddress = \"10.0.0.200\"\ncheck_command = \"hostalive\"\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Reiniciamos el servicio<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">systemctl restart icinga2.service<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><em><strong>Otras opciones y consejos \u00fatiles durante el proceso:<\/strong><\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instalaci\u00f3n opcional de la sintaxis y edici\u00f3n en Vim o en Nano para facilitar la edici\u00f3n de ficheros de configuraci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">sudo dnf install vim-icinga2\nsudo dnf install nano-icinga2<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si al intentar ejecutar el modulo setup nos indica que no existe, lo habilitamos:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">icingacli module enable setup\nsudo dnf install icingaweb2-module-setup<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si hab\u00edamos generado un token y no lo recordamos:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">icingacli setup token show<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para monitorizar y enviar comandos necesitaremos abrir el puerto 5665 en nuestro servidor ICINGA:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush:bash;auto-links:false;toolbar:false\">firewall-cmd --zone=public --permanent --add-port 5665\/tcp\niptables -A INPUT -p tcp -m tcp --dport 5665 -j ACCEPT\nfirewall-cmd --reload<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Existe una comunidad y popularidad grandes alrededor de Nagios, pero tenemos la alternativa gratuita de ICINGA con la que realizaremos esta instalaci\u00f3n sobre CentOS 8 Comprobamos actualizaciones del sistema operativo para ver si estamos al d\u00eda: sudo dnf update Instalamos desde el repositorio, m\u00e1s de 330 MB: dnf install https:\/\/packages.icinga.com\/epel\/icinga-rpm-release-6-latest.noarch.rpm Instalamos dependencias del repositorio EPEL: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[40,110,226],"class_list":["post-44","post","type-post","status-publish","format-standard","hentry","category-networking","tag-icinga","tag-install","tag-primero-pasos"],"_links":{"self":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts\/44","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/comments?post=44"}],"version-history":[{"count":0,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/posts\/44\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/media?parent=44"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/categories?post=44"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mainmind.com\/blog\/wp-json\/wp\/v2\/tags?post=44"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}