A prometheus exporter for Livebox. This exporter was tested with a Livebox 5 and FTTH subscription.
This exporter currently exposes the following metrics:
Name | Type | Description | Labels | Experimental |
---|---|---|---|---|
livebox_interface_rx_mbits | gauge | Received Mbits per second | interface | No |
livebox_interface_tx_mbits | gauge | Transmitted Mbits per second | interface | No |
livebox_device_active | gauge | Status of the device | name, type, mac | No |
livebox_device_rx_mbits | gauge | Received Mbits per second by device | name, type, mac, source | No |
livebox_device_tx_mbits | gauge | Transmitted Mbits per second by device | name, type, mac, source | No |
livebox_deviceinfo_reboots_total | gauge | Number of Livebox reboots | No | |
livebox_deviceinfo_uptime_seconds_total | gauge | Livebox current uptime | No | |
livebox_deviceinfo_memory_total_bytes | gauge | Livebox system total memory | No | |
livebox_deviceinfo_memory_usage_bytes | gauge | Livebox system used memory | No | |
livebox_ont_temperature_celsius | gauge | Current ONT temperature | No | |
livebox_ont_downstream_current_rate_bytes | gauge | Current ONT downstream rate | No | |
livebox_ont_upstream_current_rate_bytes | gauge | Current ONT upstream rate | No | |
livebox_interface_homelan_rx_mbits | gauge | Received Mbits per second | interface | Yes |
livebox_interface_homelan_tx_mbits | gauge | Transmitted Mbits per second | interface | Yes |
livebox_interface_netdev_rx_mbits | gauge | Received Mbits per second | interface | Yes |
livebox_interface_netdev_tx_mbits | gauge | Transmitted Mbits per second | interface | Yes |
livebox_wan_rx_mbits | gauge | Received Mbits per second on the WAN interface | Yes | |
livebox_wan_tx_mbits | gauge | Transmitted Mbits per second on the WAN interface | Yes |
Experimental metrics are not enabled by default, use the -experimental
command-line option to enable them.
This section describes some known issues and how to solve them.
You should use one of the following experimental metrics if you want to monitor WAN interfaces:
livebox_interface_homelan_*
livebox_interface_netdev_*
livebox_wan_*
The following metrics are no longer accurate after a few days of Livebox uptime:
livebox_interface
: only forWAN_*
interfaceslivebox_device_*_mbits
: only for metrics withsource=events
labellivebox_interface_homelan_*
: only for WAN interfaceslivebox_interface_netdev_*
: only for WAN interfaceslivebox_wan_
If you really want to monitor these metrics, you need to setup a CronJob to reboot your Livebox on a regular basis.
You can find an example of Grafana dashboard here: https://grafana.com/grafana/dashboards/21577-livebox/
The exporter can sometimes answer slowly (due to livebox API being slow),
I highly recommend setting a scrape_timeout
of at least 15s:
- job_name: livebox-exporter
scrape_timeout: 15s
static_configs:
- targets: ["localhost:8080"]
The exporter accepts the following command-line options:
Name | Description | Default value |
---|---|---|
-polling-frequency | Polling frequency | 30 |
-listen | Listening address | :8080 |
-experimental | Comma separated list of experimental metrics to enable (available metrics: livebox_interface_homelan,livebox_interface_netdev,livebox_wan) |
The exporter reads the following environment variables:
Name | Description | Default value |
---|---|---|
ADMIN_PASSWORD | Password of the Livebox "admin" user. The exporter will exit if this environment variable is not defined. | |
LIVEBOX_ADDRESS | Address of the Livebox. | http://192.168.1.1 |
LIVEBOX_CACERT | Optional path to a PEM-encoded CA certificate file on the local disk. |
Use the following commands to run the exporter in Docker:
docker build -t livebox-exporter .
docker run -p 8080:8080 -e ADMIN_PASSWORD=<changeme> livebox-exporter
An already built Docker image is also available at: ghcr.io/tomy2e/livebox-exporter:latest
.
You can install the livebox-exporter in your Kubernetes cluster using Helm:
helm upgrade livebox-exporter oci://ghcr.io/tomy2e/livebox-exporter/charts/livebox-exporter \
--install \
--version 0.4.0 \
--set livebox.adminPassword.value=YOUR_LIVEBOX_ADMIN_PASSWORD