Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Pi-hole-Influx

Build Status Maintainability Coverage Status Code style: black

A simple daemonized script to report Pi-Hole stats to an InfluxDB, ready to be displayed via Grafana.

Heads-up: the configuration options changed fundamentally in recent versions. Please read up on the current state below.

Example Grafana Dashboard

Setup (Using Docker)

  • To use docker for running the daemon, use the following command:

    docker run \
      -e PIHOLE_INFLUXDB_HOST="myhostname" \
      -e PIHOLE_INFLUXDB_PORT="8086" \
      -e PIHOLE_INFLUXDB_USERNAME="myusername" \
      -e PIHOLE_INFLUXDB_PASSWORD="mysupersecretpassword" \
      -e PIHOLE_INFLUXDB_DATABASE="pihole" \
      -e PIHOLE_INSTANCES="localhost=http://127.0.0.1/admin/api.php" \
      registry.gitlab.com/janw/pi-hole-influx
    
  • For running it on a Raspberry Pi (arm v7 arch), use the dedicated armv7 image tag:

    docker run \
      -e PIHOLE_INFLUXDB_HOST="myhostname" \
      -e PIHOLE_INFLUXDB_USERNAME="myusername" \
      -e PIHOLE_INFLUXDB_PASSWORD="mysupersecretpassword" \
      --network host \
      registry.gitlab.com/janw/pi-hole-influx:armv7
    

The following values are the defaults and will be used if not set:

  • PIHOLE_INFLUXDB_PORT="8086"
  • PIHOLE_INFLUXDB_HOST="127.0.0.1"
  • PIHOLE_INFLUXDB_DATABASE="pihole"
  • PIHOLE_INSTANCES="localhost=http://127.0.0.1/admin/api.php"

PIHOLE_INSTANCES contains the Pi-hole instances that are to be reported. Multiple instances can given in a dict-like boxed syntax, known as Inline Tables in TOML:

PIHOLE_INSTANCES="{first_one="http://127.0.0.1/admin/api.php",second_pihole="http://192.168.42.79/admin/api.php"[,…]}"

Note that instances are prefixed by a custom name.

Docker-compose example

If you want to run the daemon through Docker-compose, you might appreciate the configuration example below.

version: "2"
services:
  piholeinflux:
    image: registry.gitlab.com/janw/pi-hole-influx
    container_name: piholeinflux
    restart: unless-stopped
    environment:

      # Replace details with your InfluxDB's hostname and credentials
      PIHOLE_INFLUXDB_HOST: "10.10.10.1"
      PIHOLE_INFLUXDB_PORT: "8086"
      PIHOLE_INFLUXDB_USERNAME: "pihole"
      PIHOLE_INFLUXDB_PASSWORD: "pihole"
      PIHOLE_INFLUXDB_DATABASE: "pihole"

      # Replace with your Pi-Hole's address including path to API below
      PIHOLE_INSTANCES: "pihole=http://10.10.0.10/admin/api.php"

    # OPTIONAL: Instead of the aobove environment variables,
    #           use a custom copy of the user.toml config file.
    volumes:
      - ./custom/config.toml:/user.toml

Setup (Traditional Way)

As Pi-hole (as the name suggests) is built specifically with the Raspberry Pi in mind (and I run it on there as well), the following steps assume an instance of Pi-hole on Raspbian Strech Lite, with no additional modifications so far. Piholestatus will be configured to run on the same Pi.

First install the necessary packages via apt as Raspbian Lite does have neither git nor pip installed.

sudo apt update
sudo apt install git python3-pip -y

Now clone the repo, install the Python dependencies, and make sure to copy and adjust the example configuation file to match your setup.

# Install package via pip
pip3 install pi-hole-influx

# Download config.example and modify it (should be self-explanatory)
wget -O user.toml https://raw.githubusercontent.com/janw/pi-hole-influx/master/user.toml.example
vi user.toml

Before starting the daemon for the first time, symlink the systemd service into place, reload, and enable the service.

sudo ln -s /home/pi/pi-hole-influx/piholeinflux.service /etc/systemd/system/
sudo systemctl --system daemon-reload
sudo systemctl enable piholeinflux.service

Now you're ready to start the daemon. Wait a few seconds to check its status.

sudo systemctl start piholeinflux.service
sudo systemctl status piholeinflux.service

The status should look as follows. Note the Status: line showing the last time, the daemon reported to InfluxDB:

● piholeinflux.service - Pi-hole-Influx - Send Pi-hole statistics to InfluxDB for visualization
   Loaded: loaded (/home/pi/pi-hole-influx/piholeinflux.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-06-22 19:03:56 UTC; 10min ago
     Docs: https://github.com/janw/pi-hole-influx
 Main PID: 21329 (python)
   Status: "Reported to InfluxDB at 2018-06-22 19:14:09 +0000"
   CGroup: /system.slice/piholeinflux.service
           └─21329 /usr/bin/python /home/pi/pi-hole-influx/piholeinflux.py

Set up a Grafana Dashboard

The example dashboard seen at the top uses the collected data and displays it in concise and sensible graphs and single stats. The dashboard can be imported into your Grafana instance from the dashboard.json file included in the repo, or by using ID 6603 to import it from Grafana's Dashboard Directory.

Attributions

The script originally created by Jon Hayward, adapted to work with InfluxDB by /u/tollsjo in December 2016, and improved and extended by @johnappletree. "If I have seen further it is by standing on the shoulders of giants". 🤓

Metadata

Release files for pi-hole-influx 0.1.0a1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pi-hole-influx 0.1.0a1
File Size Uploaded Provenance
pi-hole-influx-0.1.0a1.tar.gz 6.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pi-hole-influx 0.1.0a1
File Interpreter ABI Platform
pi_hole_influx-0.1.0a1-py3-none-any.whl Python 3 none any Details

Total release size: 13.5 kB

Release files / pi-hole-influx-0.1.0a1.tar.gz

Download URL pi-hole-influx-0.1.0a1.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
f8e7a687833ed82b8d49dab292c94777a09ab3209dd1ce3902a432c3e2b9ccff
BLAKE2b-256 checksum
How to use checksums
23ae29543140e0b9962dc816b74ed8f274bacfd690e04edeee257a574bfecfc4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.0.3 CPython/3.8.0 Darwin/19.5.0

Release files / pi_hole_influx-0.1.0a1-py3-none-any.whl

Download URL pi_hole_influx-0.1.0a1-py3-none-any.whl
Size 6.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0428dc9f5bee16ab4a74a2e2e52282e0c594a6014a029777c09e0bcd4a11ae08
BLAKE2b-256 checksum
How to use checksums
678204a51c565953d8ee70959354beb31b71122d647531e52f172a42d94a05b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.0.3 CPython/3.8.0 Darwin/19.5.0

Security for pi-hole-influx 0.1.0a1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page