[Cloud Native • Docker] cAdvisor+Prometheus+Grafana 10 minutos para completar la plataforma de monitoreo de contenedores Docker

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 Googleabierto 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. cAdvisorDa soporte a los propios Dockercontenedores , 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 cAdvisorse usa para monitorear el motor de contenedores. Debido a su practicidad de monitoreo, Kubernetesse ha Kubeletintegrado . Por lo tanto, para clústeres nativos de la nube, use directamente Kubeletla 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地址:8080para cAdvisor组件acceder a Web UI:

imagen-20230201210633012

imagen-20230201210855995imagen-20230319171651423

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 cAdvisora 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 UIcAdvisorcAdvisorPrometheushttp://自己的IP地址:8080/metricsPrometheus

imagen-20230319172646079

4. La siguiente tabla enumera algunos cAdvisorindicadores 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 prometheusun 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. prometheusEl 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. DockerDespliegue 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. PrometheusUna vez que se completa el inicio, el navegador visita:

imagen-20230319181053411

Visita la página y encuentra que se han desplegado Status -> Targetslas dos capturas configuradas , y si son de color verde , el acceso es exitoso.JobStateUP

5. Después de que cAdvisorlos 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)

imagen-20230319181712554

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:

imagen-20230319182215216

3. Cree Prometheusuna fuente de datos de tipo, apuntando a la que acaba de crear Prometheus:

imagen-20230319182500971

4. Importe Dockerel panel de monitoreo de contenedores, aquí use 11277:

imagen-20230319191651776

5. Puede ver Dockerel 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 319MBes 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.

imagen-20230319191905993

Supongo que te gusta

Origin blog.csdn.net/god_86/article/details/129654988
Recomendado
Clasificación