Skip to content

tetafro/connectbox-exporter

Repository files navigation

ConnectBox Exporter

License Github CI Go Report Codecov

A Prometheus exporter for ConnectBox routers used by Ziggo internet provider in the Netherlands.

Client with full API: connectbox.

Mostly copied from compal_CH7465LG_py and connectbox-prometheus.

Run

Use docker

Create a config file config.yml (example).

docker run -d \
    --volume /host-dir/config.yml:/etc/prometheus/connectbox-exporter.yml \
    --publish 9119:9119 \
    --name connectbox-exporter \
    ghcr.io/tetafro/connectbox-exporter:latest

Download binary

Download and unpack latest release.

Create a config file config.yml (example).

Run

./connectbox-exporter -config config.yml

Build from sources

Clone the repository

git clone [email protected]:tetafro/connectbox-exporter.git
cd connectbox-exporter

Copy and populate config

cp config.example.yml config.yml

Build and run

make build run

Get metrics

Get exporter internal metrics

curl 'http://localhost:9119/metrics'

Get ConnectBox metrics

curl 'http://localhost:9119/probe?target=192.168.178.1'

Metrics

Name Type Description
connect_box_cm_docsis_mode gauge DocSis mode
connect_box_cm_hardware_version gauge Hardware version
connect_box_cm_mac_addr gauge MAC address
connect_box_cm_network_access gauge Network access
connect_box_cm_serial_number gauge Serial number
connect_box_cm_system_uptime gauge System uptime
connect_box_lan_client gauge LAN client
connect_box_oper_state gauge Operational state
connect_box_temperature gauge Temperature
connect_box_tunner_temperature gauge Tunner temperature
connect_box_wan_ipv4_addr gauge WAN IPv4 address
connect_box_wan_ipv6_addr gauge WAN IPv6 address

Prometheus config

Prometheus config with relabling to set the address of Connectbox instead of the address of the Prometheus instance on collected metrics

scrape_configs:
  - job_name: connectbox
    metrics_path: /probe
    static_configs:
      - targets: [connectbox.domain] # connectbox host or ip
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: "prometheus.domain:9119" # prometheus host or ip