# Vista Operacional ## Grafana ![](https://i.imgur.com/bKG7AzG.png) ### Qué es? **Grafana** es una herramienta muy útil que te ayuda a visualizar y monitorizar datos de forma sencilla, puedes conectarla a diferentes fuentes de datos, como bases de datos o servicios en la nube, para obtener la información que necesitas (logs, métricas...). ### Que funciones tiene? La parte principal de Grafana son los **"paneles"**. Son como páginas donde puedes crear gráficos, tablas y mapas para mostrar tus datos de manera clara, puedes personalizarlos como quieras incluso hacerlos interactivos. Grafana también tiene **"plugins"** que te permiten añadir funciones adicionales y personalizar aún más la plataforma. Puedes ampliar las fuentes de datos disponibles, añadir nuevos tipos de gráficos o agregar características especiales según tus necesidades. Además, Grafana tiene un sistema de **usuarios** y **roles**, lo que significa que puedes controlar quién puede ver y editar los paneles y los datos. Los administradores pueden crear usuarios, asignarles roles y decidir qué partes de Grafana pueden acceder. ## Prometheus ![](https://i.imgur.com/5mo8nyY.png) ### Qué es? **Prometheus** se encarga de recopilar las métricas de los servicios, **Grafana Agent** se encarga de extraer esas métricas de la base de datos de Prometheus y enviarlas a Grafana. ### Como funciona? Prometheus tiene una base de datos especial llamada **TSDB (Time Series Database)** para almacenar las métricas que recopila. En lugar de una base de datos tradicional, esta está diseñada para manejar datos que cambian con el tiempo. En el TSDB de Prometheus, cada métrica se identifica con **etiquetas**, que utiliza una estructura **clave-valor**. Por ejemplo, una etiqueta podría ser el nombre de un servicio o el entorno en el que se encuentra. Cuando Prometheus recopila métricas, las guarda en el TSDB usando estas etiquetas. Esto permite realizar consultas rápidas y eficientes para acceder a los datos más adelante. Puedes usar **PromQL (Prometheus Query Language)** para hacer consultas y filtrar los datos basándote en las etiquetas. ## Loki ![](https://i.imgur.com/6WmcYyo.png) **Grafana Agent** se encarga de recolectar métricas y registros de diferentes fuentes, como sistemas operativos, servicios y aplicaciones. Los datos en este caso los envía a **Loki**, Loki recibe los registros de Grafana Agent y los organiza en un formato optimizado para su consulta y visualización y **Grafana** se conecta a Loki para consultar y mostrar los registros almacenados. ![](https://i.imgur.com/wLapudJ.png) ### Qué es? **Grafana Loki** es una herramienta que se usa para recopilar y visualizar los registros de aplicaciones y sistemas en tiempo real. En lugar de almacenar los registros en un solo lugar, los distribuye en múltiples nodos para mejorar la escalabilidad y la redundancia. Esto es especialmente útil en entornos de microservicios y contenedores, donde el volumen de registros puede ser muy grande y la infraestructura puede ser muy dinámica. ***Ejemplos gráficas:*** ![](https://hackmd.io/_uploads/H1TQ0wCan.png) ![](https://hackmd.io/_uploads/SywPCDAah.png) ## Alertas ![](https://i.imgur.com/2E7WDqB.png) ### Qué son? Las **Alert rules** de Grafana te permiten establecer condiciones personalizadas para tus gráficos y paneles. Por ejemplo, puedes configurar una alerta para que te avise cuando la temperatura de tu servidor supere cierto umbral crítico. O quizás quieras que te notifiquen si el tráfico de tu sitio web se dispara repentinamente. Los **Contact points** son los métodos de comunicación que Grafana utiliza para enviarte las alertas, como correo electrónico, Telegram... Las **Notification policies** son reglas que determinan quién debe recibir las alertas y cómo se deben enviar. Puedes personalizar las notificaciones y asignar contactos específicos a cada política. **Todas estas alertas las enviamos a un grupo de telegram donde están los profesionales que se encargan del soporte en la continuidad de servicio.** ***Ejemplos de alertas:*** Actualmente, contamos con alertas del espacio de almacenamiento en los discos de los servidores, estado de los contenedores, en casos de caída y detección si hay algún problema con los visores. ![](https://hackmd.io/_uploads/SkTbQ_C6n.png) ## Política Backups En Isard tenemos montado un sistema de backups con **borgbackup** y **backupninja**. ### Qué son? **BorgBackup** es una solución confiable y efectiva para respaldar datos, asegurando tener copias actualizadas sin ocupar demasiado espacio en disco. **BackupNinja** actúa como una capa de abstracción que facilita la configuración y gestión de copias de seguridad, permitiendo programarlas de manera conveniente y centralizar el control sobre diferentes herramientas de respaldo. ### Como funcionan? Utlizamos estas herramientas porque al trabajar en conjunto, BorgBackup y BackupNinja simplifican y automatizan el proceso de respaldo de datos. BackupNinja se encarga de la configuración y programación de las copias de seguridad, mientras que BorgBackup se encarga de realizar los respaldos en sí, aprovechando su eficiente tecnología de deduplicación y compresión. Juntos, proporcionan una solución completa y confiable para proteger datos importantes. ### Donde se hacen? Los backups se realizan contra un servidor en **Oracle** donde se encuentran el resto de servidores de producción. ### Características Este servidor consta de **116TB** de espacio en disco, con una línea de **10Gbps** y con un coste mensual de alrededor ***400€***. ---------- ### Configuración Tenemos un archivo **borg** en cada una de las instalaciones, este archivo tiene una configuración para copiar diferentes directorios dependiendo del servidor. Cada instalación tiene su propio **directorio** en el servidor de backups y los archivos borg van contra estos directorios al lanzar la copia cada día con backupninja. ### Directorios Normalmente hacemos copia de `/opt`, ya que contiene todos los datos del Isard montado en ese servidor, también añadimos los directorios `/etc` y `/root` contienen archivos de configuración críticos y personalizaciones específicas del sistema y del administrador. Al hacer copias de seguridad de estos directorios, se asegura que se respalden las configuraciones esenciales y las personalizaciones realizadas, lo que facilita la recuperación del sistema en caso de fallos o pérdida de datos. ### Servidores Actualmente tenemos el servicio de backups de los servidores: - **GencatFP (Web)**: Hacemos copia de la base de datos y de la configuración que tenemos del servidor. - **GencatFP (NFS)**: Hacemos copia de todos los discos duros de las Plantillas que hay en GencatFP - **GencatFP (Monitor)**: Hacemos copia de todas las estadísticas de GencatFP. ### Retención Nuestra política de backups más exigente es: - 1 copia diaria (se guardan 15 días) - 1 copia semanal (se guardan 2 semanas) - 1 copia mensual (se guardan 3 meses hasta 1 año) ### Seguridad Para la seguridad de nuestros backups, hemos montado un script que funciona como sistema de **jaulas**, este sistema evita que si por ejemplo se hacen con el control de un hyper de GencatFP, no puedan acceder a los directorios ni hacer nada con los backups, tampoco podrían corromper el resto de instancias, ya que no tienen permisos, porque cada uno lleva una **jaula** en su directorio. ### Recuperación Cada cierto tiempo planificamos una recuperación de los backups para poder verificar que todo está correcto y no tenemos ningún dato corrupto. ### Monitorización Para monitorizar si todo está funcionando correctamente, hay un script que se lanza cada mañana a las 8:00, este script comprueba que se han hecho los backups y nos envía por Telegram un registro de todas las instalaciones diciendo si se ha hecho o no. Además de una alerta que salta si el espacio en disco del servidor de backups está casi lleno.