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:
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).
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.
Instalación de base de datos Percona
Desinstalando MySQL
Instalando Percona
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
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.
Instalación de Phantomjs
Instalación de dependencias del servidor
Instalación de WMI
Instalación de Perl Telnet
Instalación de Xprobe2 para Centos 7
Variables de instalación
Esta fue la parte que más me gustó de la 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).
Configuración de la base de datos
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
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é:
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
Habilitación de ls servicios mysql, apache y php-fpm.
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
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
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
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 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 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
cat > /var/www/html/index.html << EOF_INDEX
<meta HTTP-EQUIV="REFRESH" content="0; url=/pandora_console/">
EOF_INDEX
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
systemctl enable pandora_server --now
systemctl start pandora_server
service tentacle_serverd start
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».
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