Ártica ST logotipo año 2020 Pandora FMS

CentOS 8: instalando Pandora FMS desde línea de comandos

Download PDF

O instalando desde paquetes, porque es más el trabajo del lado del sistema operativo que de la aplicación en sí misma. Siempre me gusta este paso a paso porque va a la médula del asunto y abona el terreno para una posible automatización.

Seguiremos paso a paso la documentación oficial de la casa de software Ártica ST, pero antes que nada pueden crear una cuenta nueva en DigitalOcean para que con nuestro código de referido pueda hacer sus prácticas con toda tranquilidad:

Digitalocean Sammy green heart balloon
Digitalocean Sammy green heart balloon

Tabla de contenido:

Entorno de trabajo

Actualizado el martes 16 de marzo de 2021.

Por supuesto que pueden utilizar cualquier entorno de virtualización, como VirtualBox, el cual recomendamos ampliamente, pero con DigitalOcean es cuestión de pocos minutos el tener todo funcionando.

Para crear una máquina virtual en DO sigan nuestro artículo pero seleccionen una imagen CentOS 8, obviamente. También deben crear un usuario con derechos de root para administrar el servidor. Como hoy 24 de diciembre estoy flojazo comiendo pan de jamón, hago este tutorial conectado remoto como root.

Objetivo

Pandora FMS es un sistema de monitorización con varios componentes que, por propósitos didácticos y/o practicidad los instalamos en un solo servidor. Para simplificar en dos grandes áreas, el trabajo es primero instalar la Consola y luego el Servidor, ambos de la versión comunitaria. Luego, si tienen más de 100 dispositivos pueden comprar la versión Enterprise; si tienen 35 o 70 las nuevas versiones Lite).

Digitalocean Sammy green heart balloon
Digitalocean Sammy green heart balloon

Configuración de repositorios

La configuración inicial es con las fuentes de los paquetes, todo de primera mano en este entorno que utiliza dnf y yum en vez de apt como en Debian.

dnf install -y epel-release tar dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf install -y epel-release tar dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf install -y epel-release tar dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf install -y epel-release tar dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf module reset php
dnf module reset php
dnf module install -y php:remi-7.3
dnf module install -y php:remi-7.3
dnf module install -y php:remi-7.3
dnf module install -y php:remi-7.3
yum install dnf-plugins-core -y
yum install dnf-plugins-core -y
yum config-manager --set-enabled powertools -y
yum config-manager –set-enabled powertools -y
CentOS 8 no acepta "PowerTools"
CentOS 8 no acepta «PowerTools»

Instalación de base de datos Percona

dnf install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
dnf install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
dnf install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
dnf install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm

Desinstalando MySQL

dnf module disable -y mysql
dnf module disable -y mysql

Instalando Percona

rm -rf /etc/my.cnf dnf install -y Percona-Server-server-57
rm -rf /etc/my.cnf dnf install -y Percona-Server-server-57

Dependencias de la Consola

Acá me sucedió que quise poner a prueba a CentOS 8 abriendo una segunda conexión remota para instalar las dependencias de la Consola mientras terminaba de instalar Percona, pero no funcionó pues siempre las siguientes órdenes se detuvieron a esperar el final de la instalación de Percona.

dnf install -y \
php \
postfix \
php-mcrypt \
php-cli \
php-gd \
php-curl \
php-session \
php-mysqlnd \
php-ldap \
php-zip \
php-zlib \
php-fileinfo \
php-gettext \
php-snmp \
php-mbstring \
php-pecl-zip \
php-xmlrpc \
libxslt \
wget \
php-xml \
httpd \
mod_php \
atk \
avahi-libs \
cairo \
cups-libs \
fribidi \
gd \
gdk-pixbuf2 \
ghostscript \
graphite2 \
graphviz \
gtk2 \
harfbuzz \
hicolor-icon-theme \
hwdata \
jasper-libs \
lcms2 \
libICE \
libSM \
libXaw \
libXcomposite \
libXcursor \
libXdamage \
libXext \
libXfixes \
libXft \
libXi \
libXinerama \
libXmu \
libXrandr \
libXrender \
libXt \
libXxf86vm \
libcroco \
libdrm \
libfontenc \
libglvnd \
libglvnd-egl \
libglvnd-glx \
libpciaccess \
librsvg2 \
libthai \
libtool-ltdl \
libwayland-client \
libwayland-server \
libxshmfence \
mesa-libEGL \
mesa-libGL \
mesa-libgbm \
mesa-libglapi \
pango \
pixman \
xorg-x11-fonts-75dpi \
xorg-x11-fonts-misc \
poppler-data \
php-yaml
Dependencias de la Consola
Dependencias de la Consola
instalación de las dependencias de la consola PAUSADA esperando por finalizar a instalación de Percona.
Instalación de las dependencias de la consola PAUSADA esperando por finalizar a instalación de Percona.
Finalización de la instalación de Percona.
Finalización de la instalación de Percona.

Pero cuando por fin terminó de instalar Percona, el caché con los paquetes quedó corrupto y tuve que utilizar «dnf clean packages» y repetir la larga orden de dependencias.

dnf clean packages
dnf clean packages
Dependencias de la Consola instaladas
Dependencias de la Consola instaladas

Instalación de Phantomjs

dnf install -y http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm
dnf install -y http://firefly.artica.es/centos8/phantomjs-2.1.1-1.el7.x86_64.rpm

Instalación de dependencias del servidor

Instalación de dependencias del servidor
Instalación de dependencias del servidor

Instalación de WMI

dnf install -y http://firefly.artica.es/centos8/wmi-1.3.14-4.el7.art.x86_64.rpm
dnf install -y http://firefly.artica.es/centos8/wmi-1.3.14-4.el7.art.x86_64.rpm

Instalación de Perl Telnet

dnf install -y http://firefly.artica.es/centos8/perl-Net-Telnet-3.04-1.el8.noarch.rpm
dnf install -y http://firefly.artica.es/centos8/perl-Net-Telnet-3.04-1.el8.noarch.rpm

Instalación de Xprobe2 para Centos 7

dnf install -y http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm
dnf install -y http://firefly.artica.es/centos7/xprobe2-0.3-12.2.x86_64.rpm

Variables de instalación

Esta fue la parte que más me gustó de la instalación:

Variables de instalación
Variables de instalación
  • Muy importante y he resaltado en l imagen anterior: colocar nuestros usuarios y contraseñas y anotar y guardar en lugar seguro.
  • Recordar siempre que si desconectamos o perdemos la conexión, o reiniciamos la máquina (como fue mi caso cuando deshablité SELinux -más adelante veremos-) pues que debemos introducir de nuevo estos valores que copio a continuación:
PANDORA_CONSOLE=/var/www/html/pandora_console
CONSOLE_PATH=/var/www/html/pandora_console
PANDORA_SERVER_CONF=/etc/pandora/pandora_server.conf
PANDORA_SERVER_BIN=/usr/bin/pandora_server
PANDORA_HA_BIN=/usr/bin/pandora_ha
PANDORA_TABLES_MIN=160
DBHOST=127.0.0.1
DBNAME=pandora
DBUSER=pandora
DBPASS=pandora
DBPORT=3306

SELinux

Para deshabilitar a SELinux le dedicamos una entrada aparte y acá de verdad que me sorprende la manera tan sencilla que o manejan:

setenforce 0
sed -i -e "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
systemctl disable firewalld --now

Acá es donde, por necedad, reinicié la máquina para comprobar que fue definitivo la deshabilitación de SELinux (noten la instrucción para deshabilitar también al cortafuegos, el cual no está instalado por defecto).

Deshabilitación de SELinux.
Deshabilitación de SELinux.
Comprobación: SELinux deshabilitado.
Comprobación: SELinux deshabilitado.

Configuración de la base de datos

systemctl start mysqld
systemctl start mysqld
systemctl start mysqld
mysql -uroot -p$(grep "temporary password" /var/log/mysqld.log | rev | cut -d' ' -f1 | rev)

Al iniciar sesión en la línea de comando de MySQL:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Pandor4!');
UNINSTALL PLUGIN validate_password;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('pandora');
quit
MySQL: contraseña y deshabilitación de complemento de contraseñas.
MySQL: contraseña y deshabilitación de complemento de contraseñas.

Y desde la línea de comandos creamos la base de datos:

echo "create database $DBNAME" | mysql -uroot -ppandora -P$DBPORT -h$DBHOST echo "GRANT ALL PRIVILEGES ON $DBNAME.* TO \"$DBUSER\"@'%' identified by \"$DBPASS\"" | mysql -uroot -ppandora -P$DBPORT -h$DBHOST

Esto me sucedió porque reinicié la máquina para comprobar a SELinux y las variables de instalación las borré:

Variables de instalación no establecidas.
Variables de instalación no establecidas.

Ahora regeneramos el fichero my.cnf el cual borramos pasos atrás, usamos algo muy ingenioso:

POOL_SIZE=$(grep -i total /proc/meminfo | head -1 | awk '{print $(NF-1)*0.4/1024}' | sed s/\\..*$/M/g)
cat > /etc/my.cnf << EO_CONFIG_F
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
character-set-server=utf8
skip-character-set-client-handshake
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Mysql optimizations for Pandora FMS
# Please check the documentation in http://pandorafms.com for better results
max_allowed_packet = 64M
innodb_buffer_pool_size = $POOL_SIZE
innodb_lock_wait_timeout = 90
innodb_file_per_table
innodb_flush_log_at_trx_commit = 0
innodb_flush_method = O_DIRECT
innodb_log_file_size = 64M
innodb_log_buffer_size = 16M
innodb_io_capacity = 100
thread_cache_size = 8
thread_stack = 256K
max_connections = 100
key_buffer_size=4M
read_buffer_size=128K
read_rnd_buffer_size=128K
sort_buffer_size=128K
join_buffer_size=4M
query_cache_type = 1
query_cache_size = 64M
query_cache_min_res_unit = 2k
query_cache_limit = 256K
sql_mode=""
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EO_CONFIG_F
Regeneración de /etc/my.cnf
Regeneración de /etc/my.cnf
Reinicio y comprobación del servicio MySQL.
Reinicio y comprobación del servicio MySQL.

Habilitación de ls servicios mysqlapache y php-fpm.

systemctl enable mysqld --now systemctl enable httpd --now systemctl enable php-fpm --now
systemctl enable mysqld –now
systemctl enable httpd –now
systemctl enable php-fpm –now

Instalación de la Consola PFMS

mkdir $HOME/pandora && cd $HOME/pandora
wget http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_agent_unix-7.0NG.noarch.rpm
wget http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_console-7.0NG.noarch.rpm
wget http://firefly.artica.es/pandorafms/latest/RHEL_CentOS/pandorafms_server-7.0NG.noarch.rpm
Descarga de PFMS.
Descarga de PFMS.
yum install -y $HOME/pandora/pandorafms*.rpm
yum install -y $HOME/pandora/pandorafms*.rpm
yum install -y $HOME/pandora/pandorafms*.rpm
yum install -y $HOME/pandora/pandorafms*.rpm

Creación de tablas y poblamientos de datos PFMS

Este punto es especialmente álgido para mí y debo investigar a profundidad ya que lo veo desde el punto de vista del programador. Tarea pendiente para mí.

mysql -u$DBUSER -p$DBPASS -P$DBPORT -h$DBHOST $DBNAME < $PANDORA_CONSOLE/pandoradb.sql
mysql -u$DBUSER -p$DBPASS -P$DBPORT -h$DBHOST $DBNAME < $PANDORA_CONSOLE/pandoradb_data.sql
Creación de tablas y poblamientos de datos PFMS
Creación de tablas y poblamientos de datos PFMS

Configuración de la Consola PHP

En nuestra entrada para instalar PFMS en Debian 10 nos tocó «lidiar» con el asistente de instalación, pero en este paso (y en realidad junto con el paso anterior) ahorraremos un poco de tiempo.

cat > $CONSOLE_PATH/include/config.php << EO_CONFIG_F
<?php
\$config["dbtype"] = "mysql";
\$config["dbname"]="$DBNAME";
\$config["dbuser"]="$DBUSER";
\$config["dbpass"]="$DBPASS";
\$config["dbhost"]="$DBHOST";
\$config["homedir"]="/var/www/html/pandora_console";
\$config["homeurl"]="/pandora_console";
error_reporting(0);
\$ownDir = dirname(__FILE__) . '/';
include (\$ownDir . "config_process.php");
EO_CONFIG_F
Configuración de Consola PFMS.
Configuración de Consola PFMS.
cat > /etc/httpd/conf.d/pandora.conf << EO_CONFIG_F
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
EO_CONFIG_F
Configuración de Consola PFMS.
Configuración de Consola PFMS.

Configuración de Apache Web Server

cat > /etc/httpd/conf.d/pandora.conf << EO_CONFIG_F
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
EO_CONFIG_F

sed -i -e "s/php_flag engine off//g" $PANDORA_CONSOLE/images/.htaccess
sed -i -e "s/php_flag engine off//g" $PANDORA_CONSOLE/attachment/.htaccess

chmod 600 $CONSOLE_PATH/include/config.php 
chown apache. $CONSOLE_PATH/include/config.php
mv $CONSOLE_PATH/install.php $CONSOLE_PATH/install.done
Configuración de Apache Web Server.
Configuración de Apache Web Server.

Configuración de PHP para Apache

sed -i -e "s/^max_input_time.*/max_input_time = -1/g" /etc/php.ini
sed -i -e "s/^max_execution_time.*/max_execution_time = 0/g" /etc/php.ini
sed -i -e "s/^upload_max_filesize.*/upload_max_filesize = 800M/g" /etc/php.ini
sed -i -e "s/^memory_limit.*/memory_limit = 500M/g" /etc/php.ini
Configuración de PHP para Apache
Configuración de PHP para Apache
cat > /var/www/html/index.html << EOF_INDEX
<meta HTTP-EQUIV="REFRESH" content="0; url=/pandora_console/">
EOF_INDEX
Redireccionador a la Consola
Redireccionador a la Consola

Reinicio de servicios php y web:

systemctl restart php-fpm
systemctl restart httpd

Configuración del servidor PFMS

sed -i -e "s/^dbhost.*/dbhost $DBHOST/g" $PANDORA_SERVER_CONF
sed -i -e "s/^dbname.*/dbname $DBNAME/g" $PANDORA_SERVER_CONF
sed -i -e "s/^dbuser.*/dbuser $DBUSER/g" $PANDORA_SERVER_CONF
sed -i -e "s|^dbpass.*|dbpass $DBPASS|g" $PANDORA_SERVER_CONF
sed -i -e "s/^dbport.*/dbport $DBPORT/g" $PANDORA_SERVER_CONF
Configuración del servidor PFMS
Configuración del servidor PFMS
systemctl enable pandora_server --now
systemctl start pandora_server
service tentacle_serverd start
Reinicio del servidor versión comunitario
Reinicio del servidor versión comunitario

crontab

crontab
crontab

Inicio del sistema

Recuerden que debemos adquirir nuestro certificado con Let’s Encrypt (si pueden, donen), mientras tanto navegamos a la Consola; ¿recuerdan el poblamiento de datos? pues allí tenemos un usuario por defecto llamado «admin» y contraseña «pandora».

Inicio de la Consola PFMS en Lubuntu 18 con Chromium Web Browser.
Inicio de la Consola PFMS en Lubuntu 18 con Chromium Web Browser.
Preferencias de Consola de Pandora FMS
Preferencias de Consola de Pandora FMS
Subscripción a actualizaciones automáticas
Subscripción a actualizaciones automáticas
Cierre de sesión en PFMS
Cierre de sesión en PFMS

Instalación automatizada

Actualizado el martes 16 de marzo de 2021.

Colocamos a disposición un guion adaptado para CentOS 8 a partir del guion oficial para Centos 7; pueden acceder al mismo en:

curl -Ls http://ks7000.net.ve/pandora_deploy_community_centos_8.sh | sh
Ártica ST logotipo año 2020 Pandora FMS
¡ Gracias por vuestra atención !
Download PDF
Por favor, lea también   «Introducción a la monitorización con Pandora FMS» por Sancho Lerena