Self-hosting. Cadvisor

Π‘advisor ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для сбора Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π² основном Π΄ΠΎΠΊΠ΅Ρ€ Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹) которая ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с Prometheus. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСдоставляСт ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ Π²Π΅Π± интСрфСйс для просмотра всСх Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.

Danger

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ занимаСтся Google ΠΈ ΠΎΠ±Ρ€Π°Π· Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ Π½Π° ΠΈΡ… сСрвСрах. Из Π·Π° санкций Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ потрСбуСтся доступ ΠΊ сайту gcr.io Ρ‡Π΅Ρ€Π΅Π· VPN.

Π Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ: GitHub - google/cadvisor: Analyzes resource usage and performance characteristics of running containers.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ развСртывания docker compose:

Π‘Ρ‚Π΅ΠΊ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для запуска Π½Π° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ машинС для сбора Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΎ хост систСмС ΠΈ Π΄ΠΎΠΊΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…:

services:
  nodeexporter:
    image: prom/node-exporter:latest
    container_name: nodeexporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - --path.procfs=/host/proc
      - --path.rootfs=/rootfs
      - --path.sysfs=/host/sys
      - --collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($|/)
    restart: unless-stopped
    network_mode: host
  cadvisor:
    image: gcr.io/cadvisor/cadvisor:latest
    container_name: cadvisor
    privileged: true
    devices:
      - /dev/kmsg:/dev/kmsg
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
      - /cgroup:/cgroup:ro
    restart: unless-stopped
    command:
	  - '-port=8090'
    network_mode: host
networks: {}
Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅

Π‘advisor запускаСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° ΠΏΠΎΡ€Ρ‚Ρƒ 8080 ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ занят Π² систСмС, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ. Π’ Ρ€Π΅ΠΆΠΈΠΌΠ΅ bridge с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ports: - 8090:8080 ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊ измСнСния ΠΏΠΎΡ€Ρ‚Π° command: - '-port=8090'

Настройка Prometheus

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Prometheus Π½ΠΎΠ²ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ сбора Π΄Π°Π½Π½Ρ‹Ρ…:

  - job_name: 'nodeexporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['monitoring.local:9100', 'gateway.local:9100', 'main.local:9100', 'nextcloud.local:9100', 'media.local:9100', 'immich.local:9100', 'armbian.local:9100']

  - job_name: 'cadvisor'
    scrape_interval: 5s
    static_configs:
      - targets: ['monitoring.local:8090', 'gateway.local:8090', 'main.local:8090', 'nextcloud.local:8090', 'media.local:8090', 'immich.local:8090', 'armbian.local:8090']

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π² Grafana

Для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (ΠΏΡ€ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠΈ стСка с Node exporter) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Π½Π΅Π»ΠΈ Grafana:
![[docker_containers.json]]
![[docker_host.json]]