跳转到主要内容

一个用于将Pi-Hole统计信息发送到InfluxDB的Python守护进程

项目描述

Pi-hole-Influx

Build Status Maintainability Coverage Status Code style: black

一个简单的守护进程脚本,将Pi-Hole统计信息报告给InfluxDB,并准备好通过Grafana显示。

注意:最近版本中的配置选项发生了根本性的变化。请阅读下面的当前状态。

Example Grafana Dashboard

设置(使用Docker)

  • 要使用Docker运行守护进程,请使用以下命令

    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
    
  • 对于在Raspberry Pi(arm v7架构)上运行,请使用专门的armv7镜像标签

    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
    

以下值是默认值,如果没有设置,则将使用这些值

  • 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包含要报告的Pi-hole实例。可以以类似字典的boxed语法给出多个实例,称为TOML中的内联表

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

请注意,实例以自定义名称为前缀。

Docker-compose示例

如果您想通过Docker-compose运行守护进程,您可能需要下面的配置示例。

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

设置(传统方式)

由于Pi-hole(正如其名所示)是专门为Raspberry Pi构建的(我也在那里运行它),以下步骤假定在Raspbian Strech Lite上有一个Pi-hole实例,并且到目前为止没有进行任何修改。Piholestatus将配置在同一个Pi上运行。

首先,使用apt安装必要的软件包,因为Raspbian Lite没有安装git或pip。

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

现在克隆仓库,安装Python依赖项,并确保复制并调整示例配置文件以匹配您的设置。

# 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

在首次启动守护进程之前,将systemd服务符号链接到正确位置,重新加载并启用服务。

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

现在您可以开始启动守护进程了。等待几秒钟以检查其状态。

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

状态应该如下所示。注意显示守护进程上次报告给InfluxDB的Status:行。

● 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

设置Grafana仪表板

上方的示例仪表板使用收集的数据,并以简洁和合理的方式显示在图表和单个统计中。您可以从存储库中包含的dashboard.json文件导入仪表板到您的Grafana实例,或者使用ID 6603Grafana仪表板目录导入。

版权声明

脚本最初由Jon Hayward创建,由/u/tollsjo于2016年12月修改以与InfluxDB兼容,并由@johnappletree改进和扩展。“如果我看得更远,那是因为我站在巨人的肩膀上”。🤓

项目详情


下载文件

下载适合您平台文件的版本。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源代码分发

pi-hole-influx-0.1.0a1.tar.gz (6.7 kB 查看哈希)

上传时间 源代码

构建分发

pi_hole_influx-0.1.0a1-py3-none-any.whl (6.9 kB 查看哈希)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面