czerwonk / bird_exporter Goto Github PK
View Code? Open in Web Editor NEWBird protocol state exporter for bird routing daemon to use with https://prometheus.io/
License: MIT License
Bird protocol state exporter for bird routing daemon to use with https://prometheus.io/
License: MIT License
I see that the docker image at https://hub.docker.com/r/czerwonk/bird_exporter is using automated builds on docker hub, which is great.
For tracking versions of this project in our kubernetes cluster, it is nice to have more specific docker tags to reference. An easy way to get this is to just have docker hub build all tags, and then new github releases will get built to the appropriate tags automatically.
The config is rather easy to set up. Here's an example from a repo I have that does similar things:
I think if you just set it up to build tags with the regex /^v[0-9.]+$/
, it would just start working as new releases are pushed. That would be a really nice convenience going forward.
Thanks!
Hi Team,
Do you have any plans to build RPM/DEB packets for further releases?
It will be useful for non containirized environments.
Uptime is always 0, example output:
at_router03_4 BGP --- up 08:49:09.974 Established
Description: Uplink to at-router-03 (IPv4)
BGP state: Established
bird_protocol_uptime{export_filter="export_crosslink4",import_filter="import_crosslink4",ip_version="4",name="at_router03_4",proto="BGP"} 0
An interesting metric would be to see whether the OSPF session is running [1] (or alone[0]), to spot potential misconfigurations.
ospf_running
ospfv3_running
Line 66 in 301f514
Link format at grafana.com has changed.
New link is https://grafana.com/grafana/dashboards/5259-bird-rs/
The Exporter gives me:
bgp6_session_prefix_count_export{name="netlab"} 0
bgp6_session_prefix_count_filter{name="netlab"} 0
bgp6_session_prefix_count_import{name="netlab"} 1
but bird6 gives me:
netlab BGP main_rib up 1503219650 Established
Preference: 100
Input filter: internal_in
Output filter: internal_out
Routes: 11 imported, 9 exported, 11 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 31 0 0 1 30
Import withdraws: 19 0 --- 0 19
Export updates: 166 125 2 --- 39
Export withdraws: 50 --- --- --- 29
BGP state: Established
Hi thanks a lot for your awesome project.
Due to the change for passing arguments into the container a new image tag will be great
Line 12 in d6a31b7
common metrics are:
Since bird 2.0 supports IPv4 and IPv6 in the same bird instance they made a few slight changes to the output of birdc show protocol all
.
direct1 Direct --- up 1513027903
Channel ipv4
State: UP
Table: master4
Preference: 240
Input filter: ACCEPT
Output filter: REJECT
Routes: 3 imported, 0 exported
Route change stats: received rejected filtered ignored accepted
Import updates: 3 0 0 0 3
Import withdraws: 0 0 --- 0 0
Export updates: 0 0 0 --- 0
Export withdraws: 0 --- --- --- 0
Channel ipv6
State: UP
Table: master6
Preference: 240
Input filter: ACCEPT
Output filter: REJECT
Routes: 2 imported, 0 exported
Route change stats: received rejected filtered ignored accepted
Import updates: 2 0 0 0 2
Import withdraws: 0 0 --- 0 0
Export updates: 0 0 0 --- 0
Export withdraws: 0 --- --- --- 0
should result in metrics:
bird_protocol_prefix_import_count{name="direct1",proto="Direct",ip_version="4"} 3
bird_protocol_prefix_import_count{name="direct1",proto="Direct",ip_version="6"} 2
I have realized that netdata/go.d.plugin's prometheus importer uses the second last name from the label for identifying what value unit to use and the snippet linked below...isn't really great for some purposes like on bird_exporter as it makes the units be measured per second.
Is it possible to have a label configuration that has more specific units?
I'll also file an issue to the netdata/go.d.plugin repository about having an override.
Thanks for this exporter, its great.
I would like to scrape the exporter over the internet, for one of our out-of-band bird daemons. Even with proper firewalling, it still will result in the information traversing the internet in the clear.
It would be fantastic to add a tls option (with the corresponding cert/key options) to support an encrypted channel for the communication between prometheus and the exporter.
Thanks!
how can I see the metrics of bfd sessions? Interested in at least the status (up/down).
They are displayed by the command: birdc show bfd sesssions
Since protocols are handled in a common way by bird metrics can be build a lot more similar:
Example:
bird_protocol_up{name="my-awesome-peer",proto="bgp4", ip_version="4"} 1
bird_protocol_prefix_count_import{name="my-awesome-peer",proto="bgp4", ip_version="6"} 12345
This format should be optional to prevent a breaking change. The documentation will state this as the recommended format
Hello,
Thanks for merging the basic babel support!
I'd like to write a babel protocol parser/exporter (along the same lines as the OSPF functionality). I've got a basic proof of concept working, but I've got a few questions about how it should work...
birdc show ospf
), so I think one viable way of supporting babel may be to parse the output of birdc show babel entries
, and simply export the Prefix, Router ID, Sequence Number, Route, and Source counts (guages).Here's some sample output from an isolated bird2 instance (no babel neighbours active):
bird> show babel entries
clusternet:
Prefix Router ID Metric Seqno Routes Sources
0.0.0.0/0 00:00:00:00:ac:12:fe:64 0 1 0 0
169.254.0.0/16 00:00:00:00:ac:12:fe:64 0 1 0 0
fec0:aaaa::8888/128 00:00:00:00:ac:12:fe:64 0 1 0 0
bird> show babel interfaces
clusternet:
Interface State RX cost Nbrs Timer Next hop (v4) Next hop (v6)
brint Up 96 0 0.122 172.29.148.148 fe80::c491:7abf:a933:db5f
Any thoughts?
Uptime parsing doesn't seem to work very well. I'm getting all zeroes for _uptime
values.
You seem to call birdc show protocols all
, but I can only find a timestamp in there, no timestamp or anything usable.
upstream BGP t_bgp up 2017-02-20 Established
lg_export BGP t_bgp up 2017-04-05 Established
Using bird 1.6.3.
The regex-based functions find all occurrences of the pre-defined pattern in protocol description. Non-matching parts of the description are ignored. Details are in the pull request #61.
Hi,
I have an issue to report, but first of all, I want to express my gratitude for the project!
The issue I am facing is this:
if the exporter is unable to connect to bird's socket (say because bird is down), it looks like the exporter's metric URL still returns HTTP 200, with an empty payload (Content-Length: 0); conversely, when the socket is accessible all is well and Content-Length is > 0.
This behavior of the exporter makes it harder to spot, from the standpoint of Prometheus, that the underlying sessions for a given instance (for instance bird_protocol_up) have gone down. I wonder if it would be more appropriate for the exporter to return an HTTP error code (like 503 or a generic 500), when the socket is unavailable or alternatively export a bird_status_up metric.
What is the suggestion on how to handle cases where the underlying bird process is unavailable?
Thanks!
Armando
Hi,
thanks for creating bird_exporter!
We use bird2 and connect it to routinator3000 to retrieve ROA for BGP prefix filtering and would like to monitor the RTR session and the amount of ROA bird is seeing.
So if the RTR session is up, bird_exporter could output:
bird_protocol_up{name="routinator3k",proto="RPKI"} 1
just for reference an example output from birdcl for RPKI:
bird> s p a r3k
Name Proto Table State Since Info
r3k RPKI --- up 2020-11-20 Established
Cache server: 127.0.0.1:1323
Status: Established
Transport: Unprotected over TCP
Protocol version: 1
Session ID: 36904
Serial number: 88
Last update: before 757.095 s
Refresh timer : 142.904/900
Retry timer : ---
Expire timer : 6442.904/7200
Channel roa4
State: UP
Table: r4
Preference: 100
Input filter: ACCEPT
Output filter: REJECT
Routes: 172333 imported, 0 exported, 172333 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 172849 0 0 0 172849
Import withdraws: 516 0 --- 0 516
Export updates: 0 0 0 --- 0
Export withdraws: 0 --- --- --- 0
Channel roa6
State: UP
Table: r6
Preference: 100
Input filter: ACCEPT
Output filter: REJECT
Routes: 29388 imported, 0 exported, 29388 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 29830 0 0 0 29830
Import withdraws: 442 0 --- 0 442
Export updates: 0 0 0 --- 0
Export withdraws: 0 --- --- --- 0
It would be nice to have the counts for IPv4 (example above: 172333) and for IPv6 (29388) in bird_exporter metrics output.
Dec 01 01:35:17 moon.0l.de bird_exporter[1677217]: /home/runner/go/pkg/mod/github.com/prometheus/[email protected]/prometheus/registry.go:457 +0x5ce
Dec 01 01:35:17 moon.0l.de bird_exporter[1677217]: created by github.com/prometheus/client_golang/prometheus.(*Registry).Gather
Dec 01 01:35:17 moon.0l.de bird_exporter[1677217]: /home/runner/go/pkg/mod/github.com/prometheus/[email protected]/prometheus/registry.go:446 +0x12b
Dec 01 01:35:17 moon.0l.de bird_exporter[1677217]: github.com/prometheus/client_golang/prometheus.(*Registry).Gather.func1()
Dec 01 01:35:17 moon.0l.de bird_exporter[1677217]: /home/runner/work/bird_exporter/bird_exporter/metric_collector.go:94 +0x13d
Dec 01 01:35:17 moon.0l.de bird_exporter[1677217]: main.(*MetricCollector).Collect(0xc0000a2680, 0xc0000a4720)
Dec 01 01:35:17 moon.0l.de bird_exporter[1677217]: /home/runner/work/bird_exporter/bird_exporter/metrics/generic_exporter.go:72 +0x2a85
Dec 01 01:35:17 moon.0l.de bird_exporter[1677217]: github.com/czerwonk/bird_exporter/metrics.(*GenericProtocolMetricExporter).Export(0xc0000a2500, 0xc00017e140, 0xc0000a4720, 0xc000296201)
Dec 01 01:35:17 moon.0l.de bird_exporter[1677217]: /home/runner/go/pkg/mod/github.com/prometheus/[email protected]/prometheus/value.go:107
Dec 01 01:35:17 moon.0l.de bird_exporter[1677217]: github.com/prometheus/client_golang/prometheus.MustNewConstMetric(...)
Dec 01 01:35:17 moon.0l.de bird_exporter[1677217]: goroutine 8 [running]:
Dec 01 01:35:17 moon.0l.de bird_exporter[1677217]: panic: " type" is not a valid label name for metric "bird_protocol_up"
bird_exporter: 70add87
bird: 2.0.7
CLI args: /usr/local/bin/bird_exporter -format.new=true -bird.v2 -bird.socket=/var/run/bird/bird.ctl
May 10 19:59:00 edgy.0l.de bird_exporter[1988644]: time="2020-05-10T19:59:00+02:00" level=info msg="Starting bird exporter (Version: 1.2.5)\n" source="main.go:63"
May 10 19:59:00 edgy.0l.de bird_exporter[1988644]: time="2020-05-10T19:59:00+02:00" level=info msg="Listening for /metrics on :9324\n" source="main.go:82"
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: panic: runtime error: invalid memory address or nil pointer dereference
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x7d4918]
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: goroutine 10 [running]:
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: github.com/czerwonk/bird_exporter/parser.parseLineForDescription(0xc0001948c0)
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: /root/go/src/github.com/czerwonk/bird_exporter/parser/parser.go:114 +0xa8
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: github.com/czerwonk/bird_exporter/parser.ParseProtocols(0xc0002a0000, 0x1b86f, 0x1e000, 0x0, 0x0, 0x1b86f, 0x1e000, 0x0)
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: /root/go/src/github.com/czerwonk/bird_exporter/parser/parser.go:67 +0x200
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: github.com/czerwonk/bird_exporter/client.(*BirdClient).protocolsFromSocket(0xc0000100f8, 0x7ffee4cb1f33, 0x16, 0x0, 0x0, 0x0, 0xc0000a0e70, 0x444ffe, 0xc0000b4b90, 0xc>
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: /root/go/src/github.com/czerwonk/bird_exporter/client/bird_client.go:76 +0xc4
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: github.com/czerwonk/bird_exporter/client.(*BirdClient).protocolsFromBird(0xc0000100f8, 0xc0000b4b90, 0x1, 0x1, 0x1, 0xc0000b4b90, 0x0, 0x1, 0x0)
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: /root/go/src/github.com/czerwonk/bird_exporter/client/bird_client.go:59 +0xee
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: github.com/czerwonk/bird_exporter/client.(*BirdClient).GetProtocols(0xc0000100f8, 0x0, 0x0, 0x0, 0x0, 0x0)
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: /root/go/src/github.com/czerwonk/bird_exporter/client/bird_client.go:40 +0x9c
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: main.(*MetricCollector).Collect(0xc00000f4c0, 0xc0000c8900)
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: /root/go/src/github.com/czerwonk/bird_exporter/metric_collector.go:82 +0x36
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: github.com/czerwonk/bird_exporter/vendor/github.com/prometheus/client_golang/prometheus.(*Registry).Gather.func2(0xc000022670, 0xc0000c8900, 0x974620, 0xc00000f4c0)
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: /root/go/src/github.com/czerwonk/bird_exporter/vendor/github.com/prometheus/client_golang/prometheus/registry.go:433 +0x6b
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: created by github.com/czerwonk/bird_exporter/vendor/github.com/prometheus/client_golang/prometheus.(*Registry).Gather
May 10 19:59:02 edgy.0l.de bird_exporter[1988644]: /root/go/src/github.com/czerwonk/bird_exporter/vendor/github.com/prometheus/client_golang/prometheus/registry.go:431 +0x2e9
Hi, recently I've moved to bird2 and got a couple problems with it.
Thanks in advance.
minor remark:
The bird_protocol_uptime metrics show negative values.
I guess this is because the server does not use the UTC timezone.
hello guys
i have a local networks with bgp peers on different devices how can i monitor BGP state = establish with this bird_exporter?
is it possible ? i just want to monitor the bgp peer state.
Hi guys, can you please push all the images starting from 1.2.7 to 1.4.1 to docker hub? Thanks.
Hi,
thanks for the great software!
I run bird + bird6 on legacy centos 6 nodes with your exporter. On more recent distributions I use bird2 with your exporter. Both setups work great. In my Grafana dashboard I would like to plot a graph with all systems that have established an IPv6 connection (not session) via BGP to two peers. Is that currently possible? I wasn't able to find a suitable metric. Here is the sanitized output from bird_exporter on a node with bird + bird6 (system has one BGP session via an IPv4 connection and one session via an IPv6 connection):
# HELP bird_protocol_changes_update_export_accept_count Number of outgoing updates being accepted
# TYPE bird_protocol_changes_update_export_accept_count gauge
bird_protocol_changes_update_export_accept_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_update_export_accept_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_update_export_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 1
bird_protocol_changes_update_export_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 1
bird_protocol_changes_update_export_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 1
bird_protocol_changes_update_export_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 1
# HELP bird_protocol_changes_update_export_filter_count Number of outgoing updates being filtered
# TYPE bird_protocol_changes_update_export_filter_count gauge
bird_protocol_changes_update_export_filter_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_update_export_filter_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_update_export_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_export_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_export_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_export_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_export_ignore_count Number of outgoing updates being ignored
# TYPE bird_protocol_changes_update_export_ignore_count gauge
bird_protocol_changes_update_export_ignore_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_update_export_ignore_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_update_export_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_export_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_export_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_export_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_export_receive_count Number of sent updates
# TYPE bird_protocol_changes_update_export_receive_count gauge
bird_protocol_changes_update_export_receive_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 2
bird_protocol_changes_update_export_receive_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 2
bird_protocol_changes_update_export_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 1
bird_protocol_changes_update_export_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 1
bird_protocol_changes_update_export_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 1
bird_protocol_changes_update_export_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 1
# HELP bird_protocol_changes_update_export_reject_count Number of outgoing updates being rejected
# TYPE bird_protocol_changes_update_export_reject_count gauge
bird_protocol_changes_update_export_reject_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 2
bird_protocol_changes_update_export_reject_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 2
bird_protocol_changes_update_export_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_export_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_export_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_export_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_import_accept_count Number of incoming updates being accepted
# TYPE bird_protocol_changes_update_import_accept_count gauge
bird_protocol_changes_update_import_accept_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 2
bird_protocol_changes_update_import_accept_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 2
bird_protocol_changes_update_import_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_import_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_import_filter_count Number of incoming updates being filtered
# TYPE bird_protocol_changes_update_import_filter_count gauge
bird_protocol_changes_update_import_filter_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 4
bird_protocol_changes_update_import_filter_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 20
bird_protocol_changes_update_import_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_import_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_import_ignore_count Number of incoming updates being ignored
# TYPE bird_protocol_changes_update_import_ignore_count gauge
bird_protocol_changes_update_import_ignore_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 1
bird_protocol_changes_update_import_ignore_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 1
bird_protocol_changes_update_import_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_import_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_import_receive_count Number of received updates
# TYPE bird_protocol_changes_update_import_receive_count gauge
bird_protocol_changes_update_import_receive_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 7
bird_protocol_changes_update_import_receive_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 23
bird_protocol_changes_update_import_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_import_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_import_reject_count Number of incoming updates being rejected
# TYPE bird_protocol_changes_update_import_reject_count gauge
bird_protocol_changes_update_import_reject_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_update_import_reject_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_update_import_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_import_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_export_accept_count Number of outgoing withdraws being accepted
# TYPE bird_protocol_changes_withdraw_export_accept_count gauge
bird_protocol_changes_withdraw_export_accept_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_accept_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_export_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_export_filter_count Number of outgoing withdraws being filtered
# TYPE bird_protocol_changes_withdraw_export_filter_count gauge
bird_protocol_changes_withdraw_export_filter_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_filter_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_export_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_export_ignore_count Number of outgoing withdraws being ignored
# TYPE bird_protocol_changes_withdraw_export_ignore_count gauge
bird_protocol_changes_withdraw_export_ignore_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_ignore_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_export_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_export_receive_count Number of outgoing withdraws
# TYPE bird_protocol_changes_withdraw_export_receive_count gauge
bird_protocol_changes_withdraw_export_receive_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 1
bird_protocol_changes_withdraw_export_receive_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 1
bird_protocol_changes_withdraw_export_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_export_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_export_reject_count Number of outgoing withdraws being rejected
# TYPE bird_protocol_changes_withdraw_export_reject_count gauge
bird_protocol_changes_withdraw_export_reject_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_reject_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_export_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_import_accept_count Number of incoming withdraws being accepted
# TYPE bird_protocol_changes_withdraw_import_accept_count gauge
bird_protocol_changes_withdraw_import_accept_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 1
bird_protocol_changes_withdraw_import_accept_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 1
bird_protocol_changes_withdraw_import_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_import_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_import_filter_count Number of incoming withdraws being filtered
# TYPE bird_protocol_changes_withdraw_import_filter_count gauge
bird_protocol_changes_withdraw_import_filter_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_withdraw_import_filter_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_withdraw_import_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_import_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_import_ignore_count Number of incoming withdraws being ignored
# TYPE bird_protocol_changes_withdraw_import_ignore_count gauge
bird_protocol_changes_withdraw_import_ignore_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 4
bird_protocol_changes_withdraw_import_ignore_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 20
bird_protocol_changes_withdraw_import_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_import_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_import_receive_count Number of received withdraws
# TYPE bird_protocol_changes_withdraw_import_receive_count gauge
bird_protocol_changes_withdraw_import_receive_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 1
bird_protocol_changes_withdraw_import_receive_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 1
bird_protocol_changes_withdraw_import_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_import_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_import_reject_count Number of incoming withdraws being rejected
# TYPE bird_protocol_changes_withdraw_import_reject_count gauge
bird_protocol_changes_withdraw_import_reject_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_withdraw_import_reject_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_withdraw_import_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_import_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_prefix_export_count Number of exported routes
# TYPE bird_protocol_prefix_export_count gauge
bird_protocol_prefix_export_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_prefix_export_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_prefix_export_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 1
bird_protocol_prefix_export_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 1
bird_protocol_prefix_export_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 1
bird_protocol_prefix_export_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 1
# HELP bird_protocol_prefix_filter_count Number of filtered routes
# TYPE bird_protocol_prefix_filter_count gauge
bird_protocol_prefix_filter_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_prefix_filter_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_prefix_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_prefix_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_prefix_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_prefix_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_prefix_import_count Number of imported routes
# TYPE bird_protocol_prefix_import_count gauge
bird_protocol_prefix_import_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 1
bird_protocol_prefix_import_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 1
bird_protocol_prefix_import_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_prefix_import_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_prefix_import_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_prefix_import_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_prefix_preferred_count Number of preferred routes
# TYPE bird_protocol_prefix_preferred_count gauge
bird_protocol_prefix_preferred_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 1
bird_protocol_prefix_preferred_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 1
bird_protocol_prefix_preferred_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_prefix_preferred_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_prefix_preferred_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_prefix_preferred_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_up Protocol is up
# TYPE bird_protocol_up gauge
bird_protocol_up{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 1
bird_protocol_up{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 1
bird_protocol_up{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 1
bird_protocol_up{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 1
bird_protocol_up{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 1
bird_protocol_up{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 1
# HELP bird_protocol_uptime Uptime of the protocol in seconds
# TYPE bird_protocol_uptime gauge
bird_protocol_uptime{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 2.510305e+06
bird_protocol_uptime{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 2.510293e+06
bird_protocol_uptime{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} -3387
bird_protocol_uptime{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} -3857
bird_protocol_uptime{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} -4709
bird_protocol_uptime{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} -4766
And the second box, with bird2 (One session for IPv4 and one for IPv6, via an IPv4 connection):
# HELP bird_protocol_changes_update_export_accept_count Number of outgoing updates being accepted
# TYPE bird_protocol_changes_update_export_accept_count gauge
bird_protocol_changes_update_export_accept_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_update_export_accept_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_update_export_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 3
bird_protocol_changes_update_export_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 3
bird_protocol_changes_update_export_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 3
bird_protocol_changes_update_export_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 3
# HELP bird_protocol_changes_update_export_filter_count Number of outgoing updates being filtered
# TYPE bird_protocol_changes_update_export_filter_count gauge
bird_protocol_changes_update_export_filter_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_update_export_filter_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_update_export_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_export_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_export_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_export_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_export_ignore_count Number of outgoing updates being ignored
# TYPE bird_protocol_changes_update_export_ignore_count gauge
bird_protocol_changes_update_export_ignore_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_update_export_ignore_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_update_export_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_export_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_export_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_export_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_export_receive_count Number of sent updates
# TYPE bird_protocol_changes_update_export_receive_count gauge
bird_protocol_changes_update_export_receive_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 10
bird_protocol_changes_update_export_receive_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 10
bird_protocol_changes_update_export_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 3
bird_protocol_changes_update_export_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 3
bird_protocol_changes_update_export_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 3
bird_protocol_changes_update_export_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 3
# HELP bird_protocol_changes_update_export_reject_count Number of outgoing updates being rejected
# TYPE bird_protocol_changes_update_export_reject_count gauge
bird_protocol_changes_update_export_reject_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 10
bird_protocol_changes_update_export_reject_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 10
bird_protocol_changes_update_export_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_export_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_export_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_export_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_import_accept_count Number of incoming updates being accepted
# TYPE bird_protocol_changes_update_import_accept_count gauge
bird_protocol_changes_update_import_accept_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 10
bird_protocol_changes_update_import_accept_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 10
bird_protocol_changes_update_import_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_import_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_import_filter_count Number of incoming updates being filtered
# TYPE bird_protocol_changes_update_import_filter_count gauge
bird_protocol_changes_update_import_filter_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 6
bird_protocol_changes_update_import_filter_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 18
bird_protocol_changes_update_import_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_import_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_import_ignore_count Number of incoming updates being ignored
# TYPE bird_protocol_changes_update_import_ignore_count gauge
bird_protocol_changes_update_import_ignore_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 3
bird_protocol_changes_update_import_ignore_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 3
bird_protocol_changes_update_import_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_import_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_import_receive_count Number of received updates
# TYPE bird_protocol_changes_update_import_receive_count gauge
bird_protocol_changes_update_import_receive_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 19
bird_protocol_changes_update_import_receive_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 31
bird_protocol_changes_update_import_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_import_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_update_import_reject_count Number of incoming updates being rejected
# TYPE bird_protocol_changes_update_import_reject_count gauge
bird_protocol_changes_update_import_reject_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_update_import_reject_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_update_import_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_update_import_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_update_import_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_export_accept_count Number of outgoing withdraws being accepted
# TYPE bird_protocol_changes_withdraw_export_accept_count gauge
bird_protocol_changes_withdraw_export_accept_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 2
bird_protocol_changes_withdraw_export_accept_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 2
bird_protocol_changes_withdraw_export_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_export_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_export_filter_count Number of outgoing withdraws being filtered
# TYPE bird_protocol_changes_withdraw_export_filter_count gauge
bird_protocol_changes_withdraw_export_filter_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_filter_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_export_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_export_ignore_count Number of outgoing withdraws being ignored
# TYPE bird_protocol_changes_withdraw_export_ignore_count gauge
bird_protocol_changes_withdraw_export_ignore_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_ignore_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_export_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_export_receive_count Number of outgoing withdraws
# TYPE bird_protocol_changes_withdraw_export_receive_count gauge
bird_protocol_changes_withdraw_export_receive_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 9
bird_protocol_changes_withdraw_export_receive_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 9
bird_protocol_changes_withdraw_export_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_export_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_export_reject_count Number of outgoing withdraws being rejected
# TYPE bird_protocol_changes_withdraw_export_reject_count gauge
bird_protocol_changes_withdraw_export_reject_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_reject_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_withdraw_export_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_export_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_export_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_import_accept_count Number of incoming withdraws being accepted
# TYPE bird_protocol_changes_withdraw_import_accept_count gauge
bird_protocol_changes_withdraw_import_accept_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 7
bird_protocol_changes_withdraw_import_accept_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 7
bird_protocol_changes_withdraw_import_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_accept_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_import_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_accept_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_import_filter_count Number of incoming withdraws being filtered
# TYPE bird_protocol_changes_withdraw_import_filter_count gauge
bird_protocol_changes_withdraw_import_filter_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_withdraw_import_filter_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_withdraw_import_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_import_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_import_ignore_count Number of incoming withdraws being ignored
# TYPE bird_protocol_changes_withdraw_import_ignore_count gauge
bird_protocol_changes_withdraw_import_ignore_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 6
bird_protocol_changes_withdraw_import_ignore_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 18
bird_protocol_changes_withdraw_import_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_ignore_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_import_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_ignore_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_import_receive_count Number of received withdraws
# TYPE bird_protocol_changes_withdraw_import_receive_count gauge
bird_protocol_changes_withdraw_import_receive_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 7
bird_protocol_changes_withdraw_import_receive_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 7
bird_protocol_changes_withdraw_import_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_receive_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_import_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_receive_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_changes_withdraw_import_reject_count Number of incoming withdraws being rejected
# TYPE bird_protocol_changes_withdraw_import_reject_count gauge
bird_protocol_changes_withdraw_import_reject_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_changes_withdraw_import_reject_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_changes_withdraw_import_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_reject_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_changes_withdraw_import_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_changes_withdraw_import_reject_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_prefix_export_count Number of exported routes
# TYPE bird_protocol_prefix_export_count gauge
bird_protocol_prefix_export_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_prefix_export_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_prefix_export_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 3
bird_protocol_prefix_export_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 3
bird_protocol_prefix_export_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 3
bird_protocol_prefix_export_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 3
# HELP bird_protocol_prefix_filter_count Number of filtered routes
# TYPE bird_protocol_prefix_filter_count gauge
bird_protocol_prefix_filter_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 0
bird_protocol_prefix_filter_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 0
bird_protocol_prefix_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_prefix_filter_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_prefix_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_prefix_filter_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_prefix_import_count Number of imported routes
# TYPE bird_protocol_prefix_import_count gauge
bird_protocol_prefix_import_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 3
bird_protocol_prefix_import_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 3
bird_protocol_prefix_import_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_prefix_import_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_prefix_import_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_prefix_import_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_prefix_preferred_count Number of preferred routes
# TYPE bird_protocol_prefix_preferred_count gauge
bird_protocol_prefix_preferred_count{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 3
bird_protocol_prefix_preferred_count{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 3
bird_protocol_prefix_preferred_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 0
bird_protocol_prefix_preferred_count{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 0
bird_protocol_prefix_preferred_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 0
bird_protocol_prefix_preferred_count{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 0
# HELP bird_protocol_up Protocol is up
# TYPE bird_protocol_up gauge
bird_protocol_up{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 1
bird_protocol_up{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 1
bird_protocol_up{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 1
bird_protocol_up{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 1
bird_protocol_up{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 1
bird_protocol_up{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 1
# HELP bird_protocol_uptime Uptime of the protocol in seconds
# TYPE bird_protocol_uptime gauge
bird_protocol_uptime{export_filter="REJECT",import_filter="filter_v4",ip_version="4",name="kernel_ipv4",proto="Kernel"} 3.700709e+06
bird_protocol_uptime{export_filter="REJECT",import_filter="filter_v6",ip_version="6",name="kernel_ipv6",proto="Kernel"} 3.700709e+06
bird_protocol_uptime{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router1",proto="BGP"} 3969
bird_protocol_uptime{export_filter="filter_v4",import_filter="REJECT",ip_version="4",name="router2",proto="BGP"} 3503
bird_protocol_uptime{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router1",proto="BGP"} 3969
bird_protocol_uptime{export_filter="filter_v6",import_filter="REJECT",ip_version="6",name="router2",proto="BGP"} 3503
ERRO[0008] dial unix /var/run/bird.ctl: connect: no such file or directory
but i have bird.ctl in "/run/bird/bird.ctl"
How i can run exporter with /run/bird/bird.ctl path?
In Prometheus, every time series is UNIQuely identified by its metric name and set of LABELS (source). So, when a state (label) changes in bird_protocol_up metric, new time series is created in addition to the one with previous state. This ruins the metric: instead of one bird_protocol_up time series per BIRD protocol we see several in parallel. And when the state changes regularly (e.g. flap), we have gaps in the series.
If a BGP peer on other side becomes unavailable, BIRD tries to reconnect (goes through different states). In the example below, in Prometheus we see three different bird_protocol_up time series for one peer. They correspond to the BGP states (state labels):
All three exist in the TSDB in parallel.
I can implement it myself if the agreement is made.
Hi,
I'd like to see a feature that allows to get additional labels on protocol metrics.
e.g. description is "foo=bar,baz=aaa" I'd like to have the two labels foo=bar and baz=aaa on the metrics.
This would allow efficient silencing when doing maintenance by placing the remote devices name in a label (e.g. rdev="core01.pop01").
I noticed there is a man page in the Markdown format. Is there an utility that would convert it into standard man page format? If so, it would be nice to have it referenced somewhere in README.
Thanks.
Can you attach to release the precompiled binary?
Like that: "https://github.com/prometheus/node_exporter/releases/tag/v0.16.0"
Maybe just ".linux-amd64.tar.gz" for the firts time.
It will be very nice)
Hi.
It would be very nice, to have support for arm64 arch in multiarch docker image.
Right now, we have linux/amd64 and unknown/unknown:
https://github.com/czerwonk/bird_exporter/pkgs/container/bird_exporter/141281262?tag=1.4.3
Best regards
Piotr Rybicki
Routes: 15 imported, 1 exported, 11 preferred
Currently imported and exported are in the metrics, but preferred would also be handy
Description:
Dear Maintainers,
I hope this message finds you well. I'm reaching out regarding an update request for the Prometheus Go library in the bird_exporter repository.
Reason for Update:
The current version of the Prometheus Go library being used in the bird_exporter repository may be outdated or lacking certain features or optimizations available in newer versions. Upgrading to the latest version can potentially improve performance, enhance compatibility with other components, and ensure the utilization of the latest functionalities offered by the Prometheus ecosystem.
Proposed Actions:
Update to the Latest Version: We propose updating the Prometheus Go library to its latest stable release.
Compatibility Check: We will ensure that the updated library is compatible with the existing codebase and does not introduce any breaking changes.
Testing: Comprehensive testing will be conducted to validate the functionality and performance of the updated library within the bird_exporter project.
Benefits:
Performance Improvements: Leveraging the latest features and optimizations available in the updated Prometheus Go library can potentially enhance the overall performance of the bird_exporter project.
Compatibility: Ensuring compatibility with the latest versions of Prometheus and other related components can help maintain a seamless user experience and foster broader adoption of the bird_exporter tool.
Request:
We kindly request the maintainers to consider this update request and incorporate the latest version of the Prometheus Go library into the bird_exporter repository.
Thank you for your attention to this matter. We look forward to your feedback and collaboration on this update.
Warm regards,
Max
It would be nice to have birds memory metrics included in bird_exporter
bird> show memory
BIRD memory usage
Effective Overhead
Routing tables: 188.1 MB 2957.9 kB
Route attributes: 106.3 MB 16.0 MB
Protocols: 1462.8 kB 32.3 kB
Standby memory: 0.0 B 2024.0 kB
Total: 295.9 MB 20.9 MB
A disabled protocol is wrongly reported as up.
protocol ospf o_hrz {
disabled;
table t_hrz;
import all;
export none;
area 0 {
interface "eth0" {
hello 10;
};
};
};
# birdc6 s p | grep "^o_hrz"
o_hrz OSPF t_hrz down 1494926414
# curl -s localhost:9200/metrics | grep o_hrz
ospfv3_up{name="o_hrz"} 1
ospfv3_prefix_count_import{name="o_hrz"} 0
ospfv3_prefix_count_export{name="o_hrz"} 0
ospfv3_uptime{name="o_hrz"} 9090
Hi, we have activated the -format.description-labels flag and added descriptions to our connections.
It works very well but only for everything with ip_version="4" but not for IPv6.
Kindly Regards
I'm trying to install an exporter: go get -u github.com/czerwonk/bird_exporter
I get an error:
go get -u github.com/czerwonk/bird_exporter
go: finding golang.org/x/sys latest
go: finding github.com/czerwonk/bird_socket latest
build github.com/czerwonk/bird_exporter: cannot load github.com/prometheus/common/log: module
github.com/prometheus/common@latest found (v0.32.1), but does not contain package github.com/prometheus/common/log
How can I fix this bug?
I see the good code here ... You have done 95% code also for integration with zabbix.
Is it possible to print all the metrics from BGP on screen using some compact format like CSV?
I would like to use zabbix_sender (https://github.com/zarplata/zabbix-sender-php) then to send all the values to zabbix.
I have alert set up for bird_protocol_up
, however, I have a few intentionally disabled peerings.
As of right now, there is no way to filter these disabled peerings out by default.
I was going to suggest adding it to bird_protocol_up
, however, seeing the issue #63, I'm not so sure anymore.
Maybe a metric called bird_protocol_enabled
would be in the scope?
bird_exporter got RPKI support in #42, thanks for that!
birdcl s p all r3k
BIRD 2.0.7 ready.
Name Proto Table State Since Info
r3k RPKI --- up 2022-08-10 07:28:24 Established
Cache server: ...
Status: Established
Transport: Unprotected over TCP
Protocol version: 1
Session ID: 64843
Serial number: 687
Last update: before 466.296 s
Refresh timer : 433.703/900
Retry timer : ---
Expire timer : 6733.703/7200
Channel roa4
State: UP
Table: r4
Preference: 100
Input filter: ACCEPT
Output filter: REJECT
Routes: 299609 imported, 0 exported, 299609 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 640636 0 0 185644 454992
Import withdraws: 5711 0 --- 1583 155383
Export updates: 0 0 0 --- 0
Export withdraws: 0 --- --- --- 0
Channel roa6
State: UP
Table: r6
Preference: 100
Input filter: ACCEPT
Output filter: REJECT
Routes: 73686 imported, 0 exported, 73686 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 76912 0 0 808 76104
Import withdraws: 2648 0 --- 324 2418
Export updates: 0 0 0 --- 0
Export withdraws: 0 --- --- --- 0
The two primarily relevant values besides the status are:
but the exporter only covers the last section (channel roa6):
bird_protocol_changes_update_import_accept_count{export_filter="REJECT",import_filter="ACCEPT",ip_version="",name="r3k",proto="RPKI"} 76104
bird_protocol_changes_update_import_ignore_count{export_filter="REJECT",import_filter="ACCEPT",ip_version="",name="r3k",proto="RPKI"} 808
bird_protocol_changes_update_import_receive_count{export_filter="REJECT",import_filter="ACCEPT",ip_version="",name="r3k",proto="RPKI"} 76912
bird_protocol_changes_withdraw_import_accept_count{export_filter="REJECT",import_filter="ACCEPT",ip_version="",name="r3k",proto="RPKI"} 2418
bird_protocol_changes_withdraw_import_ignore_count{export_filter="REJECT",import_filter="ACCEPT",ip_version="",name="r3k",proto="RPKI"} 324
bird_protocol_changes_withdraw_import_receive_count{export_filter="REJECT",import_filter="ACCEPT",ip_version="",name="r3k",proto="RPKI"} 2648
bird_protocol_prefix_import_count{export_filter="REJECT",import_filter="ACCEPT",ip_version="",name="r3k",proto="RPKI"} 73686
bird_protocol_prefix_preferred_count{export_filter="REJECT",import_filter="ACCEPT",ip_version="",name="r3k",proto="RPKI"} 73686
bird_protocol_up{export_filter="REJECT",import_filter="ACCEPT",ip_version="",name="r3k",proto="RPKI",state="Established"} 1
bird_protocol_uptime{export_filter="REJECT",import_filter="ACCEPT",ip_version="",name="r3k",proto="RPKI"} 276447
The information regarding Channel roa4 is missing in the output of bird_exporter.
Since RPKI output is special it will probably need dedicated handling when parsing.
bird RPKI config:
roa4 table r4;
roa6 table r6;
protocol rpki r3k {
roa4 { table r4; };
roa6 { table r6; };
...
}
since changing to sockets the protocol is prefixed by 1002. This should be fixed in 0.8.1
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.