-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
-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
Showing
86 changed files
with
5,393 additions
and
97 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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) | ||
|
@@ -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) | ||
|
||
|
@@ -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_ | ||
|
||
|
@@ -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**_ | ||
|
@@ -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) | ||
|
||
|
@@ -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) | ||
|
@@ -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] |
Oops, something went wrong.