Directorio de artículos
cAdvisor+Prometheus+Grafana 10 minutos para obtener la plataforma de monitoreo de contenedores Docker
cAdvisor(Container Advisor)
Es una herramienta de monitoreo de contenedores de código Google
abierto que se puede usar para monitorear el uso y el rendimiento de los recursos del contenedor. Se utiliza para recopilar, agregar, procesar y exportar información sobre contenedores en ejecución. Específicamente, el componente registra parámetros de aislamiento de recursos, uso histórico de recursos, histogramas de uso histórico completo de recursos y estadísticas de red para cada contenedor. cAdvisor
Da soporte a los propios Docker
contenedores , y también da soporte a otro tipo de contenedores en la medida de lo posible, esforzándose por ser compatible y adaptable a todo tipo de contenedores.
De la introducción anterior, podemos saber que cAdvisor
se usa para monitorear el motor de contenedores. Debido a su practicidad de monitoreo, Kubernetes
se ha Kubelet
integrado . Por lo tanto, para clústeres nativos de la nube, use directamente Kubelet
la dirección de la colección de indicadores proporcionada por el componente Eso es todo.
Implementación de cAdvisor
1. Use el siguiente comando para instalar e iniciar cAdvisor组件
:
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
--privileged \
--device=/dev/kmsg \
google/cadvisor:latest
2. En este punto, cAdvisor组件
se ha iniciado y podemos usar el navegador http://自己IP地址:8080
para cAdvisor组件
acceder a Web UI
:
3. En el caso de múltiples hosts, obviamente es un inconveniente ejecutar uno en todos los nodos y luego ver la información de monitoreo cAdvisor
a través de ellos mismos . Al mismo tiempo , solo se guardan 2 minutos de datos de monitoreo de forma predeterminada. La buena noticia es que ya hay soporte incorporado para . La salida de muestra de monitoreo estándar se puede obtener accediendo a :Web UI
cAdvisor
cAdvisor
Prometheus
http://自己的IP地址:8080/metrics
Prometheus
4. La siguiente tabla enumera algunos cAdvisor
indicadores de seguimiento típicos obtenidos en:
Nombre del indicador | tipo | significado |
---|---|---|
container_cpu_load_average_10s | indicador | La carga promedio de la CPU del contenedor en los últimos 10 segundos |
container_cpu_usage_seconds_total | encimera | Tiempo de ocupación acumulada del contenedor en cada núcleo de CPU (unidad: segundo) |
contenedor_cpu_sistema_segundos_total | encimera | Tiempo de uso acumulado de la CPU del sistema (unidad: segundo) |
contenedor_cpu_usuario_segundos_total | encimera | Tiempo de uso de CPU acumulativo del usuario (unidad: segundo) |
container_fs_usage_bytes | indicador | El uso del sistema de archivos en el contenedor (unidad: byte) |
contenedor_fs_limit_bytes | indicador | La cantidad total de sistema de archivos que puede usar el contenedor (unidad: byte) |
container_fs_reads_bytes_total | encimera | La cantidad total de datos leídos acumulativamente en el contenedor (unidad: byte) |
container_fs_writes_bytes_total | encimera | La cantidad total de datos escritos acumulativamente en el contenedor (unidad: byte) |
container_memory_max_usage_bytes | indicador | El uso máximo de memoria del contenedor (unidad: bytes) |
container_memory_usage_bytes | indicador | El uso de memoria actual del contenedor (unidad: byte |
container_spec_memory_limit_bytes | indicador | Límite de uso de memoria del contenedor |
bytes_de_memoria_de_la_máquina | indicador | La cantidad total de memoria en el host actual |
container_network_receive_bytes_total | encimera | La cantidad total de datos acumulativos recibidos por la red de contenedores (unidad: byte) |
container_network_transmit_bytes_total | encimera | La cantidad total de datos transferidos de forma acumulativa en la red del contenedor (unidad: byte) |
despliegue de Prometeo
1. Cree prometheus
un directorio externo para almacenar datos para evitar pérdidas cuando se reinicia el contenedor:
mkdir -p /disk/docker-monitor/prometheus/data
chmod 777 /disk/docker-monitor/prometheus/data
2. prometheus
El archivo de configuración está desconectado para facilitar la modificación vi /disk/docker-monitor/prometheus/prometheus.yml
:
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
- rule/record/*.yml
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "cadvisor"
static_configs:
- targets: ["124.222.45.207:8080"]
job_name: "prometheus" está configurado para capturar los propios indicadores relacionados de Prometheus;
job_name: "cadvisor" está configurado para capturar los indicadores del componente cAdvisor configurados previamente.
3. Docker
Despliegue Prometheus
:
docker run -d -p 9090:9090 --name prometheus \
-v /disk/docker-monitor/prometheus/conf:/opt/bitnami/prometheus/conf \
-v /disk/docker-monitor/prometheus/data:/opt/bitnami/prometheus/data \
bitnami/prometheus:2.42.0 \
--web.enable-lifecycle --web.enable-admin-api\
--config.file=/opt/bitnami/prometheus/conf/prometheus.yml\
--storage.tsdb.path=/opt/bitnami/prometheus/data
–web.enable-lifecycle –web.enable-admin-api proporciona una interfaz de API de descanso para administrar Prometheus, como configurar la carga en caliente: curl -XPOST http://localhost:9090/-/reload.
Nota: El archivo de configuración y el directorio de almacenamiento de Prometheus se cuelgan aquí para evitar la pérdida de datos después de reiniciar el contenedor.
4. Prometheus
Una vez que se completa el inicio, el navegador visita:
Visita la página y encuentra que se han desplegado Status -> Targets
las dos capturas configuradas , y si son de color verde , el acceso es exitoso.Job
State
UP
5. Después de que cAdvisor
los datos de la muestra se puedan recopilar normalmente, el contenedor se puede calcular mediante la siguiente expresión CPU使用率
:sum(irate(container_cpu_usage_seconds_total{image!=""}[1m])) without (cpu)
Despliegue de Grafana
1. Despliegue Grafana
:
docker run -d --name=grafana -p 3000:3000 -v grafana:/var/lib/grafana grafana/grafana
La ruta /var/lib/grafana está desconectada. Este directorio almacena complementos de Grafana e información de datos para evitar la pérdida de datos cuando se reinicia el contenedor Docker.
2. Visita: http://自己的IP:3000/login
, ingresa el número de cuenta admin/admin
:
3. Cree Prometheus
una fuente de datos de tipo, apuntando a la que acaba de crear Prometheus
:
4. Importe Docker
el panel de monitoreo de contenedores, aquí use 11277
:
5. Puede ver Docker
el estado de ejecución del contenedor en el panel de monitoreo. Como se muestra en la figura a continuación, actualmente hay 4 contenedores en ejecución y el uso total de memoria 319MB
es de aproximadamente 1.84 %. El uso de memoria, E/S de red y disco CPU使用率
de cada uno contenedor se muestran en una curva CPU使用率
IO y así sucesivamente.