====== Monitorización de servicios ======
{{indexmenu_n>9}}
===== Introducción =====
Un **Servicio** en Pandora FMS es una agrupación de recursos de Tecnología de Información (//Information Technology//, abreviado **IT**) basándose en sus funcionalidades.
Los Servicios PFMS son agrupaciones lógicas que incluyen //hosts//, //routers//, //switches//, //firewalls//, webs **e incluso otros Servicios**. Por ejemplo, el sitio web oficial de la empresa, el //Customer Relationship Management// (CRM), alguna aplicación de soporte o incluso todas las impresoras de una empresa u hogar.
===== Servicios en Pandora FMS =====
La [[:es:documentation:pandorafms:monitoring:01_intro_monitoring|monitorización básica]] en Pandora FMS consiste en la recogida de métricas de diferentes orígenes, representándolas como monitores (llamados **Módulos**). La monitorización basada en Servicios permite agrupar los anteriores elementos de tal manera que, al establecer ciertos márgenes basados en la acumulación de fallos, se puede monitorizar grupos de elementos de diferente índole y su relación en un servicio mayor y general.
Las monitorizaciones de Servicios están representados bajo tres conceptos: de manera simple, por sus //pesos de importancia// y encadenados por eventos en cascada.
==== Cómo funciona el modo simple ====
En este modo solamente es necesario indicar cuales elementos son críticos. Se accede a **Operation** → **Topology maps** → **Services** → **Service tree view** → **Create service.**
{{ :wiki:new_service_simple_mode.png }}
Solo los elementos marcados como críticos serán tenidos en cuenta para realizar los cálculos y solo el estado ''critical'' de dichos elementos tendrá valor.
* Cuando entre 0 y el 50% de los elementos críticos se encuentre en estado ''critical'', el servicio entrará en estado de advertencia ''warning''.
* //Cuando más// del 50% de los elementos críticos entren en estado ''critical'', el servicio entrará en estado ''critical''.
==== Cómo funcionan los servicios según su peso ====
Se debe definir un **Árbol de Servicio** en el que se indiquen tanto los elementos que afectan a las aplicación o aplicaciones, como el grado en que afectan.
Todos los elementos que se añadan a los árboles de servicio se corresponderán a información que ya está siendo monitorizada, ya sea en forma de módulos, agentes concretos u otros servicios.
Para indicar el grado en que afectan los estados de cada elemento al estado global, se utilizará un sistema de **suma de pesos**, de modo que los más importantes (con más peso) serán más relevantes para ajustar el estado global del servicio completo a un estado incorrecto antes que los elementos menos importantes (con menos peso).
==== Servicios Root ====
Un Servicio //root// (servicio raíz) es aquel que no forma parte de otro Servicio. Esto aporta una lógica distribuida más eficiente y permite aplicar un sistema de [[:es:documentation:pandorafms:management_and_operation:01_alerts#proteccion_en_cascada_basada_en_servicios|protección en cascada basado en servicios]].
Los Servicios en Command Center (Metaconsola) permiten agregar como elementos de un Servicio tanto otros Servicios, como Módulos y/o Agentes.
==== Modo sincrónico ====
El [[:es:documentation:pandorafms:introduction:02_architecture#prediction_server|Prediction server]] sigue una cadena de cálculo de manera jerárquica, de arriba hacia abajo, para obtener el estado de todos y cada uno de los componentes del [[:es:documentation:pandorafms:monitoring:07_services#servicios_root|servicio root]]. Para servicios con hasta mil elementos, es una solución satisfactoria.
==== Modo asincrónico ====
Al marcar **Asynchronous mode** el servicio se evaluará de forma independiente, en su propio intervalo, incluso si es parte de otro servicio, siendo una excepción al comportamiento por defecto síncrono en el que la evaluación se hace en cascada desde el servicio raíz. Se puede forzar la ejecución de un servicio asíncrono de forma independiente, aunque forme parte de un servicio superior (servicio raíz)
Si se marca como asíncrono un servicio que es parte de otro servicio (//subservicio//) en el momento de la evaluación del servicio raíz, este no ejecutara el cálculo del estado del servicio asíncrono, sino que tomará como válido el último valor almacenado por este desde la última vez que se ejecutó. Esta configuración puede ser de gran ayuda en la evaluación de elementos en servicios de gran tamaño para mejorar su rendimiento, además de permitir dar prioridad de ejecución a servicios que son elementos de un servicio raíz.
===== Creación de un nuevo Servicio =====
==== Pandora FMS Server ====
El componente **PredictionServer** debe estar habilitado para poder utilizar los Servicios.
Es necesario que el componente [[:es:documentation:pandorafms:introduction:02_architecture#servidor_de_prediccion|PredictionServer ]] esté instalada y funcionando en el Pandora FMS server.
==== Introducción ====
Una vez que tiene todos los dispositivos monitorizados, dentro de cada Servicio añada todos los módulos, agentes o subservicios necesarios para monitorizar el Servicio. Para crear un nuevo Servicio se accede a **Operation** → **Topology maps** → **Services** → **Service tree view** → **Create service.**
==== Configuración inicial ====
* **Agent to store data**: El Servicio guarda los datos en Módulos de predicción. Es necesario introducir un agente para que sea el contenedor de estos módulos, y a la vez también contendrá las alarmas.
* **Mode**:
* **Smart**: Los pesos y elementos que formen parte del Servicio se calcularán de forma automática en base a reglas establecidas.
* **Manual**: Los pesos y los elementos que formen parte del Servicio se indicarán manualmente con valores fijos.
* **Crítico**: Umbral de peso para declarar el servicio como crítico. En modo **Smart** este valor será un porcentaje.
* **Advertencia**: Umbral de peso para declarar el servicio como en estado de advertencia. En modo **Smart** este valor será un porcentaje.
* **Unknown elements as critical: **Permite indicar que los elementos en estado desconocido aporten su peso igual que si fuesen un elemento crítico.
* **Asynchronous mode**: De manera predeterminada el cálculo de los estados de cada componente se realiza [[:es:documentation:pandorafms:monitoring:07_services#modo_sincronico|de manera sincrónica]]. Al activar esta opción el cálculo de los componentes subordinados se realizará [[:es:documentation:pandorafms:monitoring:07_services#modo_asincronico|de manera asincrónica]].
* **Cascade protection enabled**: Activa la protección en cascada sobre los elementos del Servicio. Estos no generarán alertas ni eventos si pertenecen a un Servicio (o //subservicio//) que está en estado crítico.
* **Calculate continuous SLA**: Activa la creación de módulos de [[:es:documentation:pandorafms:introduction:03_glossary#acuerdo_de_nivel_de_servicio_sla|Acuerdo de nivel de servicio (SLA)]] y **SLA value** para el Servicio actual. Se utiliza para casos en los que el número de Servicios necesarios es tan alto que puede afectar al rendimiento. //Si usted desactiva esta opción luego de haber creado el Servicio, se borrará el histórico de datos de estos Módulos, por lo que se perderá información.//
* **SLA interval**: Periodo de tiempo para calcular el SLA efectivo del servicio.
Tenga en cuenta que el intervalo en el que se realizarán todos los cálculos de los módulos del servicio dependerán del intervalo del agente configurado como contenedor.
==== Configuración de elementos ====
Una vez se haya creado un Servicio vacío se accede al formulario de edición del Servicio y se selecciona la pestaña **Configuration elements**. Se hace clic en el botón **Add element** y aparecerá una ventana emergente con un formulario. //El formulario será ligeramente distinto si el servicio está en modo// **smart** //o en modo// **manual**. En **Type** se ha de seleccionar módulo, agente, servicio o dinámico.
Si se elige **Service** en **Type** se sebe tener en siempre cuenta que los servicios que aparecerán en la lista desplegable son los que **no** sean ancestros del servicio, esto es necesario para mostrar una correcta estructura arborescente de dependencia entre servicios.
=== Modo Manual ===
Para calcular el estado de un servicio, se sumará el peso de cada uno de sus elementos en base a su estado, y si supera los umbrales establecidos en el servicio para advertencia o para crítico, el estado del servicio pasará a advertencia o crítico según corresponda.
Los siguientes campos solamente estarán disponibles para los servicios en modo manual:
* ''critical''
* ''warning''
* ''unknown''
* ''normal''
=== Modo Smart ===
En los servicios en modo **Smart **se calculan su estado de la siguiente manera:
* Los elementos críticos contribuyen con la **totalidad** de su porcentaje al peso del servicio. Esto significa que si por ejemplo tenemos 4 elementos en el servicio y solo 1 de ellos en crítico, ese elemento sumará un 25% al peso del servicio. Si en lugar de 4 elementos fuesen 5, el elemento crítico sumaría un 20% al peso del servicio.
* Los elementos en advertencia contribuyen con la **mitad** de su porcentaje al peso del servicio. Esto significa que si por ejemplo tenemos 4 elementos en el servicio y solo 1 de ellos en advertencia, ese elemento sumará un 12,5% al peso del servicio. Si en lugar de 4 elementos fuesen 5, el elemento en advertencia sumaría un 10% al peso del servicio.
**Modo Dynamic**
Los siguientes campos solo estarán disponibles para los elementos de tipo **Dynamic** (Servicios en modo **Smart**):
* **Matching object types**: Lista desplegable para elegir si los elementos para los que se evaluarán las reglas dinámicas, y que formarán parte del servicio, serán Agentes o Módulos.
* **Filter by group**: Regla para indicar el grupo al que debe pertenecer el elemento para formar parte del servicio.
* **Having agent name**: Regla para indicar el nombre del Agente que debe tener el elemento para formar parte del Servicio. Se indicará un texto que deberá ser parte del nombre del Agente deseado.
* **Having module name**: Regla para indicar el nombre del Módulo que debe tener el elemento para formar parte del Servicio. Se indicará un texto que deberá ser parte del nombre del Módulo deseado.
* **Use regular expressions selector**: Si usted activa esta opción, se utilizará el mecanismo de búsqueda mediante [[https://dev.mysql.com/doc/refman/8.0/en/regexp.html|MySQL regex]].
* **Having custom field name**: Regla para indicar el //nombre// del campo personalizado que debe tener el elemento para formar parte del servicio. Se indicará un texto que deberá ser parte del nombre del campo personalizado deseado.
* **Having custom field value**: Regla para indicar el //valor// del campo personalizado que debe tener el elemento para formar parte del servicio. Se indicará un texto que deberá ser parte del valor del campo personalizado deseado. También es posible adicionar búsquedas en más campos personalizados con el botón **Add custom field match**.
Debe colocar texto en ambos campos para que sea considerado el realizar búsqueda en campos personalizados.
==== Wizard de servicios ====
{{ :wiki:pfms_services_wizard.png }}
En la pestaña superior derecha, al crear o editar un servicio, aparece el asistente para agregar elementos con las siguientes opciones:
* **Add items**: Para agregar elementos (agentes, módulos o servicios).
* **Edit items**: Para editar elementos.
* **Delete items**: Para borrar elementos.
Para adicionar elementos, el asistente presenta una lista desplegable en **Item type to be added** y por defecto presenta la opción de agregar agentes al servicio. Para ello se debe hacer clic en **Agents** e inmediatamente, justo al lado, se desplegarán los agentes disponibles //por su nombre//. También puede escribir en dicho elemento (búsqueda libre) y automáticamente mostrará las coincidencias de agentes //por nombre//. Si la lista de agentes es extensa, bien puede filtrar por grupos en la lista desplegable denominada **Group**.
Para los módulos y servicios el proceso de selección es parecido, excepto que en el caso de los módulos no se dispone de una búsqueda libre de elementos.
Para el caso de los servicios **siempre se debe primero filtrar por grupo** para que aparezcan los servicios disponibles. Seleccione el grupo **All** para ver todos los servicios.
En todos los casos se debe elegir uno o varios elementos y luego pulsar el botón **Add selected**. Abajo, en **Service items summary** se tendrá un resumen con los agentes, módulos y servicios agregados al servicio.
{{ :wiki:pfms_services_wizard-add_elements_button.png }}
Una vez se tengan seleccionados los elementos deseados en **Service items summary** se pulsa **Add elements** para agregar y guardar los nuevos componentes al servicio en edición.
==== Módulos que se crean al configurar un servicio ====
* **SLA Value Service**: Es el valor porcentual del cumplimiento de SLA ( ''async_data'' ).
* **Service_SLA_Service**: Muestra si el SLA se está cumpliendo o no ( ''async_proc'' ).
* **Service_Service**: Muestra la suma de los pesos del servicio ( ''async_data'' ).
===== Visualización de los Servicios =====
==== Lista simple de todos los servicios ====
Es la lista de operación que muestra todos los servicios creados y a los cuales el usuario tenga derecho de acceso en la Consola de Pandora FMS. Haga clic en **Operation** → **Topology map** → **Servicio tree view **y dentro de este **List of services**.
{{ :wiki:services_list_services_admin_v5.png }}
=== Tabla de todos los servicios ===
Tabla de visualización rápida de todos los servicios visibles y su estado actual.
{{ :wiki:services_table_view.png }}
=== Operaciones con elementos ===
Para añadir elementos se dispone de un cuadro de diálogo que permite seleccionar agentes, módulos u otros servicios y al hacer clic en cada uno de ellos en la parte inferior mostrará los elementos disponibles para seleccionar y ser agregados con **Add selected**. Una vez haya finalizado de agregar elementos haga clic en el botón **Add elements** para guardar los cambios. Para la edición y eliminación funciona de manera similar.
* En los casos de adición y edición el servicio debe estar en modo **Manual**.
* Consulte también "[[:es:documentation:pandorafms:complex_environments_and_optimization:01_massive_operations#operaciones_masivasservicios|Operaciones masivas: Servicios]]" para realizar operaciones similares aplicadas a servicios.
==== Vista de árbol de los servicios ====
Esta vista permite la visualización de los servicios en forma de árbol. Se accede por el menú **Operation** → **Topology maps** → **Services** → **Service tree view.**
La restricción de permisos ACL sólo se aplica al primer nivel.
===== Cómo interpretar los datos de un servicio =====
Las paradas planificadas recalculan el valor de los informes de SLA teniendo en cuenta que se permita el recálculo “atrás en el tiempo” con paradas planificadas añadidas a posteriori (eso es una opción que se debe activar a nivel global en el **General setup**). Cuando se trata de un informe de SLA de servicio, si existe una parada planificada que afecta a uno o más elementos del servicio, se considera que la parada planificada afecta a todo el servicio, al no poder definir el impacto que tiene la parada en el global del servicio.
Es importante destacar que esto es a nivel de informe, los árboles de servicio, y la información que presentan en la consola visual no se alteran respecto a paradas planificadas creadas después de su supuesta ejecución. Estos valores de cumplimiento % de servicio se calculan en tiempo real sobre datos del histórico del mismo servicio.
Los pesos se tratan de forma algo diferente en el modo simple al solo existir el peso crítico y tener la posibilidad de caer en dos estados a parte del normal. A cada elemento se le da peso 1 en **critical **y 0 en el resto, y cada vez que se hace un cambio en los elementos del servicio, se recalculan los pesos del servicio. El peso **warning** del servicio es despreciable, tiene valor 0,5 siempre por que si se deja a 0 el servicio siempre va a estar mínimo en **warning** (//pero el peso de warning no se usa en el modo simple)//.
El peso **critical** se calcula de manera que sea la mitad de la suma de los pesos críticos de los elementos, que es 1. Si hay 3 elementos el peso critical del servicio es 1,5 entonces el servidor se encarga de decidir si se ha superado o igualado el peso critical para pasar el servicio a estado **critical** o **warning**.
===== Protección en cascada de servicios =====
Es posible silenciar aquellos elementos de un Servicio de manera dinámica. Esto permite evitar una avalancha de alertas por cada elemento que pertenezca al Servicio o subservicios.
Al activar la característica **Cascade protection enabled**, se ejecutará la acción asociada a la plantilla que se haya configurado para el servicio raíz, informando así de los elementos que tienen un estado incorrecto dentro del Servicio.
Es importante tener en cuenta que este sistema permite que se utilicen las alertas de los elementos que vayan a crítico dentro del Servicio, aunque el estado general del mismo sea correcto.
La protección en cascada de servicios avisará con exactitud de los elementos raíz que hayan fallado sin importar la profundidad del Servicio definido.
===== Análisis de causa raíz =====
Está disponible una macro llamada ''_rca_'' que indicará la causa raíz del estado del servicio. Para usarla se agregará a la plantilla que se haya asociado al servicio. Esta macro devolverá una salida similar a la que sigue:
----
[Aplicación Web → HW → Apache server 3]\\
[Aplicación Web → HW → Apache server 4]\\
[Aplicación Web → HW → Apache server 10]\\
[Aplicación Web → DB Instances → MySQL_base_1]\\
[Aplicación Web → DB Instances → MySQL_base_5]\\
[Aplicación Web → Balanceadores → 192.168.10.139]
----
Este ejemplo indica que:
* Los servidores Apache 3, 4 y 10 están en estado crítico.
* Las bases de datos MySQL_base 1 y 5 están detenidas.
* El balanceador 192.168.10.139 no responde.
Esta información añadida permite depurar el porqué del estado del servicio, reduciendo las tareas de investigación.
===== Agrupaciones de servicios =====
Los servicios son agrupaciones lógicas que conforman parte de la estructura de negocio de una organización. Por ello puede tener cierto sentido la agrupación de servicios, ya que en muchos casos puede haber dependencias entre unos y otros, conformando por ejemplo un servicio general (la compañía) varios servicios más particulares (web corporativa, comunicaciones, etcétera).
Para agrupar servicios es necesario que estén creados tanto el servicio general o superior, como los servicios inferiores que se agregarán a éste para crear la estructura lógica en forma de árbol.
[[:es:documentation:start| Volver al índice de documentación de Pandora FMS]]