Advertising:

Monitorizacion de AWS CloudWatch con Zabbix: Difference between revisions

From Zabbix-ES
Jump to navigation Jump to search
 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
https://github.com/mobarrio/cloudwatch_wrapper
=cloudwatch_wrapper=
Repositorio para realizar consultas a Cloudwatch vía API REST utilizando AWS-SDK + NodeJS
El objetivo es que mediante una llamada HTTP podamos extraer datos de CloudWatch sin la necesidad de instalar paqueteria adicional en nuestro servidor de Zabbix.


=cloudwatch_wrapper=
[[File:Zbx cw img009.png|1280px|thumb|center]]
Repositorio para realizar consultas a Cloudwatch via API REST utilizando AWS-SDK + NodeJS
El objetivo es que mediante una llamada HTTP podamos extraer datos de CloudWatch sin la necesidad de instalar paqueteria adisional en nuestro servidor de Zabbix.


![Esquema de conexion](https://i.imgur.com/APbQZ7e.png)
'''Nota:''' Ver el proyecto completo y actualizado en [https://github.com/mobarrio/cloudwatch_wrapper GITHUB]
'''Nota:''' Ver imágenes disponibles en Docker hub [https://hub.docker.com/repository/docker/mobarrio/cloudwatch_wrapper DOCKERHUB]


==Instalacion de Docker-Compose==
==Instalación de Docker-Compose==
  # curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  # curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  # ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  # ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
Line 15: Line 16:
==AWS-SDK Credentials==
==AWS-SDK Credentials==
  El acceso se realiza via el archivo de credenciales.
  El acceso se realiza via el archivo de credenciales.
[[File:2022-06-07 20-38-00.png|680px|thumb|center|Credenciales obtenidas en AWS para completar el /root/.aws/credentials]]


  # cat /root/.aws/credentials
  # cat /root/.aws/credentials
Line 32: Line 35:
  aws_access_key_id = [ACCESS_KEY]
  aws_access_key_id = [ACCESS_KEY]
  aws_secret_access_key = [SECRET_KEY]
  aws_secret_access_key = [SECRET_KEY]


==Compilar y arrancar el contenedor==
==Compilar y arrancar el contenedor==
Line 59: Line 61:
===LLD macros===
===LLD macros===
  {#ACCOUNT}    - Tipo de cuenta a la que estamos conectados.
  {#ACCOUNT}    - Tipo de cuenta a la que estamos conectados.
  {#TOKEN}      - Bearer token para poder conectarnos a la API y recolectar metricas.
  {#TOKEN}      - Bearer token para poder conectarnos a la API y recolectar métricas.
  {#TTL}        - TTL del Bearer token.
  {#TTL}        - TTL del Bearer token.


Line 65: Line 67:
  {$REDISDBNAME} - ElastiCache DBName solo pare los ejemplos de monitorizacion de ElastiCache.
  {$REDISDBNAME} - ElastiCache DBName solo pare los ejemplos de monitorizacion de ElastiCache.


==Video==
==Vídeo Resumido==
![CloudWatch](https://user-images.githubusercontent.com/1693682/88439546-cb5c3000-ce0b-11ea-88ad-36d5fd3c7e7b.gif)
[[File:Zbx cw CloudWatch.gif|none|frame]]
 
==Video con la instalación completa / Full installation==
{{#evt:
service=youtube
|id=https://www.youtube.com/watch?v=Ibd3eD05m1A
|alignment=center
|Youtube Channel
}}
<center>Video completo | [https://www.youtube.com/channel/UCI2Ifc3rtb3UnKnXVHpTeKw?sub_confirmation=1 Suscríbete y entérate de los últimos videos]</center>


==Imagenes==
==Imagenes==
[File:Zbx cw img001.png Zabbix Latest Data]
[[File:Zbx cw img001.png|1280px|thumb|center|Zabbix Latest Data]]
[[File:Zbx cw img002.png|1280px|thumb|center|Login]]
[[File:Zbx cw img003.png|1280px|thumb|center|Help]]
[[File:Zbx cw img004.png|1280px|thumb|center|API Help]]
[[File:Zbx cw img005.png|1280px|thumb|center|Get Bearer Token]]
[[File:Zbx cw img006.png|1280px|thumb|center|Verify Bearer Token]]
[[File:Zbx cw img007.png|1280px|thumb|center|List Metrics]]
[[File:Zbx cw img008.png|1280px|thumb|center|Get Metrics]]
 
==Habilitar el modo DEBUG==
===Editamos el environment via el fichero env.js===
NOTA: El fichero env.js tiene que existir en el mismo path donde esta el docker-compose.yml
 
'''# vi env.js'''
process.env.LOG_LEVEL="debug";    '''<- Activa el Debug de Cloudwatch-Wrapper'''
// process.env.DEBUG="express:*"; '''<- Mas nivel de Debug en las llamadas via express'''
 
===Mapeamos en env.js dentro del docker===
'''# vi docker-compose.yml'''
version: '3'
services:
  wrapper:
    image: mobarrio/cloudwatch_wrapper:latest
    container_name: cloudwatch_wrapper
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - CRED=pro
    volumes:
      - ~/.aws/credentials:/root/.aws/credentials:ro
      '''- ./env.js:/usr/src/app/env.js'''    '''<- Mapear el fichero env.js dentro del docker.'''
 
===Iniciamos el docker con consola===
# docker-compose up


![Zabbix Latest Data](https://i.imgur.com/Ocp3AJI.png)
[[File:2022-10-19 20-52-30.png|800px|thumb|left|Modo DEBUG ON]]
![Login](https://imgur.com/cPtpBKH.png)
![Help](https://imgur.com/2lvcW1w.png)
![API Help](https://imgur.com/rui2PkF.png)
![Get Bearer Token](https://imgur.com/FqaasZb.png)
![Verify Bearer Token](https://imgur.com/JE8INef.png)
![List Metrics](https://imgur.com/49YD4Wa.png)
![Get Metrics](https://imgur.com/vB573t7.png)

Latest revision as of 18:57, 19 October 2022

cloudwatch_wrapper

Repositorio para realizar consultas a Cloudwatch vía API REST utilizando AWS-SDK + NodeJS
El objetivo es que mediante una llamada HTTP podamos extraer datos de CloudWatch sin la necesidad de instalar paqueteria adicional en nuestro servidor de Zabbix.
Nota: Ver el proyecto completo y actualizado en GITHUB
Nota: Ver imágenes disponibles en Docker hub DOCKERHUB

Instalación de Docker-Compose

# curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# chmod 755 /usr/local/bin/docker-compose
# docker-compose --version

AWS-SDK Credentials

El acceso se realiza via el archivo de credenciales.
Credenciales obtenidas en AWS para completar el /root/.aws/credentials
# cat /root/.aws/credentials
[default]
aws_access_key_id = [ACCESS_KEY]
aws_secret_access_key = [SECRET_KEY]

[pro]
aws_access_key_id = [ACCESS_KEY]
aws_secret_access_key = [SECRET_KEY]

[pre]
aws_access_key_id = [ACCESS_KEY]
aws_secret_access_key = [SECRET_KEY]

[dev]
aws_access_key_id = [ACCESS_KEY]
aws_secret_access_key = [SECRET_KEY]

Compilar y arrancar el contenedor

# docker-compose build
# docker-compose up -d


Parar el contenedor

# docker-compose down


Generar clave RSA 256

# ssh-keygen -t rsa -b 4096 -m PEM -f config/jwtRS256.key


Usuarios y Password

Usr admin
Psw zabbix

Zabbix Demo Template

Template Macros

{$BASICTOKEN}  - Token Basic para poder conectarnos a la API
{$REGION}      - Region de AWS
{$API_SERVER}  - IP y puerto en que escucha la API. Ej. http://10.1.2.100:3000

LLD macros

{#ACCOUNT}    - Tipo de cuenta a la que estamos conectados.
{#TOKEN}      - Bearer token para poder conectarnos a la API y recolectar métricas.
{#TTL}        - TTL del Bearer token.

Hosts Macros

{$REDISDBNAME} - ElastiCache DBName solo pare los ejemplos de monitorizacion de ElastiCache.

Vídeo Resumido

Video con la instalación completa / Full installation

EmbedVideo was given an illegal value for the alignment parameter "Youtube Channel". Valid values are "left", "center", or "right".
Video completo | Suscríbete y entérate de los últimos videos

Imagenes

Zabbix Latest Data
Login
Help
API Help
Get Bearer Token
Verify Bearer Token
List Metrics
Get Metrics

Habilitar el modo DEBUG

Editamos el environment via el fichero env.js

NOTA: El fichero env.js tiene que existir en el mismo path donde esta el docker-compose.yml
# vi env.js
process.env.LOG_LEVEL="debug";    <- Activa el Debug de Cloudwatch-Wrapper
// process.env.DEBUG="express:*"; <- Mas nivel de Debug en las llamadas via express

Mapeamos en env.js dentro del docker

# vi docker-compose.yml
version: '3'
services:
  wrapper:
    image: mobarrio/cloudwatch_wrapper:latest
    container_name: cloudwatch_wrapper
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - CRED=pro
    volumes:
      - ~/.aws/credentials:/root/.aws/credentials:ro
      - ./env.js:/usr/src/app/env.js     <- Mapear el fichero env.js dentro del docker.

Iniciamos el docker con consola

# docker-compose up
Modo DEBUG ON