Giter Club home page Giter Club logo

bird_exporter's People

Contributors

atopuzov avatar czerwonk avatar dependabot[bot] avatar grundrauschen avatar imlonghao avatar kralewitz avatar leoquote avatar micah avatar mindtooth avatar noevhlev avatar openbsod avatar oyiu-dw avatar prauscher avatar sgrade avatar stv0g avatar taktv6 avatar tim-seoss avatar unixsurfer avatar xartos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bird_exporter's Issues

Could you add tagged builds to docker hub?

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:

image

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!

Build RPM/DEB packets

Hi Team,

Do you have any plans to build RPM/DEB packets for further releases?
It will be useful for non containirized environments.

Unable to parse uptime with bird 2.14

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

wrong bgp6_session_prefix_count

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

Support for IPv4 and IPv6 channels

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

Better named/valued labels for export

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.

https://github.com/netdata/go.d.plugin/blob/a1c1fa72aba66e0f9dbf7ed9de239b849b47b474/modules/prometheus/charts.go#L33-L37

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.

Feature request: TLS support

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!

bfd sessions

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

New metric format for V. 1.0

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

RFC - design of more extensive babel protocol support

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...

  • What are your thoughts about only supporting bird v2+ vs. also including v1 support? I haven't looked v1 (I don't have a bird v1.x installation), but I suspect that because babel supports dual-stack operation, that there will be a few differences if bird 1 is also to be supported.
  • There isn't any overall summary information available via birdc for babel (i.e. no equivalent of 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 not working

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.

metrics

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

RPKI support

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.

panic: " type" is not a valid label name for metric "bird_protocol_up"

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"

Segmention fault

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

bird2 compatibility issues

Hi, recently I've moved to bird2 and got a couple problems with it.

  • Installing with apt was failing due to dependencies since bird2 is not accepted instead of bird. I had to install it manually.
  • I am trying to modify ARGS but not sure if doing it correctly? I am getting a blank page. From the syslog only thing I can see is /run/bird/bird6.ctl is not running error. I aware of it is not running and couldn't disable -bird.ipv6 option. What is the exact syntax? I've tried commenting out, -bird.ipv6=false, -bird.ipv6 false, none of them seems to work.

Thanks in advance.

Check if IPv6 BGP connection is established?

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

dial unix /var/run/bird.ctl

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?

state label in bird_protocol_up leads to unique time serie for each state

Overview

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.

How to replicate

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):

  • "Idle Socket: No route to host"
  • "Connect Socket: No route to host"
  • "Active Socket: No route to host"

All three exist in the TSDB in parallel.

Problems this approach creates

  • When the protocol state changes (e.g. flaps), bird_exporter reports only current state. So, at the moment of scraping it can be one state. A second after that the state is different, but we don't see it in Prometheus. Different combinations of the scraping intervals and protocol timers create different (weird) results in monitoring.
  • In a complex environment with thousands of peers (thus many labels per peer) an unstable (unpredictable) number of metrics per protocol is difficult to manage. Idempotence is difficult to achieve. Automation breaks.
  • It is difficult to understand, which BGP state is current. Prometheus returns all time series (in example above three time series) for the single bird protocol. It is the same with instant queries as the series with different states are considered unique
  • It is difficult to count peers, for which bird_protocol_up == 0. Instead of actual number of down peers count shows number of unique time series, which is not what we want to see. I still managed to do it using count(group by (state) {}), but IMHO this is more a workaround than a proper solution

Suggestion

  • Remove state label from bird_protocol_up metric
  • Return to a separate bgp_state metric as in #46, but make it optional (activated with a flag at startup). There are people who need it, so they will have it. Others, who do believe that Prometheus is only for numerical metrics, won't have it.

Who will do it

I can implement it myself if the agreement is made.

Feature Request: Labels from Protocol Description

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").

Manual page

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.

Update Prometheus Go library

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

feature request: memory metrics

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

OSPFv3 sessions wrongly reported as up

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

cannot load github.com/prometheus/common/log

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?

Zabbix Integration

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.

Feature Suggestion: Indicate disabled state of peering

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?

RPKI support issue when used with IPv4 and IPv6 ROAs

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:

  • 299609 ROAs for IPv4
  • 73686 ROAs for IPv6

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; };

...
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.