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 своего сервера.