Advertising:

Monitorizacion de AWS CloudWatch con Zabbix: Difference between revisions

From Zabbix-ES
Jump to navigation Jump to search
(Created page with "https://github.com/mobarrio/cloudwatch_wrapper =cloudwatch_wrapper= Repositorio para realizar consultas a Cloudwatch via API REST utilizando AWS-SDK + NodeJS El objetivo es...")
 
 
(14 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.
 
[[File:Zbx cw img009.png|1280px|thumb|center]]
 
'''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]


=cloudwatch_wrapper=
==Instalación de Docker-Compose==
  Repositorio para realizar consultas a Cloudwatch via API REST utilizando AWS-SDK + NodeJS
  # curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  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.
  # ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# chmod 755 /usr/local/bin/docker-compose
# docker-compose --version


![Esquema de conexion](https://i.imgur.com/APbQZ7e.png)
==AWS-SDK Credentials==
El acceso se realiza via el archivo de credenciales.


==Instalacion de Docker-Compose==
[[File:2022-06-07 20-38-00.png|680px|thumb|center|Credenciales obtenidas en AWS para completar el /root/.aws/credentials]]
```
# 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
# cat /root/.aws/credentials
`El acceso se realiza via el archivo de credenciales.`
[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==
# cat /root/.aws/credentials
# docker-compose build
[default]
# docker-compose up -d
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]
==Parar el contenedor==
aws_access_key_id = [ACCESS_KEY]
# docker-compose down
aws_secret_access_key = [SECRET_KEY]


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


==Generar clave RSA 256==
# ssh-keygen -t rsa -b 4096 -m PEM -f config/jwtRS256.key


## Compilar y arrancar el contenedor
```
# docker-compose build
# docker-compose up -d
```


==Usuarios y Password==
'''Usr''' admin
'''Psw''' zabbix


## Parar el contenedor
==Zabbix Demo Template==
```
===Template Macros===
# docker-compose down
{$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===
## Generar clave RSA 256
{$REDISDBNAME} - ElastiCache DBName solo pare los ejemplos de monitorizacion de ElastiCache.
```
# ssh-keygen -t rsa -b 4096 -m PEM -f config/jwtRS256.key
```


==Vídeo Resumido==
[[File:Zbx cw CloudWatch.gif|none|frame]]


## Usuarios y Password
==Video con la instalación completa / Full installation==
```
{{#evt:
Usr admin
service=youtube
Psw zabbix
|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>


## Zabbix Demo Template
==Imagenes==
# Template Macros
[[File:Zbx cw img001.png|1280px|thumb|center|Zabbix Latest Data]]
```
[[File:Zbx cw img002.png|1280px|thumb|center|Login]]
{$BASICTOKEN}  - Token Basic para poder conectarnos a la API
[[File:Zbx cw img003.png|1280px|thumb|center|Help]]
{$REGION}      - Region de AWS
[[File:Zbx cw img004.png|1280px|thumb|center|API Help]]
{$API_SERVER}  - IP y puerto en que escucha la API. Ej. http://10.1.2.100:3000
[[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]]


# LLD macros
==Habilitar el modo DEBUG==
```
===Editamos el environment via el fichero env.js===
{#ACCOUNT}    - Tipo de cuenta a la que estamos conectados.
NOTA: El fichero env.js tiene que existir en el mismo path donde esta el docker-compose.yml
{#TOKEN}      - Bearer token para poder conectarnos a la API y recolectar metricas.
{#TTL}        - TTL del Bearer token.
```


# Hosts Macros
'''# vi env.js'''
```
process.env.LOG_LEVEL="debug";    '''<- Activa el Debug de Cloudwatch-Wrapper'''
{$REDISDBNAME} - ElastiCache DBName solo pare los ejemplos de monitorizacion de ElastiCache.
// process.env.DEBUG="express:*"; '''<- Mas nivel de Debug en las llamadas via express'''
```


## Video
===Mapeamos en env.js dentro del docker===
![CloudWatch](https://user-images.githubusercontent.com/1693682/88439546-cb5c3000-ce0b-11ea-88ad-36d5fd3c7e7b.gif)
'''# 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.'''


## Imagenes
===Iniciamos el docker con consola===
![Zabbix Latest Data](https://i.imgur.com/Ocp3AJI.png)
# docker-compose up


![Login](https://imgur.com/cPtpBKH.png)
[[File:2022-10-19 20-52-30.png|800px|thumb|left|Modo DEBUG ON]]
![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