https://github.com/tomy2e/livebox-exporter
A prometheus exporter for Livebox
https://github.com/tomy2e/livebox-exporter
exporter go livebox monitoring prometheus
Last synced: about 1 year ago
JSON representation
A prometheus exporter for Livebox
- Host: GitHub
- URL: https://github.com/tomy2e/livebox-exporter
- Owner: Tomy2e
- License: mit
- Created: 2021-11-12T17:54:32.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-09-04T19:48:05.000Z (almost 2 years ago)
- Last Synced: 2025-03-29T08:04:47.103Z (about 1 year ago)
- Topics: exporter, go, livebox, monitoring, prometheus
- Language: Go
- Homepage:
- Size: 67.4 KB
- Stars: 10
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# livebox-exporter
A prometheus exporter for Livebox. This exporter was tested with a Livebox 5 and
FTTH subscription.
## Metrics
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.
### Limitations
This section describes some known issues and how to solve them.
#### `livebox_interface_*` capped to 1 Gb/s for WAN interfaces
You should use one of the following experimental metrics if you want to monitor WAN interfaces:
- `livebox_interface_homelan_*`
- `livebox_interface_netdev_*`
- `livebox_wan_*`
#### Some metrics are no longer accurate after a few days of Livebox uptime
The following metrics are no longer accurate after a few days of Livebox uptime:
- `livebox_interface`: only for `WAN_*` interfaces
- `livebox_device_*_mbits`: only for metrics with `source=events` label
- `livebox_interface_homelan_*`: only for WAN interfaces
- `livebox_interface_netdev_*`: only for WAN interfaces
- `livebox_wan_`
If you really want to monitor these metrics, you need to setup a CronJob to reboot your Livebox on a regular basis.
## Grafana
You can find an example of Grafana dashboard here:
## Prometheus configuration
The exporter can sometimes answer slowly (due to livebox API being slow),
I highly recommend setting a `scrape_timeout` of at least 15s:
```yaml
- job_name: livebox-exporter
scrape_timeout: 15s
static_configs:
- targets: ["localhost:8080"]
```
## Usage
### Options
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. | |
### Docker
Use the following commands to run the exporter in Docker:
```console
docker build -t livebox-exporter .
docker run -p 8080:8080 -e ADMIN_PASSWORD= livebox-exporter
```
An already built Docker image is also available at: `ghcr.io/tomy2e/livebox-exporter:latest`.
### Helm
You can install the livebox-exporter in your Kubernetes cluster using Helm:
```console
helm upgrade livebox-exporter oci://ghcr.io/tomy2e/livebox-exporter/charts/livebox-exporter \
--install \
--version 0.6.0 \
--set livebox.adminPassword.value=YOUR_LIVEBOX_ADMIN_PASSWORD
```