PagerDuty, o por qué el departamento de operaciones puede no dormir por las noches

Cuanto más compleja es la sistema, más alertas se generan. Surge la necesidad de reaccionar a estas alertas, agregarlas y visualizarlas. Creo que es una situación familiar para muchos, que puede inducir a un tic nervioso.

La solución de la que hablaremos no es del todo inesperada, pero no se encuentra un artículo completo sobre este tema.

Por lo tanto, decidí compartir la experiencia de FunCorp y contar cómo está estructurado el proceso de guardia, quién llama, por qué y cómo se puede gestionar todo esto.

PagerDuty, o por qué el departamento de operaciones puede no dormir por las noches

¿Qué es PagerDuty?

Así que, para abordar todas estas tareas, comenzamos a buscar una herramienta conveniente. Después de breves búsquedas, nos decidimos por PagerDuty. PD nos pareció una solución bastante completa y concisa, con una gran cantidad de integraciones y configuraciones. ¿Qué es exactamente?

En resumen, PagerDuty es una plataforma para el manejo de incidentes que puede gestionar incidentes entrantes a través de diversas integraciones, configurar el orden de las guardias y luego alertar al ingeniero de guardia según el nivel del incidente (con un nivel alto se realiza una llamada, con uno bajo se envía una notificación push de la aplicación/SMS).

¿Quién es el de guardia?

Probablemente, este es el primer aspecto del que se debe hablar al configurar PD.

En FunCorp, como en otras empresas, existe el honoroso puesto de de guardia. Se transfiere de ingeniero a ingeniero una vez al día. Hay una primera y una segunda línea de respuesta a las alertas de PagerDuty. Supongamos que llega una alerta de alta prioridad, y si después de 10 minutos de la llamada al de guardia de primera línea no hay respuesta (es decir, no ha sido cambiada a estado de reconocimiento o resuelto), la llamada se transfiere al segundo ingeniero de guardia. Esto se configura en PagerDuty a través de las Políticas de Escalamiento.

PagerDuty, o por qué el departamento de operaciones puede no dormir por las noches

Si el segundo de guardia tampoco responde, la notificación regresa al principal de guardia.

De esta manera, cualquier alerta entrante de alta prioridad no puede quedar sin respuesta. 

Ahora veamos de dónde pueden provenir los incidentes.

¿Qué integraciones utilizamos?

En PD llegan una multitud de diversos incidentes de varios servicios. Actualmente tenemos alrededor de 25 de estos servicios, y para su manejo usamos algunas de las integraciones disponibles.

  • Prometheus

El sistema principal de recopilación de métricas es Prometheus. Ya se ha escrito mucho sobre ello en Habré, solo diré que tenemos varios para diferentes entornos: uno recopila métricas de máquinas virtuales y contenedores Docker, otro de los servicios de Amazon, y el tercero de máquinas físicas. Principalmente, utilizamos Telegraf como exportador de métricas.

  • Correo Electrónico

Aquí también, creo que está claro por el nombre. Esta integración se utiliza para enviar notificaciones desde ciertos scripts que se ejecutan por cron. PD te proporciona una dirección a la que envías correos. Al crear un servicio con esta integración, puedes configurar las prioridades en el orden en que se procesarán los incidentes entrantes, así como cómo crear la alerta (por cada correo recibido, por cada correo recibido + alguna regla, etc.).

PagerDuty, o por qué el departamento de operaciones puede no dormir por las noches

  • Slack

En mi opinión, es una integración bastante interesante. Hay casos en los que ocurre algo, pero no se cubre con incidentes. Por eso añadimos una integración de Slack para crear un incidente. Es decir, en el Slack corporativo puedes escribir /callofduty все тормозит и скоро сломается y PD lo procesará y enviará el incidente al ingeniero de guardia.

Hacemos:

PagerDuty, o por qué el departamento de operaciones puede no dormir por las noches

Vemos:

PagerDuty, o por qué el departamento de operaciones puede no dormir por las noches

  • API

Integración por HTTP. Aquí, en realidad, no hay nada especialmente interesante, solo una solicitud POST con cuerpo en formato JSON. Por ejemplo, de lo interesante: la usamos para monitoreo externo mediante https://www.statuscake.com/. Este servicio verifica la disponibilidad de nuestros sitios desde diferentes puntos del mundo. En caso de que recibamos un código de respuesta inaceptable (por ejemplo, 502), se crea un incidente y todo continúa por la cadena descrita anteriormente. En StatusCake hay opción de monitoreo de URLs internas, del vencimiento de certificados SSL o de dominios.

  • LibreNMS

Es otro sistema de monitoreo, puedes leer más sobre él en su sitio web https://www.librenms.org/. Con él supervisamos las interfaces de red y iDRAC de los servidores.

PagerDuty, o por qué el departamento de operaciones puede no dormir por las noches

Hubo también tales integraciones como Datadog, CloudWatch. Más detalles sobre qué les ha pasado se pueden ver aquí.

Visualización

El sistema principal de notificación de incidentes es Slack. En un chat especial se registran todos los incidentes recibidos en PD, y si cambia su estado, también se refleja en el chat.

PagerDuty, o por qué el departamento de operaciones puede no dormir por las noches

Cuando surgió la oportunidad de mostrar datos útiles en las pantallas suspendidas del techo, de repente nos dimos cuenta de que nosotros (en el departamento de DevOps) no teníamos nada que mostrar. Hay una maravillosa Grafana, pero no abarca todo, y además los empleados responden a las alertas, no a los gráficos.

Después de una búsqueda minuciosa pero infructuosa en GitHub de un «tablero» conciso e informativo para PD, decidimos crear el nuestro, solo con lo que necesitamos. Aunque al principio teníamos la idea de mostrar la interfaz de PD en la pantalla, eso parecía aún más incómodo.

Para escribirlo, solo se necesita obtener la clave de PD con permisos de solo lectura.
Y esto es lo que logramos:

PagerDuty, o por qué el departamento de operaciones puede no dormir por las noches

En la pantalla se muestran los incidentes abiertos actuales, el nombre del ingeniero de guardia actual del horario seleccionado y el tiempo sin incidentes de alta prioridad (el panel con el incidente de alta prioridad se resaltará en rojo).

Puedes ver el código fuente de esta implementación aquí.

Al final, obtuvimos un tablero cómodo para visualizar todos nuestros incidentes. Estaré encantado si nuestra experiencia le resulta útil a alguno de ustedes.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster