Netdata Docker Installation
Netdata Monitoring ist ein geniales Tool um Linux Systeme was Performance Daten angeht zu Monitoren. Es erlaubt ebenfalls eine Alarmierung auf alle Performance Daten. Es bietet ein gut aufgeräumtes Dashboard, in dem man alle Daten zum System findet. Ähnlich wie auch bei Grafana lässt sich einstellen von wann man die Daten sehen möchte. Ein Live Monitoring inklusive. Das Ganze Tool ist sehr schlank gehalten und benötigt nur wenig Ressourcen. Ich nutze es als Docker Container und Monitore damit meinen kompletten Docker Node inklusive der laufenden Docker Container.
Mehr Informationen findet ihr auf der Homepage:
Docker Compose Projekt
Ich habe hier auch wie schon Watchtower, Smokeping und Portainer, Netdata in mein Compose Projekt tools
integriert.
Der Projekt Ordner ist deshalb /opt/tools
Wir legen hier als erstes ein Config Directory an, in welches wir die Konfigurationsdateien aus dem Container kopieren:
mkdir -p /opt/tools/data
docker run -d --name netdata_tmp netdata/netdata
docker cp netdata_tmp:/etc/netdata/ /opt/tools/data/
docker rm -f netdata_tmp
Nun fügen wir den Netdata Service dem Tools docker-compose.yml
hinzu:
/opt/tools/docker-compose.yml
...
netdata:
image: netdata/netdata
ports:
- ${NETDATA_HTTP_PORT}:19999
restart: always
hostname: vs.laub-home.de # set to fqdn of host
cap_add:
- SYS_PTRACE
security_opt:
- apparmor:unconfined
volumes:
- ./data/netdata:/etc/netdata
- data_netdata_lib:/var/lib/netdata
- data_netdata_cache:/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
environment:
- TZ=${TZ}
- DOCKER_USR=root
# If running on a virtual Machin you can get it with:
# # systemd-detect-virt -v
#- VIRTUALIZATION=xen
labels:
- com.centurylinklabs.watchtower.enable=true
networks:
frontend-nw:
...
in unser .env Datei müssen wir folgendes integrieren:
/opt/tools/.env
...
# Netdata Exposed Port Configuration
NETDATA_HTTP_PORT=19999
# Timezone
TZ=Europe/Berlin
...
Nun können wir das Ganze deployen:
cd /opt/tools
docker-compose up -d
Das Dashboard ist nun direkt unter
- http://YOURFQDN:19999
erreichbar
Konfiguration
Im Normall Fall bedarf es keinerlei Konfiguration, da Netdata, das System komplett Scannt und automatisch alle verfügbaren Monitore einrichtet. Reicht einem das schon, ist keine Konfiguration mehr nötig.
Es gibt jedoch die Möglichkeit, den schon Ressourcen schonenden Netdata Agent noch schlanker zu machen. Dazu muss man die Konfigurationsdateien editieren. Dies geschieht mit dem eigens gebauten Shell Script edit-config
. Diese muss man allerdings im Container selbst ausführen:
docker exec -it tools_netdata_1 /etc/netdata/edit-config KONFIGDATEI
Doch zu allererst habe ich mir die aktuell laufenden netdata.conf
Datei aus dem System heruntergeladen:
wget -O /opt/tools/data/netdata/netdata.conf http://localhost:19999/netdata.conf
Nun können wir diese editieren:
docker exec -it tools_netdata_1 /etc/netdata/edit-config netdata.conf
Hier habe ich aus Performance Gründen folgendes angepasst:
[global] update every = 5 dbengine multihost disk space = 128 debug log = none error log = none access log = none [plugins] enable running new plugins = no [plugin:apps] update every = 10
Zum Aktivieren der Änderungen muss der Container neu gestartet werden:
docker-compose restart netdata
Hier ist ein sehr guter Artikel darüber, wie man diese Performance Anpassungen vornimmt:
Netdata hinter NGINX Proxy
Als Voraussetzung ist hier ein Laufender NGINX Reverse Proxy:
Als erstes editieren wir den web
Part von der netdata.conf
:
docker exec -it tools_netdata_1 /etc/netdata/edit-config netdata.conf
wir deaktivieren die GZIP Compression, da diese vom NGINX übernommen wird. Und wir erhöhen den IDLE Timeout.
[web] disconnect idle clients after seconds = 3600 enable gzip compression = no
dann starten wir den Container neu um die Änderungen zu aktivieren:
docker-compose restart netdata
Die NGINX Konfiguration sieht dann wie folgt aus:
/opt/nginxproxy/data/nginx/conf/yourdomain.tld.conf
server { listen 80; listen [::]:80; server_name yourdomain.tld; return 301 https://$host$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; server_name yourdomain.tld; ssl_certificate /etc/letsencrypt/live/yourdomain.tld/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.tld/privkey.pem; include /etc/nginx/conf.d/includes/site-defaults.conf; include /etc/nginx/conf.d/includes/cert_bot.conf; expires $expires; # BASIC AUTH vor den gesamten vhost auth_basic 'Restricted Area'; auth_basic_user_file /etc/nginx/conf.d/.htpasswd.pwd; location / { proxy_pass http://127.0.0.1:19999/; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 0; include /etc/nginx/conf.d/includes/proxy_cache.conf; } # security headers add_header X-Robots-Tag none; add_header Strict-Transport-Security "max-age=15768000;"; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header X-Download-Options noopen; add_header X-Frame-Options "sameorigin"; add_header X-Permitted-Cross-Domain-Policies none; add_header Referrer-Policy strict-origin; }
Netdata hat hierzu ebenfalls einen sehr guten Artikel:
Netdata Cloud Anbindung
Wer möchte kann seinen Agent auch an die Netdata Cloud anbinden. Dies hat zum einen den Vorteil, das man direkt bei Alarmen ohne Konfiguration E-Mail Alerts bekommt. Des Weiteren kann man so direkt alle Nodes in einem Dashboard überwachen. Probiert es einfach aus.
Updaten
Ein Update erfolgt entweder manuell via:
cd /opt/tools
docker-compose pull netdata
docker-compose restart netdata
oder man lässt Watchtower seinen Dienst machen.
Backup
Ein Backup kann entweder händisch oder aber Script gesteuert gemacht werden. Schaut einfach die folgenden Artikel durch: