/grafana-mysql-agent

Pipeline para monitoreo de una base MySQL con Grafana

Primary LanguagePLSQL

Herramienta de monitoreo de bases de datos MySQL con Grafana para IaaS y PaaS

Introducción

Con el presente proyecto tenemos como objetivo disponibilizar con una herramienta de monitoreo de instancias de bases de datos MySQL en IaaS y PaaS. Para lograr dicho objetivo procedimos a la construcción de un Pipeline definido en un template que una vez ejecutado hace el despliegue de una instancia modificada de grafana(dashboard y datasource preconfigurados) para monitorear la instancia de MySQL suministrada como parámetos del Template.

Background

Partiendo de la siguiente arquitectura de solución:

Arquitectura de solución

Construimos un Template con los parámetros y objetos necesarios para ejecutar el Pipeline que despliegue la solución antes propuesta pero con el monitoreo de 1 sola instancia de MySQL.

El pipeline quedó diseñado con los siguientes Stages:

  1. Deploy mysql-client: Desplegamos una Pod con el binario mysql instalado

  2. Deploy DB-Agent: Utilizamos el Pod anterior para conectarnos a la instancia MySQL e instalar la base agente

  3. Test DB-Agent: Probar la conexión a la base de datos agente

  4. Delete mysql-client: Eliminamos el Pod creado para instalar la base de datos agente en la instancia a monitorear

  5. Build Custom-Grafana: Construimos una imagen de Grafana custom con un datasource y un dashboard preconfigurados hacia la instancia a monitorear

  6. Deploy Custom-Grafana: Despliegue de la aplicación anteriormente construida y la exposición de la ruta en OCP

Consideraciones necesarias

  • Existencia de un proyecto con una solución MySQL desplegada,necesario conocer el nombre del servicio.

  • En caso que la instancia a monitorear no se encuentre en nuestro proyecto debemos conceder los permisos necesarios entre los proyectos de Openshift

  • En caso de que la instancia MySQL esté desplegada en IaaS asumimos que existe las configuraciones necesarias de firewall para poder acceder a la VM por el puerto configurado(3306 por defecto) desde Openshift

Despliegue

Iniciamos sesion en Openshift:

oc login

Seguidamente nos movemos para el proyecto donde vamos a desplegar la solución:

oc project monitoreo-mysql

Realizar el despliegue de una solución de jenkins, para ello podemos utilizar el jenkins-ephemeral que está disponible en el catálogo de Openshift(necesario crear las credenciales a mano) o utilizar una custom-jenkins disponible a través del siguiente template disponible en el Git de la plataforma.

oc create -f http://gitlab.paas.agesic.red.uy/franklin.gomez/jenkins-custom-template/raw/master/jenkins-custom-template.yaml
oc process jenkins-custom-template | oc create -f -

Una vez completado el despliegue del jenkins debemos realizar el despliegue del pipeline grafana-mysql-agent

oc create -f http://gitlab.paas.agesic.red.uy/franklin.gomez/grafana-mysql-agent/raw/master/grafana-mysql-pipeline-template.yaml

Seguidamente podemos ir a la interfaz UI de Openshift y buscar en el catálogo el Template recien creado (monitor-grafana-mysql-pipeline). Luego proporcionamos los parámetros que nos solicita para poder hacer el despliegue de la solución.

Una vez instanciado el template anterior, podemos ir a través de la interfaz UI a Build→Pipelines y lanzar el comienzo del pipeline con el nombre definido en el parámetro APP_NAME del paso anterior.

También podemos mandar a ejecutar el pipeline a través del CLI:

oc start-build grafana-mysql-agent

Una vez completado los diferentes escenarios del pipeline podemos acceder a la aplicación Grafana a través de la ruta publicada.

Recomendaciones

  1. Buscar la forma de pasar por parámetro al template las distintas instancias que deseamos monitorear y quede fijo a una instancia.

  2. Cambiar en el template la imagen de MySQL (docker-registry.default.svc:5000/develop-pot/mysql-57-rhel7) dado que está atada a una imagen disponible en el proyecto (develop-pot) por la imagen genérica (registry.access.redhat.com/rhscl/mysql-57-rhel7).