Revista Tecnología

Integrando métricas de AWS CloudWatch en Zabbix

Publicado el 13 septiembre 2016 por Dbigcloud @dbigcloud

Esta semana os he subido un script que he realizado para integrar las métricas de AWS CloudWatch en un servidor de monitorización Zabbix, por si no lo sabéis CloudWatch únicamente guarda las estadísticas durante 14 días, por lo que si necesitáis almacenarlas durante más tiempo debéis de buscar una alternativa como ésta.

 

zabbix cloudwatch metrics

El script está realizado en python usando la librería Boto3 y es invocado a través de zabbix, con un script en bash que le pasa los parámetros que le indiquemos. Podéis acceder al repositorio de DBigCloud para descargarlo.

Su uso es muy sencillo, solo habría que invocarlo pasando los parámetros que deseemos extraer de CloudWatch, la lista de parámetros es la siguiente:

  • namespace  # e.g. 'AWS/RDS' -> El nombre del servicio de AWS que deseamos monitorizar.
  • metricname # e.g. CPUUtilization -> El nombre de la metrica.
  • dimname # e.g. DBInstanceIdentifier -> El identificador que vamos a usar en dimvalue, por ejemplo: el nombre, el ID...
  • dimvalue # e.g. MyDB -> Identificador
  • statistic # [ Sum, Maximum, Minimum, SampleCount, Average ] -> El tipo de estadistica que deseamos.

Mi consejo, para saber que parámetros debemos pasar es revisar las métricas en CloudWatch donde os aparecerán los datos que necesitáis, para usarlo debéis:

    1. Descargar los dos scripts cloudwatch_metrics.py y cloudwatch_metrics.sh.
    2. Copiar los dos scripts a la ruta en la que tengáis los external script de Zabbix, por defecto: /usr/lib/zabbix/externalscripts/
    3. Crear un Item de tipo external script, añadiendo en el campo key el script junto con sus parámetros, por ejemplo para monitorizar el APIGateway de DBigCloud uso lo siguiente:
      cloudwatch_metrics.sh["AWS/APIGateway", "Latency", "ApiName", "DBigCloud", "Average"]


zabbix cloudwatch


Con esto ya comenzaríamos a recoger las estadisticas de latencia que registra la API en CloudWatch, por ejemplo he creado una gráfica en la que voy viendo la latencia que tiene la API.

zabbix grapth cloudwatch


Debemos tener en cuenta que el servidor Zabbix debe de tener permisos de alguna forma para acceder a CloudWatch o bien mediante un usuario o a través de un Rol, en el caso de que sea una instancia EC2, espero que os sea de utilidad.


Compártelo:


Volver a la Portada de Logo Paperblog