Commit f75cb04d authored by Ignacio's avatar Ignacio
Browse files

Añade logos, enlaces y descrip. en monitorización

parent a4432b5e
Loading
Loading
Loading
Loading
+19 KiB
Loading image diff...
+15 KiB
Loading image diff...
+39 −9
Original line number Diff line number Diff line
# Monitorización
## Gestión
La distribución de los contenedores en los diferentes servidores, se siguen ciertos criterios:

* Analizar las cargas de los servidores
* Dependencias entre servicios, si hay dependencia entre servicios, y siempre que sea posible se despliegan en el mismo servidor para reducir la latencia de transferencia de datos.


### Portainer
[Portainer](https://portainer.io){: target="_blank"} es un servicio para manejar el entorno Docker Swarm de manera gráfica, lo que facilita ver el estado del sistema.

![portainer-logo](images/portainer_logo.png){: .shadow}

Algunas tareas:

* Ajustar configuración de recursos, CPU o memoria.
* Cambiar valores pasados por variables de entorno.
* Editar etiquetas de los servicios.
* Editar los requisitos (constraints) a cumplir por los servidores.
* Permite ver la distribución de los contenedores dentro de cada servidor, algo bastante a la hora de repartir los contenedores.
* Listar imágenes, contenedores y volúmenes.
* Editar secretos y configuraciones.


## Métricas
Como todo buen sistema, se necesitan datos que permitan analizar el rendimiento, para ello REDMIC, al usar un sistema como Docker Swarm, se ha optado por usar [SwarmProm](https://github.com/stefanprodan/swarmprom){: target="_blank"}, un proyecto que aglutina varias herramientas para realizar monitorización de un entorno Docker Swarm.
Como todo buen sistema, es necesario contar con una herramienta que permita analizar el rendimiento del sistema, con el fin de detectar problemas, optimizar recursos, actuar en picos de alta demanda, etc.

[SwarmProm](https://github.com/stefanprodan/swarmprom){: target="_blank"}, es la base para realizar monitorización de REDMIC. Este proyecto aglutina diferentes herramientas de recolecta y visualización de métricas. En el siguiente diagrama muestra un esquema básico de las funciones que realiza cada componente.


![monitoring](images/monitoring.png){: .center}

Todas las herramientas que se exponen a continuación son instaladas como contenedores en los servidores que correspondan.

### Prometheus
Open source
[Prometheus](https://prometheus.io){: target="_blank"} es la herramienta básica encargada de recolectar todas las métricas expuestas por los diferentes servicios, así como de alertar de problemas. Para ello, cada cierto tiempo recoge las métricas expuestas por los servicios que son monitorizados, si una métrica no responde durante un tiempo ese servicio se da por eliminado. Todas estas métricas son almacenadas en una base de datos, para su posterior consulta.

![prometheus_logo](images/prometheus_logo.png){: .shadow}

### cAdavisor
cAdvisor es un sistema de monitorización de contenedores, implementado por Google, que permite analizar los recursos usados por un contenedor en ejecución así como su rendimiento.
[cAdvisor](https://github.com/google/cadvisor){: target="_blank"} es un sistema de monitorización de contenedores, implementado por Google, que permite analizar los recursos usados por un contenedor en ejecución así como su rendimiento.

![cadvisor-logo](images/cadvisor_logo.png){: .shadow}

### Node-exporter
Node-exporter es una herramienta que expone métricas del servidor donde está instalado, para ello recopila datos sobre usos de memoria, disco o CPU, así como de tráfico E/S.
[Node-exporter](https://github.com/prometheus/node_exporter){: target="_blank"} es una herramienta que expone métricas del servidor donde está instalado, para ello recopila datos sobre usos de memoria, disco o CPU, así como de tráfico E/S.

### dockerd-exporter
Colecta métricas del servicio de docker

### PushGatewayPus
Algunos contenedores no están continuamente en ejecución y a menudo solo se encargan de realizar una acción momentáneamente como una copia de seguridad de una base de datos, realizar una tarea de mantenimiento, etc. Este tipo funcionamiento hace que Prometheus no pueda recopilar datos de ellos, así que para resolver este problema, se utiliza PushGateway.
### PushGateway
Algunos contenedores no están continuamente en ejecución y a menudo solo se encargan de realizar una acción momentáneamente como una copia de seguridad de una base de datos, realizar una tarea de mantenimiento, etc. Este tipo funcionamiento hace que Prometheus no pueda recopilar datos de ellos, así que para resolver este problema, se utiliza [PushGateway](https://github.com/prometheus/pushgateway){: target="_blank"}.

![pushgateway](images/pushgateway.png){: .center}

Cuando un contenedor de este tipo necesita exponer una métrica, realiza un PUT al servicio de PushGateway con la métrica, este la almacena para que Prometheus la pueda leer. La métrica no será actualizada hasta que el contenedor no vuelva a realizar un PUT con nuevos datos.



### Granafa
Permite crear dashboard donde comprobar la salud, rendimiento de los diferentes servicios.
[Grafana](https://grafana.com){: target="_blank"} permite crear dashboards donde comprobar la salud, rendimiento de los diferentes servicios.

---

## Alertas
Para 
### Alertmanager
[Alertmanager](https://github.com/prometheus/alertmanager){: target="_blank"}

## Chequeo de salud
Los contenedores tienen un chequeo de salud, que permite comprobar si el contenedor está funcionando correctamente. Si el chequeo detecta que el funcionamiento no es correcto, el contenedor es parado y se arranca una nueva instancia.

Además de los contenedores, todos los servidores cuentan con servicio que chequea si la salud del servicio "docker", este servicio es monitorizado desde el servicio de Elastic Load Balancing, proveído por Amazon, el cual permite reiniciar un servidor si el servicio de salud del servidor no responde.

---

## Logs