I’m posting this tutorial because the information is not easy to find. This is a NetData setup with lighttpd, the recommended web server for Pihole, which I also run on same DietPi. I included instructions for Nginx, in case you prefer it. You can access your NetData stats locally at http://yourservername.lan/stats/, in my example I will use http://chaos.lan/stats/. I prefer using /stats
because there are issues with subdomains in Pihole. If you have a fix for subdomains in Pihole (e.g. http://stats.chaos.lan), feel free to share it with the community here.
Main page:
The setup enables also the stats for temp sensors, so you can set alarms based on your needs:
Instructions
http://chaos.lan should be functional, prior implementing the changes:
Install netdata
software in DietPi. Run all commands listed below as root
user, you can copy/paste each block in terminal.
If your Pi is old and the CPU usage is too high, change update every
value to 5 or whatever setting you like.
cat >> /etc/netdata/netdata.conf << 'EOF'
{TAB}update every = 1
[logs]
{TAB}access log = none
{TAB}debug log = none
{TAB}error log = none
EOF
sed -i "s|{TAB}|\t|g" /etc/netdata/netdata.conf
echo 'sensors=force' >> /etc/netdata/charts.d.conf
cat > /etc/netdata/charts.d/sensors.conf << 'EOF'
# the directory the kernel keeps sensor data
sensors_sys_dir="${NETDATA_HOST_PREFIX}/sys/devices"
# how deep in the tree to check for sensor data
sensors_sys_depth=10
# if set to 1, the script will overwrite internal
# script functions with code generated ones
# leave to 1, is faster
sensors_source_update=1
# how frequently to collect sensor data
# the default is to collect it at every iteration of charts.d
sensors_update_every=
# array of sensors which are excluded
# the default is to include all
sensors_excluded=()
EOF
Enable and restart the service:
systemctl enable netdata.service
systemctl restart netdata.service
lighttpd
Configure /stats
proxy directory in lighttpd:
cat >> /etc/lighttpd/conf-available/10-proxy.conf << 'EOF'
$HTTP["url"] =~ "^/stats/" {
proxy.server = ( "" => ( "netdata" => ( "host" => "127.0.0.1", "port" => 19999 ) ) )
proxy.header = ( "map-urlpath" => ( "/stats/" => "/" ) )
}
EOF
lighttpd-enable-mod proxy
Restart the service:
systemctl restart lighttpd.service
nginx
The config files are based on my custom nginx configuration setup, feel free to adjust the file locations and server_name
to your needs. Configure /stats
proxy directory in nginx:
cat > /etc/nginx/conf.d/proxy.inc << 'EOF'
proxy_buffering off;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Connection $http_connection;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
EOF
cat > /etc/nginx/conf.d/chaos.lan.conf << 'EOF'
upstream netdata {
server 127.0.0.1:19999;
keepalive 64;
}
server {
listen 80;
listen [::]:80;
server_name chaos.lan;
index index.html;
root /usr/share/nginx/html;
location / {
try_files $uri $uri/ =404;
}
location ~ /stats/(?<ndpath>.*) {
proxy_pass http://netdata/$ndpath$is_args$args;
include /etc/nginx/conf.d/proxy.inc;
}
}
EOF
Restart the service:
systemctl restart nginx.service
Access the console to http://chaos.lan/stats/.