summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorDate Huang <tjjh89017@hotmail.com>2026-07-16 19:46:02 +0800
committerDate Huang <tjjh89017@hotmail.com>2026-07-16 19:46:02 +0800
commiteb6ae2a8bc2906181a8b8130d9c225f7def7bfa8 (patch)
treecd10543a780ec6241c96a89cd60f5ef5381877e1 /data
parent80e1764619b2aa11df69d351a8f149e6784cce10 (diff)
downloadvyos-1x-eb6ae2a8bc2906181a8b8130d9c225f7def7bfa8.tar.gz
vyos-1x-eb6ae2a8bc2906181a8b8130d9c225f7def7bfa8.zip
T9073: frr-exporter: add CLI support for optional collectors and collector options
frr_exporter v1.5.0 enables the bgp, ospf, bfd and route collectors by default, while bgpl2vpn, pim and vrrp must be enabled explicitly. Expose bgpl2vpn (CLI: bgp-l2-vpn) and pim under "service monitoring prometheus frr-exporter collector", following the same CLI style as the node-exporter collectors node. The vrrp collector is not exposed since VyOS implements VRRP with keepalived and FRR's vrrpd is never started. Also expose the collector options available in v1.5.0: - collector bgp accept-filtered-prefixes - collector bgp advertised-prefixes - collector bgp peer-description <json|plain-text> - collector bgp peer-group - collector bgp peer-hostname - collector bgp peer-type - collector ospf-instance <id> - collector detailed-routes The bgp.* options are shared by the bgp, bgp6 and bgpl2vpn collectors upstream. The bgp6 collector remains unconditionally enabled, hence existing configurations render the same ExecStart and no migration is required. Includes code generated by Claude Code
Diffstat (limited to 'data')
-rw-r--r--data/templates/prometheus/frr_exporter.service.j236
1 files changed, 35 insertions, 1 deletions
diff --git a/data/templates/prometheus/frr_exporter.service.j2 b/data/templates/prometheus/frr_exporter.service.j2
index f80bad2cd..a2723ffd9 100644
--- a/data/templates/prometheus/frr_exporter.service.j2
+++ b/data/templates/prometheus/frr_exporter.service.j2
@@ -9,7 +9,41 @@ After=network.target
User=frr
{% endif %}
ExecStart={{ vrf_command }}/usr/sbin/frr_exporter \
- --collector.bgp6 \
+ --collector.bgp6 \
+{% if optional_collectors is vyos_defined %}
+{% for collector in optional_collectors %}
+ --collector.{{ collector }} \
+{% endfor %}
+{% endif %}
+{% if collector is vyos_defined %}
+{% if collector.bgp.accept_filtered_prefixes is vyos_defined %}
+ --collector.bgp.accepted-filtered-prefixes \
+{% endif %}
+{% if collector.bgp.advertised_prefixes is vyos_defined %}
+ --collector.bgp.advertised-prefixes \
+{% endif %}
+{% if collector.bgp.peer_description is vyos_defined %}
+ --collector.bgp.peer-descriptions \
+{% if collector.bgp.peer_description is vyos_defined('plain-text') %}
+ --collector.bgp.peer-descriptions.plain-text \
+{% endif %}
+{% endif %}
+{% if collector.bgp.peer_group is vyos_defined %}
+ --collector.bgp.peer-groups \
+{% endif %}
+{% if collector.bgp.peer_hostname is vyos_defined %}
+ --collector.bgp.peer-hostnames \
+{% endif %}
+{% if collector.bgp.peer_type is vyos_defined %}
+ --collector.bgp.peer-types \
+{% endif %}
+{% if collector.ospf_instance is vyos_defined %}
+ --collector.ospf.instances={{ collector.ospf_instance | join(',') }} \
+{% endif %}
+{% if collector.detailed_routes is vyos_defined %}
+ --collector.route.detailed-routes \
+{% endif %}
+{% endif %}
{% if listen_address is vyos_defined %}
{% for address in listen_address %}
--web.listen-address={{ address | bracketize_ipv6 }}:{{ port }}