Быстрая сборка в docker-compose мониторинга Netdata с проксированием на Nginx и http авторизацией

Netdata — это замечательная система мониторинга серверов и обнаружения ошибок в реальном времени, обладающая удивительной интерактивностью и визуализацией.

Неоднократно сталкиваясь с настройкой и установкой munin на сервера, можно сказать что это небо и земля в установке, поскольку тут всё ставится реально в пару кликов и без лишних бубнов(в отличии от munin).

Визуализация и детализация графиков, информативность, просто потрясающая, даже несмотря на то, что непривычно переходить на другую систему мониторинга. А если учесть то, что этот инструмент заявляется(и судя по всему так и есть) очень легким к потреблению ресурсов(2% на 1 ядерной машине), и изолированным от любых иных сервисов, то это вообще супер.

Единственный «минус», который я решил за 2 минуты, это то, что из коробки после установки он не защищен паролями и открыт во внешний мир. Там в документации netdata общем то сразу предлагаются решения для secure установки на публичные сервера. Но я несколько изменил docker-compose.yml с спроксировал на nginx стандартную сборку, отключив доступность сервиса на порту 19999 извне.

Стандартный конфиг:

version: '3'
services:
  netdata:
    image: netdata/netdata
    container_name: netdata
    pid: host
    network_mode: host
    restart: unless-stopped
    cap_add:
      - SYS_PTRACE
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    volumes:
      - netdataconfig:/etc/netdata
      - netdatalib:/var/lib/netdata
      - netdatacache:/var/cache/netdata
      - /etc/passwd:/host/etc/passwd:ro
      - /etc/group:/host/etc/group:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /etc/os-release:/host/etc/os-release:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro

volumes:
  netdataconfig:
  netdatalib:
  netdatacache:

Обновленный мой конфиг, мапит порт на 127.0.0.1

version: '3'
services:
  netdata:
    image: netdata/netdata
    container_name: netdata
    pid: host
    restart: unless-stopped
    cap_add:
      - SYS_PTRACE
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    volumes:
      - netdataconfig:/etc/netdata
      - netdatalib:/var/lib/netdata
      - netdatacache:/var/cache/netdata
      - /etc/passwd:/host/etc/passwd:ro
      - /etc/group:/host/etc/group:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /etc/os-release:/host/etc/os-release:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
    ports:
      - 127.0.0.1:19999:19999

volumes:
  netdataconfig:
  netdatalib:
  netdatacache:

ну а далее поднимаем контейнер

docker-compose up -d

создаем http юзера

htpasswd -c /etc/nginx/.htpasswd username

и слушаем через nginx конфиг заставляя авторизоваться

server {
    listen 80;
    server_name netdata.example.com;

    location / {
        auth_basic "Restricted Area";
        auth_basic_user_file /etc/nginx/.htpasswd;

        proxy_pass http://127.0.0.1:19999;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

домен netdata.example.com можно не делать доступным извне, а добавить себе в hosts с ip своего сервера.

 

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *