# Apache Discovery

# Introducción

Este plugin de discovery de Apache para Pandora FMS está diseñado para automatizar la monitorización de tus servidores web Apache HTTP Server, aprovechando la información detallada que proporciona el módulo `mod_status`. Al interactuar con la página de estado del servidor (`server-status`), el plugin puede recopilar métricas vitales en tiempo real que son cruciales para entender el rendimiento y la salud de tu entorno Apache.

# Prerrequisitos

- El plugin es un compilado que contiene todas las dependencias necesarias para su uso.

# Parámetros

**Modo simple**

<table border="1" id="bkmrk---conf-ruta-al-archi" style="width: 66.2963%; height: 208.578px;"><tbody><tr style="height: 29.7969px;"><td style="width: 27.7874%; height: 29.7969px;">--urls</td><td style="width: 72.2126%; height: 29.7969px;">URL del servidor de Apache </td></tr><tr style="height: 29.7969px;"><td style="width: 27.7874%; height: 29.7969px;">--user</td><td style="width: 72.2126%; height: 29.7969px;">Nombre del usuario, si el servidor de Apache lo requiere, opcional.</td></tr><tr style="height: 29.7969px;"><td style="width: 27.7874%; height: 29.7969px;">--password</td><td style="width: 72.2126%; height: 29.7969px;">Contraseña, si el servidor de Apache lo requiere,opcional.</td></tr><tr style="height: 29.7969px;"><td style="width: 27.7874%; height: 29.7969px;">--ssl</td><td style="width: 72.2126%; height: 29.7969px;">Para verificar si quiere las url tiene certificado HTTPS o no, opcional.</td></tr><tr style="height: 29.7969px;"><td style="width: 27.7874%; height: 29.7969px;">--transfer\_mode</td><td style="width: 72.2126%; height: 29.7969px;">Nombre del modo de transferencia, opcional.</td></tr><tr style="height: 29.7969px;"><td style="width: 27.7874%; height: 29.7969px;">--tentacle\_ip</td><td style="width: 72.2126%; height: 29.7969px;"> ip del tentacle, opcional.</td></tr><tr style="height: 29.7969px;"><td style="width: 27.7874%; height: 29.7969px;">--tentacle\_port</td><td style="width: 72.2126%; height: 29.7969px;">Puerto del tantacle, opcional.</td></tr><tr><td style="width: 27.7874%;">--user\_agent</td><td style="width: 72.2126%;">custom User-Agent header que se envía a Apache, opcional.</td></tr></tbody></table>

**Modo avanzado**

<table border="1" id="bkmrk---conf-ruta-del-arch"><tbody><tr><td>--conf</td><td>ruta del archivo de configuración</td></tr></tbody></table>

**Archivo de configuración (--conf)**

```
urls= url del servidor de apache 
agent_name= nombre del agente opcional
module_prefix= nombre de prefix para los modulos opcional
username= nombre del usuario si el servidor de apache lo requiere opcional
password= contraseña si el servidor de apache lo requiere opcional
verify_ssl= para verificar si quiere las url tiene certicado https o no opcional
transfer_mode= nombre del modo de tranferencia opcional
tentacle_ip= ip del tentacle opcional
tentacle_port= puerto del tantacle opcional
user_agent= custom User-Agent header que se envía a Apache, opcional.
```

**Ejemplo**

```bash
urls=https://192.168.0.1/example
agent_name=example
module_prefix=apache
username=admin
password=12345
verify_ssl=true
transfer_mode=tentacle
tentacle_ip=127.0.0.1
tentacle_port=41121
user_agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
```

# Ejecución manual

El formato de la ejecución del plugin es el siguiente:

```bash
./pandora_apache --url <url del servidor de apache> --user <nombre del usuario de apache> --password <contraseña del servidor de apache> --ssl <verdarero o falso si lo requiere> --transfer_mode < nombre del modo de tranferencia> --tentacle_ip <puedo del tentacle> --tentacle_port <puerto del tentacle> --conf <ruta al fichero de configuración> --string_conf <ruta al fichero de configuración>
```

Ejemplos:

para ejecutar el modo simple

```bash
./pandora_apache --url http://192.168.0.1/server --ssl false --transfer_mode tentacle --tentacle_ip 127.0.0.1 --tentacle_port 41121
```

para ejecutar el modo avanzado

```bash
./pandora_apache --url http://192.168.0.1/server --ssl false --transfer_mode tentacle --tentacle_ip 127.0.0.1 --tentacle_port 41121 --conf /file/file.conf
```

La ejecución devolverá una salida en formato JSON con información sobre la ejecución, y generará un fichero XML para cada agente monitorizado que enviará al servidor de Pandora FMS por el método de transferencia indicado en la configuración.

# Discovery

Este plugin puede integrarse con el *Discovery* de Pandora FMS.

Para ello se debe cargar el paquete ".disco" que puede descargar desde la librería de Pandora FMS:

[https://pandorafms.com/library/](https://pandorafms.com/library/)

Una vez cargado, se podrán monitorizar los servicio de apache creando tareas de *Discovery* desde la sección *Management &gt; Discovery &gt; Application &gt; Apache*

Para cada tarea se solicitarán los siguientes datos mínimos:

- **Apache urls**: url del servidor de apache
- **User:** usuario del servidor si es requerido, opcional
- **Password:** contraseña del servidor si es requerido, opcional
- **Verify SSL:** activo si es necesario verificar que la url tenga certificado ssl, por defecto activo
- **Tentacle Mode:** nombre del modo de tranferencia, opcional
- **Tentacle IP:** ip del tentacle, opcional
- **Tentacle port:** Puerto del tentacle, opcional

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-07/scaled-1680-/image.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-07/image.png)

En la siguiente página se nos requerirán los siguientes :

text area para agregar la configuracion de cada uno de los bloques de apache que queremos monitorizar

- **Block:** nombre del bloque ejemplo \[conf\] es requerido.
- **Apache urls**: url del servidor de apache.
- **Agent name:** nombre especifico para el agente, opcional
- **Module prefix:** prefijo para cada modulo, opcional
- **User:** usuario del servidor si es requerido, opcional
- **Password:** contraseña del servidor si es requerida, opcional
- **Verify SSL:** activo si es necesario verificar que la url tenga certificado ssl, por defecto activo
- **User\_agent**: Encabezado User-Agent que se enviará a Apache, opcional.
- **Tentacle Mode:** nombre del modo de tranferencia, opcional
- **Tentacle IP:** ip del tentacle, opcional
- **Tentacle port:** Puerto del tentacle, opcional

También hay un campo para añadir un agente de usuario personalizado a nivel de tarea.

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-07/scaled-1680-/vnlimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-07/vnlimage.png)

Las tareas completadas con éxito tendrán un resumen de ejecución con la siguiente información:

- **Total agents** : Número total de agentes generados por la tarea.
- **Total modules:** Número total de módulos generados por la tarea.

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-06/scaled-1680-/D1bimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-06/D1bimage.png)

# Agentes y módulos generados por el plugin

El plugin creará un agente por instancia. El nombre se tomará de la URL en modo simple. En modo avanzado, se creará un agente por cada bloque enviado y el nombre se definirá por el campo **nombre de agente**; si no se especifica, se tomará el nombre de la URL. Las métricas dependen de la configuración y la versión del servidor Apache. En una instalación reciente de Apache con todas las funciones activas, obtendrás todas las métricas. Cada agente contendrá los módulos obtenidos al interactuar con la página de estado del servidor. Los módulos a crear son los siguientes:

<table id="bkmrk-m%C3%B3dulo-descripci%C3%B3n-s"><thead><tr><th>Módulo</th><th>Descripción</th></tr></thead><tbody><tr><td>ServerVersion</td><td>La versión del servicio Apache (p. ej., Apache/2.4.62)</td></tr><tr><td>ServerMPM</td><td>El módulo de multiprocesamiento (MPM) que Apache utiliza actualmente (p. ej., event, prefork, worker)</td></tr><tr><td>ServerBuild</td><td>La fecha y hora de compilación del binario del servidor Apache</td></tr><tr><td>ParentServerConfigGeneration</td><td>La generación de la configuración del proceso Apache principal. Se incrementa con cada reinicio.</td></tr><tr><td>ParentServerMPMGeneration</td><td>La generación del MPM del proceso Apache principal</td></tr><tr><td>ServerUptimeSeconds</td><td>El tiempo de actividad del servicio expresado en segundos</td></tr><tr><td>Load1</td><td>El promedio de carga del sistema durante el último minuto</td></tr><tr><td>Load5</td><td>El promedio de carga del sistema durante los últimos 5 minutos</td></tr><tr><td>Load15</td><td>El promedio de carga del sistema durante los últimos 15 minutos</td></tr><tr><td>TotalAccesses</td><td>El número total de solicitudes de cliente recibidas por el servidor desde su último inicio/reinicio. Se calcula como una tasa de cambio.</td></tr><tr><td>TotalKBytes</td><td>La cantidad total de kilobytes de datos servidos por el servidor Apache desde su último inicio/reinicio</td></tr><tr><td>TotalDuration</td><td>El tiempo acumulado dedicado al procesamiento de todas las solicitudes desde que se inició el servidor (en microsegundos o milisegundos, según la versión y configuración de Apache)</td></tr><tr><td>CPUUser</td><td>Tiempo de CPU utilizado por los procesos Apache en modo de usuario desde el inicio del servidor, expresado como porcentaje</td></tr><tr><td>CPUSystem</td><td>Tiempo de CPU utilizado por los procesos Apache en modo de sistema (kernel) desde el inicio del servidor, expresado como porcentaje</td></tr><tr><td>CPUChildrenUser</td><td>Tiempo de CPU utilizado por los procesos secundarios de Apache en modo de usuario</td></tr><tr><td>CPUChildrenSystem</td><td>Tiempo de CPU utilizado por los procesos secundarios de Apache en modo de sistema (kernel)</td></tr><tr><td>CPULoad</td><td>Porcentaje de carga de CPU total consumida por todos los procesos Apache combinados desde el inicio del servidor</td></tr><tr><td>Uptime</td><td>Representación legible del tiempo de actividad del servidor (p. ej., "2 días, 4 horas y 40 minutos"). Se deriva de ServerUptimeSeconds.</td></tr><tr><td>ReqPerSec</td><td>Número promedio de solicitudes atendidas por segundo desde el inicio/reinicio del servidor. No se utiliza, ya que cuenta el promedio desde el último inicio.</td></tr><tr><td>BytesPerSec</td><td>Promedio de bytes servidos por segundo desde el inicio/reinicio del servidor. No se utiliza, ya que cuenta el promedio desde el último inicio.</td></tr><tr><td>BytesPerReq</td><td>Promedio de bytes servidos por solicitud desde el inicio/reinicio del servidor</td></tr><tr><td>DurationPerReq</td><td>Tiempo promedio de procesamiento de cada solicitud desde el inicio/reinicio del servidor (en milisegundos o microsegundos)</td></tr><tr><td>BusyWorkers</td><td>Número total de subprocesos/procesos de trabajo que están actualmente ocupados gestionando solicitudes</td></tr><tr><td>GracefulWorkers</td><td>Número de procesos de trabajo en estado de apagado elegante (esperando a que finalicen las solicitudes actuales)</td></tr><tr><td>IdleWorkers</td><td>Número total de subprocesos/procesos de trabajo actualmente inactivos y listos para gestionar nuevas solicitudes</td></tr><tr><td>Processes</td><td>Número de procesos Apache activos (no subprocesos) ejecutándose actualmente</td></tr><tr><td>Stopping</td><td>Número de procesos de trabajo en estado de detención</td></tr><tr><td>ConnsTotal</td><td>Número total de conexiones al servidor Apache</td></tr><tr><td>ConnsAsyncWriting</td><td>Número de conexiones asíncronas en estado de escritura (aplicable solo al event MPM)</td></tr><tr><td>ConnsAsyncKeepAlive</td><td>Número de conexiones asíncronas en estado de mantenimiento activo (aplicable solo al event MPM)</td></tr><tr><td>ConnsAsyncClosing</td><td>Número de conexiones asíncronas en estado de cierre (aplicable solo al event MPM)</td></tr><tr><td>CacheType</td><td>Tipo de mecanismo de caché utilizado por Apache (p. ej., SHMCB para memoria compartida)</td></tr><tr><td>CacheSharedMemory</td><td>Cantidad total de memoria compartida asignada a la caché (en bytes o kilobytes)</td></tr><tr><td>CacheCurrentEntries</td><td>Número actual de entradas almacenadas en la caché</td></tr><tr><td>CacheSubcaches</td><td>Número de subcachés dentro de la caché principal</td></tr><tr><td>CacheIndexesPerSubcaches</td><td>Número de entradas de índice por subcaché</td></tr><tr><td>CacheIndexUsage</td><td>Porcentaje del espacio de índice de la caché actualmente en uso</td></tr><tr><td>CacheUsage</td><td>Porcentaje total de la memoria de caché actualmente en uso</td></tr><tr><td>CacheStoreCount</td><td>Número total de veces que un elemento se ha almacenado correctamente en la caché</td></tr><tr><td>CacheReplaceCount</td><td>Número total de veces que se ha reemplazado una entrada de caché existente</td></tr><tr><td>CacheExpireCount</td><td>Número total de veces que una entrada de caché ha expirado</td></tr><tr><td>CacheDiscardCount</td><td>Número total de veces que una entrada de caché ha sido descartada</td></tr><tr><td>CacheRetrieveHitCount</td><td>Número total de veces que un elemento solicitado se encontró en la caché (acierto)</td></tr><tr><td>CacheRetrieveMissCount</td><td>Número total de veces que un elemento solicitado no se encontró en la caché (fallo)</td></tr><tr><td>CacheRemoveHitCount</td><td>Número total de veces que un elemento se eliminó correctamente de la caché al encontrarlo</td></tr><tr><td>CacheRemoveMissCount</td><td>Número total de veces que se intentó eliminar un elemento de la caché pero no se encontró</td></tr></tbody></table>

[![image.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-07/scaled-1680-/Eggimage.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-07/Eggimage.png)