Skip to content

Commit

Permalink
Add Monitoring Logger
Browse files Browse the repository at this point in the history
-Add Monitoring Logs with ELK
-Add Monitoring Request Refactor Folder Grafana
-Refactor Docker Files
-Add Logger with Logstash
-Update Readme
-Update Test Unit / E2E
  • Loading branch information
SkyZeroZx committed Nov 19, 2022
1 parent 9890ba0 commit 77d1cf4
Show file tree
Hide file tree
Showing 86 changed files with 5,393 additions and 97 deletions.
32 changes: 32 additions & 0 deletions .env.template
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,35 @@ TIMESTAMP_FORMAT=YYYY-MM-DD hh:mm:ss.SSS A
MAX_SIZE=20m
MAX_DAYS=14d

#GRAFANA PROPERTIES
GRAFANA_PASSWORD='changeme'


# LOGSTASH PROPERTIES
LOGSTASH_ENABLED=false # Flag for enabled logStash communication with ELK
LOGSTASH_PORT=50000
LOGSTASH_NODE_NAME=SKY_KRONO_LOG
LOGSTASH_HOST=host.docker.internal

ELASTIC_VERSION=8.5.0

## Passwords for stack users
#

# User 'elastic' (built-in)
#
# Superuser role, full access to cluster management and data indices.
# https://www.elastic.co/guide/en/elasticsearch/reference/current/built-in-users.html
ELASTIC_PASSWORD='changeme'

# User 'logstash_internal' (custom)
#
# The user Logstash uses to connect and send data to Elasticsearch.
# https://www.elastic.co/guide/en/logstash/current/ls-security.html
LOGSTASH_INTERNAL_PASSWORD='changeme'

# User 'kibana_system' (built-in)
#
# The user Kibana uses to connect and communicate with Elasticsearch.
# https://www.elastic.co/guide/en/elasticsearch/reference/current/built-in-users.html
KIBANA_SYSTEM_PASSWORD='changeme'
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ jobs:
envkey_MAX_DAYS: ${{secrets.MAX_DAYS}}
envkey_LOG_FOLDER: ${{secrets.LOG_FOLDER}}
envkey_TIMESTAMP_FORMAT: ${{secrets.TIMESTAMP_FORMAT}}
env_key_LOGSTASH_ENABLED: ${{secrets.LOGSTASH_ENABLED}}
directory: ${{ github.workspace }}
file_name: .env
fail_on_empty: false
Expand Down
71 changes: 52 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@
- [Unit-Test](#unit-test)
- [E2E-Test](#E2E-test)
- [Build](#build)
- [Despligue](#despliegue-)
- [Monitoreo](#monitoreo)
- [Despligue](#despliegue-)
- [Monitoreo](#monitoreo)
- [Analisis de Codigo](#analisis-de-codigo-)
- [Integración Continua](#integración-continua)
- [Logger](#logger)
Expand Down Expand Up @@ -95,15 +95,15 @@ _El diagrama de base de datos se construyo para el proyecto se describe en la im

### Scripts SQL

_Se tiene el archivo ```script.sql``` en la raiz del proyecto , el cual contiene los scripts de creacion de Store Procedure y Events/Jobs en MySQL_
_Se tiene el archivo `script.sql` en la raiz del proyecto , el cual contiene los scripts de creacion de Store Procedure y Events/Jobs en MySQL_

_Se requiere ejecutar para el correcto funcionamiento de las tareas programadas como registro de licencias , dias libres de los trabajadores_

![Scripts SQL](/docs/sql/sql.png)

### Environment

_Se tiene el archivo ```env.template``` , el cual posee un ejemplo de cada valor de las valores de entorno para poder desplegarlas en nuestro propio ambiente local o cloud_
_Se tiene el archivo `env.template` , el cual posee un ejemplo de cada valor de las valores de entorno para poder desplegarlas en nuestro propio ambiente local o cloud_

![Env](/docs/env/env.png)

Expand All @@ -127,7 +127,7 @@ _La carpeta con la cobertura del codigo se creara en la raiz del proyecto con la

_Los test fueron desarrollados en Jest con ayuda de SuperTest realizados a la API , para validar el funcionamiento adecuado en un entorno más real_

_Previamente configurar los datos de pruebas en el archivo ```e2e-config.spec.ts``` de la carpeta ```e2e```_
_Previamente configurar los datos de pruebas en el archivo `e2e-config.spec.ts` de la carpeta `e2e`_

_Para ejecutar todos los E2E Test y reporte de cobertura de codigo ejecutar el comando_

Expand All @@ -147,42 +147,74 @@ _Para generar el build de producción del proyecto ejecutar el siguiente comando

## Despliegue 👨🏻‍💻

_Para desplegar el proyecto mediante Docker se tiene los archivos ```Dockerfile``` y ```docker-compose.prod.yaml```, los cuales tienen preconfigurado la imagen y dependencias necesarias para levantar el proyecto_
_Para desplegar el proyecto mediante Docker tiene el archivo `docker-compose.prod.yaml` y la carpeta `docker`_

_Las cuales contienes los `Dockerfile` y dependencias necesarias para levantar el proyecto_

_Se dockerizo sobre un servidor de proxy inverso nginx el cual se expone en el puerto **80** por default_

_Para construir la imagen y ejecutarla tenemos el siguiente comando , el cual tambien tomara nuestras variable de entorno del archivo ```env```_
_Para construir la imagen y ejecutarla tenemos el siguiente comando , el cual tambien tomara nuestras variable de entorno del archivo `env`_

_Ejecutar el siguiente comando en la raiz del proyecto_

```
docker-compose -f docker-compose.prod.yaml --env-file .env up --build
docker compose -f docker-compose.prod.yaml --env-file .env up -d --build skykronoapi nginx
```

![Docker 1](/docs/docker/docker-1.png)

![Docker 2](/docs/docker/docker-2.png)

_En caso de requerir volver a ejecutar el contenedor del proyecto previamente creado ejecutar el comando:_

```
docker-compose -f docker-compose.prod.yaml --env-file .env up
```
_En caso de requerir volver a ejecutar el contenedor del proyecto previamente creado ejecutar el mismo comando_

## Monitoreo

_Adicionalmente en Docker se adiciono Prometheus y Grafana para el monitorio de nuestra API_

_Se configuro por default el puerto **9090** para Prometheus y para Grafana se configuro el puerto **2525**_


_DashBoard para monitoreo del API en Grafana_

![Grafana 1](/docs/graphana/graphana-1.png)


![Grafana 2](/docs/graphana/graphana-2.png)

_Se agrego tambien LogStash , ElasticSearch con Kibana para la ingesta y monitoreo de LOGs_

_Se configuro por default el puerto **5061** por default para Kibana_

_Para implementar el ELK se tomo el repositorio de Deaviantony <a target="_blank" rel="noopener noreferrer" href="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/deviantony/docker-elk">Docker ELK</a>_

_Se construyo un DashBoard para monitoreo de LOGs con sus status y metricas_

![Kibana 1](/docs/kibana/kibana-1.png)

![Kibana 2](/docs/kibana/kibana-2.png)

_Para ejecutar los contenedores referentes al monitoreo ejecutar el comando_

```
docker compose -f "docker-compose.prod.yaml" up -d --build elasticsearch prometheus grafana kibana logstash setup
```

_Previamente inicializar el API en su contenedor indicado en el apartado de despliegue con la siguiente configuración en .env_

```
LOGSTASH_ENABLED= true
LOGSTASH_PORT= 50000
LOGSTASH_NODE_NAME= SKY_KRONO_LOG
LOGSTASH_HOST= host.docker.internal
GRAFANA_PASSWORD='changeme'
KIBANA_SYSTEM_PASSWORD= changeme
LOGSTASH_INTERNAL_PASSWORD= changeme
ELASTIC_PASSWORD= changeme
```

_Si desea importar los dashboardS construidos para este proyecto se encuentran en la carpeta ```dashboard``` siendo los archivos:_

- ***grafana-sky-krono.json*** para **Grafana**
- ***kibana-sky-krono.ndjson*** para **Kibana**

## Analisis de Codigo 🔩

_**Pre requisitos**_
Expand Down Expand Up @@ -221,13 +253,11 @@ _Se creo la carpeta `.github/workflows` con el archivo `build.yml` que contiene

_Posteriormente a la ejecución del workflow se generan los artifacts `reports-e2e-test` , `reports-unit-test` que contienen el reporte cobertura generado_


![CI 2](/docs/ci/ci-2.png)

## Documentacion

_Se realizo la documentación del API Rest usando Swagger el cual puede encontrar en la ruta http:https://localhost:3000/docs/ en la configuración por default_

_Se realizo la documentación del API Rest usando Swagger el cual puede encontrar en la ruta http:https://localhost:3000/docs/ en la configuración por default_

![Swagger 1](/docs/swagger/swagger-1.jpg)

Expand All @@ -245,6 +275,7 @@ DATE_PATTERN=YYYY-MM-DD
MAX_SIZE=20m
MAX_DAYS=14d
```

_Por default la carpeta donde se guardan los logs es `LOG` , el formato configurado es JSON_

![LOGGER 1](/docs/logger/logger-1.png)
Expand Down Expand Up @@ -277,4 +308,6 @@ Usamos [GIT](https://git-scm.com/) para el versionado.

## Autor ✒️

- **Jaime Burgos Tejada** - _Developer_ - [SkyZeroZx](https://github.com/SkyZeroZx) - email : [email protected]
- **Jaime Burgos Tejada** - _Developer_
- [SkyZeroZx](https://github.com/SkyZeroZx)
- email : [email protected]
Loading

0 comments on commit 77d1cf4

Please sign in to comment.