MONQ - monitoreo y AIOps originarios de Rusia



En nuestro blog, hablamos mucho sobre soluciones extranjeras para el monitoreo y la auditoría, y ahora es el momento del desarrollo interno. MONQ es un sistema paraguas con conectores para sistemas de monitoreo comunes, modelos de servicio de recursos, análisis de datos, alto potencial de IA y un modelo de licencia especial. Nos dieron una distribución para analizar y decidimos compartir cómo está allí debajo del capó y si todo es tan nanotecnológico como dice el vendedor (después de todo, el proyecto es un residente de Skolkovo). El honor de las pruebas recayó en mí y le contaré sobre la instalación, las capacidades del sistema y un poco sobre las licencias. Pido gato.

Introduccion


En 2018, Gartner introdujo un nuevo término para describir cómo la inteligencia artificial (IA) se puede aplicar al soporte de TI. "AIOps (Inteligencia Artificial para Operaciones de TI) promete ahorrar el tiempo y el esfuerzo de los servicios de TI en la identificación de diversos problemas en el entorno cada vez más complejo en el que tienen que trabajar". Gartner sugiere que la IA se utilizará para identificar automáticamente los problemas y solucionarlos. En 2019, esto parece un cuento de hadas, y aún no he visto ningún caso real de soporte informático completamente automático.

Obtuve la plataforma MONQ del laboratorio digital MONQ . El desarrollador mismo lo posiciona como una solución AIOps. Pero lo llamaría un sistema de monitoreo general, gestión de eventos y lanzamiento de scripts de automatización. Todavía no hay mucha inteligencia.

De servicio, apoyo más de 100 sistemas, servidores, servicios y servicios diferentes. Mis herramientas de monitoreo informal son Zabbix y Prometheus, como Cubren la mayoría de las tareas de supervisión del rendimiento. Un par de sistemas en el ciclo de monitoreo a veces dejan de responder, se trata reiniciando el servidor (no hay otra manera, nadie reescribirá el código de la curva). Siempre quise intentar implementar un caso cuando el sistema de monitoreo identifica un problema de dos fuentes independientes y reinicia el servidor. Para tales tareas, generalmente se usan sistemas paraguas con subsistemas de secuencias de comandos, ya que ahora se llama a la moda RPA (Automatización robótica de procesos). No conozco los sistemas libres, pero los comerciales son como un puente de hierro fundido.

Hoy intentaremos instalar MONQ juntos, conectarle Zabbix y Prometheus, configurar alertas y escribir un script de reinicio del servidor. Para que mañana puedas calmar tus pies sobre la mesa con calma, solo ocasionalmente observando el proceso de tratar una máquina con otra máquina y tomar café con un cruasán.

Arquitectura de soluciones



Arquitectura MONQ

El sistema se implementa en contenedores acoplables en el clúster de kubernetes. Los conjuntos de microservicios se combinan en bloques funcionales. Todos los datos de los usuarios, información técnica, eventos, registros después del enriquecimiento con varias etiquetas útiles vuelan al lago de datos en ClickHouse, luego se lleva a cabo el proceso de cálculo y análisis. Se detectan patrones, se detectan eventos importantes, se forman desencadenantes compuestos y se pueden iniciar varios procesos importantes para eventos importantes: desde alertas e incidentes hasta scripts de usuario complejos.

Desempacando


Youtube está lleno de videos desempacando algo. Ahora intentaré hacer lo mismo, pero en formato de imagen de texto y no con un producto físico, sino con una distribución. Para comenzar, prepárese: instale el clúster kubernetes.

Puede leer sobre cómo configurar un clúster de kubernetes, por ejemplo, aquí . Te contaré sobre las características de configuración:

  • coredns se usa como clúster DNS;
  • nginx-ingress-controller;
  • autorización rbac en un clúster;
  • Se utiliza almacenamiento compartido (pv / pvc).

Para cada proyecto, el proveedor proporciona requisitos técnicos para el hardware. La configuración mínima para la instalación es de 4 servidores. Esto es suficiente para realizar un piloto, sujeto a la integración con un sistema de monitoreo. Para mis propósitos, al verificar la funcionalidad del sistema, esta opción también funcionará.

En condiciones de combate, como me dijeron, el sistema se adapta a las necesidades del cliente según la carga y la tolerancia a fallos requerida.

Mi configuración para el sistema como mínimo:
ServidorNúcleos de CPUMemoria gbAlmacenamiento, Gb
maestro kubernetes1250
trabajador kubernetes 14 48100
trabajador de kubernetes 24 48100
Servidor de base de datos4 47 7300
Total1325550

Una vez que la plataforma está lista, lanzo el libro de jugadas ansible del proveedor para instalar la infraestructura básica e iniciar el sistema. Playbook hace lo siguiente:

  • instala los paquetes necesarios en los servidores;
  • lanza kubernetes;
  • instala y configura aplicaciones en el servidor de bases de datos. Entre ellos: Clickhouse, RabbitMQ, PostgreSQL, ArangoDB, Redis y todo esto en contenedores acoplables;
  • instala Consul para el almacenamiento centralizado de configuraciones de microservicio;
  • agrega puntos finales, entidades de ingreso de servicios para DBMS y partes de infraestructura del sistema;
  • genera una tabla con datos de autorización.

Para no iniciar la aplicación de microservicios manualmente, el proveedor ha preparado un registro de microservicios incorporado que agrega y actualiza microservicios, configura el DBMS y la autorización entre servicios.

Iniciar el sistema se reduce a las siguientes acciones:

  • el instalador del sistema se inicia con un archivo de configuración preparado previamente (contiene datos de autorización en kubernetes, DBMS y Consul, el nombre de dominio del sistema);
  • el instalador inicia el registro del microservicio;
  • usando el registro, los microservicios se inician uno por uno, el registro genera una configuración de microservicios en cónsul, despliegue de entidades, servicio, ingreso en kubernetes;
  • Al inicio, cada microservicio carga un esquema para su propia base de datos.

El resultado del instalador que lancé está en la imagen a continuación.


Panel de Kubernetes: el resultado del instalador

Una vez que se complete el proceso de instalación, MONQ estará disponible por el nombre de dominio que especifiqué en el archivo de configuración del instalador. Y aquí está él.


Interfaz de inicio de sesión MONQ

Personalización


En la configuración inicial del sistema, ya hay un usuario con derechos de control total. Me conecto debajo y veo de qué es capaz MONQ.

Crear usuarios en el sistema y configurar grupos de trabajo


Hay dos métodos de autorización de usuario en el sistema:

  • Directorio Activo
  • Construido en

Para el primer conocido, la autorización incorporada es adecuada.


Usuario del sistema preestablecido

Los derechos de acceso a los objetos y recursos del sistema (integración, unidades de configuración (KE), disparadores sintéticos, scripts, etc.) se emiten a nivel de grupos de trabajo (WG). Cualquier WG puede ser el propietario del objeto o tener los derechos de lectura o escritura. Hay varios niveles de acceso:

  • Los miembros del WG con el nivel de derechos de propietario pueden realizar cualquier acción con el objeto (WG con este nivel de derechos, el objeto solo puede tener uno);
  • Un WG con derecho a grabar puede administrar el objeto, pero no puede eliminarlo y distribuir sus derechos a otros WG;
  • Un WG de solo lectura puede ver información sobre un objeto;
  • Un grupo de trabajo sin derecho de acceso a un objeto no es consciente de su existencia.

Por defecto, el sistema se ha creado WP "Administradores del espacio", que acaba de resolver mi usuario. Este WG tiene todos los derechos sobre todos los objetos que se crearán en esta entidad. Para los colegas que también desean echar un vistazo al sistema, crearon un WP de Superadministradores adicional.


Grupos de trabajo, roles y participantes.

Los derechos de usuarios específicos se configuran en el marco del WG en forma de roles.

Configuración de PCM


Se trata del modelo de servicio de recursos. Este es un modelo de servicio lógico que describe la composición y las relaciones de KE con los recursos de KE, que en conjunto proporcionan el servicio a un nivel acordado. PCM es necesario para almacenar información sobre objetos, entidades y las relaciones entre ellos. PCM en MONQ es un gráfico de red que contiene información sobre KE y sus relaciones.

La principal diferencia y, en mi opinión, la ventaja de implementar PCM en el sistema es el enfoque en los servicios empresariales. Esto ayuda a presentar la estructura completa del servicio o servicio que utiliza el usuario final, y no enfocarse en el sistema de infraestructura en el que se basa el servicio o servicio.

Para fines de prueba, hice una "Cuenta personal del usuario" de PCM simplificada.


PCM "Cuenta personal del usuario"

Después de configurar el monitoreo, mostraré cómo se transformará.

Composición de PCM:

  • La máquina virtual en la que se ejecuta el sistema de información (IS) SRVe3_VM15;
  • STR: Nginx_LK, PHP-fpm_LK, MySQL_LK;
  • Nuestro servicio (IS) - LK (cuenta personal);
  • Módulos IP: Autorización, Búsqueda, Gestión de documentos, Pago. De hecho, hay más de ellos, pero hasta ahora solo los creó.

Configuración de integración


MONQ proporciona conexión de varios tipos de sistemas:

  • Sistemas de monitoreo (Zabbix, Prometheus, SCOM y otros);
  • Sistemas de recopilación de registros (Splunk, Logstash y otros);
  • Sistemas de lanzamiento de Autotest (Jenkins, Gitlab CI y otros)
  • Mesas de servicio, rastreadores de tareas (Microfocus SM, Jira, Redmine, Naumen y otros).

Conecté los sistemas de monitoreo Zabbix, Prometheus. Estos conectores se configuran en la sección Integración.


Integración con sistemas de monitoreo.

Las métricas y los eventos provienen de Zabbix y Prometheus a MONQ.

Conexión de monitoreo sintético (prueba funcional automatizada)


En MONQ, también puede configurar pruebas funcionales de aplicaciones. En mi ejemplo, esta es una cuenta personal. He conectado varias compilaciones de autotests de Jenkins.


Módulo de monitoreo funcional "Proyectos FMON"

El monitoreo funcional en MONQ es un módulo separado con su propia pantalla "Prueba funcional". Y aquí hay un ejemplo de un informe sobre la ejecución de una de mis pruebas:


Proyecto de autorización de usuario de FMON, ensamblaje fallido

Configurar monitoreo y alertas


Utilizando plantillas estándar (varias plantillas listas para usar para desencadenantes sintéticos para cada integración están disponibles de fábrica) creó desencadenantes sintéticos para eventos primarios de Zabbix y Prometheus. Los desencadenantes sintéticos aquí son desencadenantes creados dentro de la plataforma que funcionan con datos primarios de diferentes fuentes. Luego, vinculé los desencadenantes resultantes con los elementos PCM (KE).


Sección "Disparadores sintéticos"

Y parece un disparador sintético creado por la plantilla.


Un ejemplo de un desencadenante sintético creado por la plantilla para Prometheus

En la sección "Mis secuencias de comandos", por ejemplo, ya hay una secuencia de comandos que reinicia el servidor. El script en sí está escrito en Lua y se puede cambiar. En base a esto, hice mi propio script para reiniciar el servicio.


Servicio de reinicio de script en el servidor

Además de la integración habitual con el cliente de correo, puede configurar el envío de notificaciones de inmediato a varios mensajeros instantáneos. En este caso, puede configurar un bot de chat que escriba a un grupo especial, por ejemplo, al chat de los administradores en un telegrama.

Para usar integraciones con mensajería instantánea, debe abrir el acceso a la nube de Microsoft Azure.

Los usuarios avanzados pueden escribir sus propios complementos de notificación en Lua. A continuación se muestra un ejemplo de mi script para enviar notificaciones por SMS.


Complemento de envío de SMS para la plataforma MONQ

Visualización de monitoreo


Después de la sintonización, mi PCM cambió un poco, se colocaron tres sistemas más para el monitoreo general, cuyo estado determina el rendimiento de la IS "Cuenta de usuario personal". También se agregaron varios servicios.


"Cuenta personal del usuario" de PCM con activadores adjuntos

La información general sobre el estado de los objetos bajo supervisión se muestra en la vista principal en forma de widgets personalizados.


La presentación principal de la IS "Cuenta personal"

Al momento de tomar la captura de pantalla, hay un problema con una gran cantidad de consultas en la base de datos, debido a que la respuesta de las páginas en la "Cuenta de usuario personal" de IS ha aumentado. El sistema informa sobre esto en la pantalla y envía SMS.

Para el monitoreo operativo, se utiliza la "Pantalla operativa" en la que solo hay un widget con la lista actual de eventos (eventos activos y eventos que se cerraron hace 15 minutos).


Presentación de pantalla en vivo

Para las pruebas, generé una gran carga en la CPU de la máquina virtual usando MySQL. El sistema captó el evento y lanzó la acción con un script de reinicio del servicio mysqld preparado previamente. Si después de 15 minutos el evento sigue activo, se producirá un reinicio.


El servicio se reinició correctamente y recibí una notificación de que todo está bien.

Todos los eventos a tiempo se pueden ver en la sección "Línea de tiempo". Y si el sistema ITSM todavía está conectado, mostrará el trabajo planificado según el KE.


Supervisión de eventos en la vista de línea de tiempo

La información sobre la disponibilidad de los sistemas que se instalaron para el monitoreo se puede encontrar en la vista "Informes SLA".


Informe de SLA en IP "Cuenta personal del usuario"

Para mayor claridad, generé un informe durante dos semanas excluyendo de él los eventos con prioridades 3 y 4, bueno, los de prueba, por supuesto. Si cree en el informe, el sistema funciona bien. El informe se exporta a PDF y XLS.

Las pantallas muestran información sobre los filtros preconfigurados por el usuario. Cualquier evento en las pantallas se puede etiquetar para búsqueda rápida o filtrado.

Licencia


La ventaja no funcional, pero no menos importante de MONQ que guardé para el final del artículo. Esto es licencia. La gran mayoría de las soluciones de monitoreo paraguas extranjeras están autorizadas por la cantidad de dispositivos (generalmente llamados por puntos finales, por instancia de sistema operativo u otra cosa) desde los cuales se procesan eventos o métricas. Independientemente de si recopila datos de los objetos de monitoreo finales u otro sistema de monitoreo lo hace. Si las métricas se recopilan utilizando un sistema comercial, el doble pago por lo mismo es inevitable. MONQ tiene licencia por la cantidad de conectores utilizados para sistemas externos. Es decir, si usa dos sistemas, desde donde desea recopilar información, estos son dos conectores usados ​​o dos licencias. Por lo tanto, desde el punto de vista de "tarifa por cobro", cuando se utiliza MONQ, nada cambiará. Solo pagará el costo de integrarse con estos sistemas. En esto veo una gran ventaja y potencial.

Como me dijeron, los planes para el desarrollo del sistema son muchas mejoras que se introducen constantemente. Aparecerán las innovaciones notables en los próximos seis meses: un diseñador de tablero, un maestro para crear disparadores sintéticos, un aumento en los detalles al calcular el SLA (se verá qué factor y cuánto influyó en la accesibilidad del objeto) y una API pública externa.

Conclusiones


Me gustó que los chicos de la compañía desarrolladora se contacten, conversen y compartan información fácilmente, y me gustó el sistema. Todavía no tiene mucha funcionalidad y es difícil compararlo directamente con Splunk o AppDynamics en términos de AIOps, pero, claramente, si todo lo que dicen se hace realidad, este sistema ocupará el lugar que le corresponde entre los líderes del mercado y el cuadrante de Gartner.

Si desea evaluar el sistema usted mismo, obtener una presentación, ver una demostración o ha estado buscando una solución general durante mucho tiempo y está listo para un proyecto piloto, deje una solicitud en el formulario de comentarios de nuestro sitio web.

Source: https://habr.com/ru/post/476134/


All Articles