Extract data from configuration file /etc/config/dhcp and create labels
{name, ip, mac, dns} via uci. Those labels are useful in order to craft
complex prometheus queries as replacing the MAC address to a custom
name. E.g.: wifi_station_signal_dbm * on (mac) group_left(name)
uci_dhcp_host or on (mac) label_replace(wifi_station_signal_dbm, "name",
"$1", "mac", "(.+)")
Signed-off-by: Gérondal Thibault <contact@tycale.be>
DAWN is a decentralized WiFi Controller.
https://github.com/berlin-open-wireless-lab/DAWN
The node exporter allows to gather statistics about your network:
- Infos about AP (Channel Utilization, Station Count, ...)
- Connected Clients (Signal, Capabilities)
Signed-off-by: Nick Hainke <vincent@systemli.org>
The official node_exporter reports node_time_seconds as a gauge, but
prometheus-node-exporter-lua reports it as a counter. To be consistent
with the official implementation, and because "gauge" is more correct
than "counter" for this metric (system time can decrease, but the
Prometheus documentation states, "A counter is a cumulative metric that
represents a single monotonically increasing counter whose value can
only increase or be reset to zero on restart."), change the type for
node_time_seconds to "gauge".
Signed-off-by: Forest Crossman <cyrozap@gmail.com>
This exporter exposes information of the connected stations acquired
from hostapd. These contain additional information compared to the
existing station exporter, however they require a full build of hostapd
/ wpad.
Signed-off-by: David Bauer <mail@david-bauer.net>
This happens during compilation:
Enabling network
./etc/init.d/prometheus-node-exporter-lua: line 7: /lib/functions/network.sh: No such file or directory
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Prometheus introduced some new conventions on how to name metrics.
Read here https://prometheus.io/docs/practices/naming/
This PR breaks compatibility with past versions, just like the officials
node exporter! 💥
Signed-off-by: Paul Spooren <mail@aparcar.org>
Some releases may have non letters in it's name currently resulting in
an empty ("") output which is then discarded, resulting in *missing*
labels in the metric.
Now it uses `.-` to catch as little as possible, but anything.
Signed-off-by: Paul Spooren <mail@aparcar.org>
adds openwrt specific information about the device.
include DISTRIB_{ID, RELEASE, REVISION}, board_name and model
Example output:
# TYPE node_openwrt_info gauge
node_openwrt_info{revision="55a0636",model="QEMU Standard PC (i440FX + PIIX, 1996)",id="LiMe",board_name="qemu-standard-pc-i440fx-piix-1996",release="snapshot"} 1
node_scrape_collector_duration_seconds{collector="openwrt"} 3.814697265625e-05
node_scrape_collector_success{collector="openwrt"} 1
Signed-off-by: Paul Spooren <spooren@informatik.uni-leipzig.de>
Print all files from /var/prometheus/*.prom. This behaviour allow users
to add metrics with non-lua scripts.
Signed-off-by: Paul Spooren <spooren@informatik.uni-leipzig.de>
Now monitors as well the tunIn parameters, aka the annoucend routes to
the network. This is handy to check if a node annouces itself as a
gateway.
Also list all activated plugins.
Example output:
# TYPE bmx7_tunIn gauge
bmx7_tunIn{name="myIP4",network="10.198.52.86/32"} 1
bmx7_tunIn{name="myIP6",network="2012:0:0:56::/128"} 1
bmx7_tunIn{name="inet4",network="0.0.0.0/0"} 1
# TYPE bmx7_plugin gauge
bmx7_plugin{name="bmx7_config.so"} 1
bmx7_plugin{name="bmx7_json.so"} 1
bmx7_plugin{name="bmx7_sms.so"} 1
bmx7_plugin{name="bmx7_tun.so"} 1
Signed-off-by: Paul Spooren <spooren@informatik.uni-leipzig.de>
scrapes bmx6 status and connected links.
example output:
bmx6_status{id="qMp-LibreMesh-1706",version="BMX6-0.1-alpha",address="fd66:66:66:a:6670:2ff:fe3e:9d28"} 1
bmx6_link_rxRate{target="UPC-CN-C6-E104-Alix",source="qMp-LibreMesh-1706",dev="wlan0-mesh_12"} 100
bmx6_link_txRate{target="UPC-CN-C6-E104-Alix",source="qMp-LibreMesh-1706",dev="wlan0-mesh_12"} 100
bmx6_link_rxRate{target="UPC-CN-C6-E104-Alix-Paul",source="qMp-LibreMesh-1706",dev="wlan1-adhoc_12"} 100
bmx6_link_txRate{target="UPC-CN-C6-E104-Alix-Paul",source="qMp-LibreMesh-1706",dev="wlan1-adhoc_12"} 100
bmx6_link_rxRate{target="UPC-CN-C6-E104-Turoffner",source="qMp-LibreMesh-1706",dev="wlan0-mesh_12"} 97
bmx6_link_txRate{target="UPC-CN-C6-E104-Turoffner",source="qMp-LibreMesh-1706",dev="wlan0-mesh_12"} 100
node_scrape_collector_duration_seconds{collector="bmx6"} 0.0025260448455811
node_scrape_collector_success{collector="bmx6"} 1
scrapes bmx7 status and connected links.
example output:
bmx7_status{id="C68791D2",revision="3a52f89",name="smpl-18f4ce",address="fd70:c687:91d2:8ab3:1a88:6b14:bad0:2b18"} 1
bmx7_cpu_usage 0.7
bmx7_mem_usage 3204000
bmx7_link_rxRate{target="F48239CD",dev="wlan0-mesh_13",source="C68791D2",name="smpl-07889a"} 54000
bmx7_link_txRate{target="F48239CD",dev="wlan0-mesh_13",source="C68791D2",name="smpl-07889a"} 52729
node_scrape_collector_duration_seconds{collector="bmx7"} 0.0020999908447266
node_scrape_collector_success{collector="bmx7"} 1
prometheus-node-exporter-lua: bmx6/7 netjson format
adds labels called source and target to links instead of only the target
previously called "id".
Retrieving all *links* from prometheus now makes it easier to create
a valid netjson(.org) graph.
It's not feasible to use *instance* as *source* as for instance likely
the name is used for dns, instead of the ID. Using the *name* instead of
*id* for netjson linking results in a bad graph when two devices have
the same (default) hostname.
Signed-off-by: Paul Spooren <spooren@informatik.uni-leipzig.de>
nat_traffic is too verbose to be really useful by default
netstat is broken by default on OpenWrt/LEDE
Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com>
this allow to remove libubus-lua/libiwinfo-lua dependency from main package
this also allow to have different scrape_interval
Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com>
split stations
Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com>
As prometheus-node-exporter-lua is a reimplementation of node_exporter,
I'm using "collector" instead of "scraper" and renaming some collectors
put each collector in a separate file
report collector success/failure and duration per scrape
(follow https://github.com/prometheus/node_exporter/pull/516)
allow to filter collectors using "collect[]" params
(see https://github.com/prometheus/node_exporter#filtering-enabled-collectors)
Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com>
On my bullet m2, scrape duration goes from between 0.2 and 0.5 to a stable 0.025
We also don't depend on luci anymore
This remove wifi_network_up metric, but this metric was buggy
wifi_network_up{ifname="wlan0-1",ssid="test1",channel="11",mode="Master",bssid="12:34:56:78:9A:BC",country="FR",frequency="2.462"} 1
wifi_network_up{ifname="radio0.network2",ssid="test1",channel="11",mode="Master",country="US",frequency="2.462"} 0
Signed-off-by: Etienne Champetier <champetier.etienne@gmail.com>