Servicios en AlmaLinux Usando systemctl


Instalación de Servicios en AlmaLinux Usando systemctl

Introducción

El monitoreo de servidores y aplicaciones es una tarea fundamental en la administración de sistemas. Herramientas como Prometheus y Grafana se han convertido en estándares de la industria para la observabilidad, y para recolectar métricas de diversas fuentes, se utilizan exportadores (exporters). Estos exportadores son servicios que se ejecutan en el servidor y exponen métricas en un formato que Prometheus puede entender y recolectar.

En AlmaLinux, una distribución basada en RHEL, el sistema de inicialización y gestión de servicios principal es systemd, controlado a través del comando systemctl. Este post detalla los pasos generales para instalar un servicio en AlmaLinux utilizando systemctl, tomando como ejemplo la instalación de exportadores como php-fpm_exporter (para métricas de PHP-FPM) y mysqld_exporter (para métricas de MySQL).

Pasos de Instalación de un Servicio con systemctl

La instalación de un servicio personalizado, como un exportador, generalmente implica obtener el binario ejecutable y configurarlo para que systemd lo administre. Los siguientes pasos están basados en los procesos descritos para php-fpm_exporter y mysqld_exporter:

1.Descargar el archivo binario del servicio. Esto se hace típicamente utilizando una herramienta como wget o curl para obtener el archivo ejecutable directamente desde una fuente confiable. Para php-fpm_exporter, se descargó un binario específico para Linux AMD64. Para mysqld_exporter, se descargó un archivo .tar.gz que contenía el binario.

wget https://github.com/hipages/php-fpm_exporter/releases/download/v2.2.0/php-fpm_exporter_2.2.0_linux_amd64

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.17.2/mysqld_exporter-0.17.2.linux-amd64.tar.gz

2.Si el archivo descargado es un archivo comprimido (como .tar.gz), descomprimirlo. Se utiliza el comando tar -zxvf para archivos .tar.gz.

tar -zxvf mysqld_exporter-0.17.2.linux-amd64.tar.gz

3.Ubicar el archivo binario del servicio en una ruta apropiada del sistema, como /usr/bin. Esta ruta es común para ejecutables del sistema. Se utiliza el comando cp o mv para mover el archivo descomprimido o descargado a la ruta deseada.

mv php-fpm_exporter_2.2.0_linux_amd64 /usr/bin/php-fpm_exporter

cp mysqld_exporter-0.17.2.linux-amd64/mysqld_exporter /usr/bin/mysqld_exporter

4.Asignar el usuario y grupo correctos al archivo binario. Por motivos de seguridad y permisos, es recomendable que el servicio no se ejecute como root. En los ejemplos, se utilizó chown con un usuario y grupo específicos (1001:1002, o node_exporter en el archivo de servicio).

chown 1001:1002 /usr/bin/php-fpm_exporter
chown 1001:1002 /usr/bin/mysqld_exporter

5.Verificar y asignar permisos de ejecución al archivo binario. Es crucial que el archivo tenga permisos para ser ejecutado. Se utiliza el comando chmod +x.

chmod +x /usr/bin/php-fpm_exporter
chmod +x /usr/bin/mysqld_exporter

6.Crear o modificar el archivo de unidad (.service) para systemd. Este archivo define cómo systemd debe gestionar el servicio y se guarda en la ruta /etc/systemd/system/. Describe la descripción (Description), las dependencias (After=network.target), el usuario y grupo bajo el que se ejecuta (User=, Group=), el tipo de inicio (Type=simple), y lo más importante, la ruta del archivo binario a ejecutar (ExecStart=). En los ejemplos, se duplicó un archivo de servicio existente (node_exporter.service) y se modificó.

cd /etc/systemd/system/

nano php-fpm_exporter.service
Contenido típico del archivo `.service`:
[Unit]
Description=PHP-FPM Exporter # O MySQL Daemon Exporter
After=network.target

[Service]
User=node_exporter # Asegúrate de que este usuario exista
Group=node_exporter # Asegúrate de que este grupo exista
Type=simple
ExecStart=/usr/bin/php-fpm_exporter # O /usr/bin/mysqld_exporter
Restart=on-failure # (Opcional pero recomendado) Reiniciar si falla

[Install]
WantedBy=multi-user.target

7.Recargar el daemon de systemd. Esto es necesario para que systemd lea y reconozca el nuevo archivo de unidad de servicio que se acaba de crear o modificar.

systemctl daemon-reload

8.Iniciar el servicio por primera vez. Se utiliza el comando systemctl start <nombre_del_servicio>, donde <nombre_del_servicio> es el nombre del archivo .service sin la extensión (por ejemplo, php-fpm_exporter o mysqld_exporter).

systemctl start php-fpm_exporter

systemctl start mysqld_exporter

9.Habilitar el servicio para que se inicie automáticamente cada vez que el sistema arranca.

systemctl enable php-fpm_exporter

systemctl enable mysqld_exporter

10.Reiniciar el servicio si se hicieron cambios en el archivo de unidad (.service) o en la configuración del servicio (aunque para cambios en la configuración del servicio, a veces basta con un reload si el servicio lo soporta, pero restart es más seguro para aplicar cualquier cambio).

systemctl restart php-fpm_exporter

systemctl restart mysqld_exporter

11.Verificar el estado del servicio para confirmar que se está ejecutando correctamente. Se usa el comando systemctl status <nombre_del_servicio>.

systemctl status php-fpm_exporter

systemctl status mysqld_exporter
La **salida importante** a verificar es que muestre `Active: active (running)`. Esto confirma que `systemd` inició y mantiene el servicio en ejecución.

Conclusión

Siguiendo estos pasos, hemos logrado instalar y configurar un servicio (en este caso, un exportador) en AlmaLinux para ser gestionado por systemd y systemctl. Este proceso es fundamental para asegurar que las aplicaciones y herramientas de fondo se ejecuten de manera confiable y automática al inicio del sistema. Una vez que el servicio está active (running), está listo para realizar su función, como exponer métricas para que Prometheus las recolecte. La gestión centralizada a través de systemctl simplifica las tareas de inicio, parada, reinicio y monitoreo del estado de los servicios en el servidor.

Publicado el . Categoria «Linux». Etiquetado como: linux, terminal, comandos

Comentarios


Listado de Categorias y Etiquetas.