Monitorización Atlassian con Grafana y Prometheus

Publicado por Álvaro Vicente Benito el

DevOpsAtlassianMonitorizaciónGrafanaPrometheus

¡Hola! En este artículo nos gustaría mostrar cómo monitorizar aplicaciones Atlassian. La monitorización nos permitirá conocer el rendimiento, el estado y las estadísticas de nuestras aplicaciones en tiempo real.

¿Cuales son los principales beneficios que nos puede aportar en lo que al ecosistema Atlassian se refiere?

  • Conocer métricas de uso, tanto de usuarios como de las volumetrías del uso de la aplicación por su parte.
  • Conocer el impacto en rendimiento de cambios sobre la plataforma Atlassian o su parametrización (upgrades, instalación de apps, pases a producción, etc.).
  • Conocer métricas del impacto de rendimiento por uso y sus franjas horarias, pudiendo detectar las horas punta y las horas valle de la aplicación.
  • Conocer o recibir alerta ante posibles caducidades de licencias de producto. Recibir alertas cuando el espacio en disco de los adjuntos supere umbrales o cuando cualquier cosa vaya mal.

¡Empecemos!

Piezas de la solución

  • Nuestra/s aplicaciones Atlassian (Solución soportada por Jira, Confluence, Bitbucket y Bamboo).
  • Grafana. Solución líder en el mercado para el análisis y visualización de métricas extraídas o almacenadas por múltiples soluciones del mercado.
  • Prometheus. Potente extractor de métricas a nivel servidor o aplicación/es contenidas en el mismo. Posee exportadores para múltiples aplicaciones como Atlassian, Web servers, APIs, Motores de BBDD, Minado de logs, etc. Las integraciones pueden verse aquí https://prometheus.io/docs/instrumenting/exporters/

Diagrama de solución

Diagrama

Con el fin de simplificar el escenario vamos a tener todas las piezas desplegadas en el mismo servidor, además sólo monitorizaremos Jira como ejemplo de aplicación Atlassian.

Lo primero que haremos es instalar la App de Prometheus (Prometheus Exporter) en la aplicación Atlassian a monitorizar. Para ello sólo debemos explorar el Marketplace de Atlassian e instalarla. En este link se puede encontrar el enlace a dicha app: https://marketplace.atlassian.com/apps/1217960/prometheus-exporter-for-jira?hosting=server&tab=overview

Una vez instalado, en Jira desde Administración/Add-ons, podremos encontrar el submenu de Prometheus a la izquierda.

AddonSettings

Dentro podremos generar un token de seguridad si lo deseamos o pulsar el enlace "here" para ver todas las métricas de Jira y la API que expone Prometheus.

AddonSettings2

Las métricas, estarán expuestas en http://xxxxxxxxx:8080/plugins/servlet/prometheus/metrics

AddonMetrics

Habiendo finalizado la parte de Jira, lo siguiente que haremos, en el caso de no disponer de ella es instalar Grafana en el servidor. Todas las instalaciones han sido llevadas a cabo en un Ubuntu 18.04 LTS.

Instalación de Grafana

sudo nano /etc/apt/sources.list  
sudo curl https://packagecloud.io/gpg.key | sudo apt-key add -  
sudo apt-get update -y  
sudo apt-get install grafana -y  
sudo systemctl daemon-reload  
sudo systemctl enable grafana-server  
sudo systemctl start grafana-server  

Una vez instalado, y en el puerto 3000 podremos acceder a Grafana con usuario admin y password admin:

Login Grafana

En este momento, instalaremos Prometheus en la máquina, con el fin de poder llevar las métricas a Grafana mediante un Data Source.

Instalación de Prometheus

sudo wget https://s3-eu-west-1.amazonaws.com/deb.robustperception.io/41EFC99D.gpg | sudo apt-key add -  
sudo apt-get update -y  
sudo apt-get install prometheus prometheus-node-exporter prometheus-pushgateway prometheus-alertmanager-y  
sudo systemctl start prometheus  
sudo systemctl enable prometheus  

Nuestra instalación de Prometheus estará disponible en http://xxxxxxx:9090

LandingPrometheus

En Prometheus hemos de modificar el fichero /etc/prometheus/prometheus.yml con el fin de añadir como Target las métricas expuestas por el Prometheus Exporter instalado en Jira. Para ello sólo necesitamos añadir este bloque al final del fichero:

 - job_name: jira
    metrics_path: '/plugins/servlet/prometheus/metrics' 
    scrape_interval: 5s
    scrape_timeout: 5s
    static_configs:
    - targets: ['localhost:8080']

En este momento, volviendo a Grafana, debemos añadir un nuevo Data Source desde el menú izquierdo.

NuevoDataSource

En la pantalla de configuración del Data Souce, le indicaremos los siguientes datos:

Name: Nombre deseado

Type: Prometheus

URL: http://localhost:9090 (URL de Prometheus)

Auth: Marcaremos Basic Auth y en las casillas de usuario y password pondremos los datos de un usuario de Jira en este caso.  
FormularioDataSource

Testeamos y deberíamos obtener el siguiente resultado.

DataSourceOk
DataSourceOk2

Como comprobación final, podemos ir a nuestro Prometheus y en el menú Status/Targets deberíamos ver el nuevo endpoint de Jira.

PrometheusTargets

Una vez que nuestras métricas de Jira llegan a Grafana gracias al Data Source, es el momento de crear el Dashboard de visualización. En este caso, existen varias opciones, crear nuestro Dashboard desde cero, o importar un Dashboard existente. Un buen punto de partida sería importar este completo Dashboard creado por el desarrollador del Prometheus Exporter (Andrey Markelov), que podemos encontrar aquí: https://grafana.com/dashboards/5249

NewDashboard

Para importarlo, seleccionaremos la opción Import en el wizard de creación de Dashboard. A continuación tendremos la opción de pegar el contenido del JSON, hacer upload del JSON o pegar el ID de este Dashboard.

ImportDashboard

Una vez finalizado, y tras un tiempo prudencial de refresco de datos, podremos ver las métricas visualizadas en este Dashboard. Podremos añadir más, crear nuevos Dashboard de Jira, de otras aplicaciones Atlassian o de aplicaciones que interactuen o no con Atlassian.

JiraDashboard

Desde atSistemas, podemos ayudaros a monitorizar todo tipo de entornos y aplicaciones.

En este artículo hemos querido enseñaros una pequeña aproximación, pero las posibilidades son infinitas. Déjanos configurar tú solución de monitorización a medida.

Esperamos que este artículo haya sido de vuestro interés y no dudéis en consultarnos cualquier duda, a través de los comentarios, o de nuestra cuenta de Twitter.

¡Hasta la próxima!

Fuente: https://community.atlassian.com/t5/Jira-articles/Monitoring-of-Atlassian-applications-with-Prometheus/ba-p/811100

Autor

Álvaro Vicente Benito

Pertenezco a la Comunidad DevOps de knowmad mood. Más Ops que Dev. Me gusta el Airsoft y la cerveza, no importándome el orden por norma general.