feat: add frr_exporter class #369
@ -2,6 +2,7 @@
|
|||||||
hiera_include:
|
hiera_include:
|
||||||
- profiles::selinux::setenforce
|
- profiles::selinux::setenforce
|
||||||
- frrouting
|
- frrouting
|
||||||
|
- exporters::frr_exporter
|
||||||
|
|
||||||
profiles::packages::include:
|
profiles::packages::include:
|
||||||
cobbler: {}
|
cobbler: {}
|
||||||
@ -35,6 +36,7 @@ networking::interfaces:
|
|||||||
mtu: 1500
|
mtu: 1500
|
||||||
|
|
||||||
# frrouting
|
# frrouting
|
||||||
|
exporters::frr_exporter::enable: true
|
||||||
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
||||||
frrouting::ospfd_redistribute:
|
frrouting::ospfd_redistribute:
|
||||||
- connected
|
- connected
|
||||||
@ -46,6 +48,12 @@ frrouting::ospfd_interfaces:
|
|||||||
frrouting::daemons:
|
frrouting::daemons:
|
||||||
ospfd: true
|
ospfd: true
|
||||||
|
|
||||||
|
# consul
|
||||||
|
profiles::consul::client::node_rules:
|
||||||
|
- resource: service
|
||||||
|
segment: frr_exporter
|
||||||
|
disposition: write
|
||||||
|
|
||||||
# additional repos
|
# additional repos
|
||||||
profiles::yum::global::repos:
|
profiles::yum::global::repos:
|
||||||
frr-extras:
|
frr-extras:
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
hiera_include:
|
hiera_include:
|
||||||
- frrouting
|
- frrouting
|
||||||
- profiles::dhcp::server
|
- profiles::dhcp::server
|
||||||
|
- exporters::frr_exporter
|
||||||
|
|
||||||
# networking
|
# networking
|
||||||
anycast_ip: 198.18.19.18
|
anycast_ip: 198.18.19.18
|
||||||
@ -19,6 +20,7 @@ networking::interfaces:
|
|||||||
mtu: 1500
|
mtu: 1500
|
||||||
|
|
||||||
# frrouting
|
# frrouting
|
||||||
|
exporters::frr_exporter::enable: true
|
||||||
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
||||||
frrouting::ospfd_redistribute:
|
frrouting::ospfd_redistribute:
|
||||||
- connected
|
- connected
|
||||||
@ -30,6 +32,12 @@ frrouting::ospfd_interfaces:
|
|||||||
frrouting::daemons:
|
frrouting::daemons:
|
||||||
ospfd: true
|
ospfd: true
|
||||||
|
|
||||||
|
# consul
|
||||||
|
profiles::consul::client::node_rules:
|
||||||
|
- resource: service
|
||||||
|
segment: frr_exporter
|
||||||
|
disposition: write
|
||||||
|
|
||||||
# additional repos
|
# additional repos
|
||||||
profiles::yum::global::repos:
|
profiles::yum::global::repos:
|
||||||
frr-extras:
|
frr-extras:
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
hiera_include:
|
hiera_include:
|
||||||
- frrouting
|
- frrouting
|
||||||
|
- exporters::frr_exporter
|
||||||
|
|
||||||
profiles::dns::master::ns_role: roles::infra::dns::master
|
profiles::dns::master::ns_role: roles::infra::dns::master
|
||||||
profiles::dns::master::use_ns: region
|
profiles::dns::master::use_ns: region
|
||||||
@ -178,6 +179,7 @@ networking::interfaces:
|
|||||||
mtu: 1500
|
mtu: 1500
|
||||||
|
|
||||||
# frrouting
|
# frrouting
|
||||||
|
exporters::frr_exporter::enable: true
|
||||||
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
||||||
frrouting::ospfd_redistribute:
|
frrouting::ospfd_redistribute:
|
||||||
- connected
|
- connected
|
||||||
@ -189,6 +191,12 @@ frrouting::ospfd_interfaces:
|
|||||||
frrouting::daemons:
|
frrouting::daemons:
|
||||||
ospfd: true
|
ospfd: true
|
||||||
|
|
||||||
|
# consul
|
||||||
|
profiles::consul::client::node_rules:
|
||||||
|
- resource: service
|
||||||
|
segment: frr_exporter
|
||||||
|
disposition: write
|
||||||
|
|
||||||
# additional repos
|
# additional repos
|
||||||
profiles::yum::global::repos:
|
profiles::yum::global::repos:
|
||||||
frr-extras:
|
frr-extras:
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
hiera_include:
|
hiera_include:
|
||||||
- frrouting
|
- frrouting
|
||||||
|
- exporters::frr_exporter
|
||||||
|
|
||||||
profiles::dns::resolver::acls:
|
profiles::dns::resolver::acls:
|
||||||
acl-main.unkin.net:
|
acl-main.unkin.net:
|
||||||
@ -228,6 +229,7 @@ networking::interfaces:
|
|||||||
mtu: 1500
|
mtu: 1500
|
||||||
|
|
||||||
# frrouting
|
# frrouting
|
||||||
|
exporters::frr_exporter::enable: true
|
||||||
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
||||||
frrouting::ospfd_redistribute:
|
frrouting::ospfd_redistribute:
|
||||||
- connected
|
- connected
|
||||||
@ -239,6 +241,12 @@ frrouting::ospfd_interfaces:
|
|||||||
frrouting::daemons:
|
frrouting::daemons:
|
||||||
ospfd: true
|
ospfd: true
|
||||||
|
|
||||||
|
# consul
|
||||||
|
profiles::consul::client::node_rules:
|
||||||
|
- resource: service
|
||||||
|
segment: frr_exporter
|
||||||
|
disposition: write
|
||||||
|
|
||||||
# additional repos
|
# additional repos
|
||||||
profiles::yum::global::repos:
|
profiles::yum::global::repos:
|
||||||
frr-extras:
|
frr-extras:
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
hiera_include:
|
hiera_include:
|
||||||
- frrouting
|
- frrouting
|
||||||
- profiles::haproxy::server
|
- profiles::haproxy::server
|
||||||
|
- exporters::frr_exporter
|
||||||
|
|
||||||
# networking
|
# networking
|
||||||
anycast_ip: 198.18.19.17
|
anycast_ip: 198.18.19.17
|
||||||
@ -19,6 +20,7 @@ networking::interfaces:
|
|||||||
mtu: 1500
|
mtu: 1500
|
||||||
|
|
||||||
# frrouting
|
# frrouting
|
||||||
|
exporters::frr_exporter::enable: true
|
||||||
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
||||||
frrouting::ospfd_redistribute:
|
frrouting::ospfd_redistribute:
|
||||||
- connected
|
- connected
|
||||||
@ -69,6 +71,9 @@ profiles::consul::client::node_rules:
|
|||||||
- resource: service
|
- resource: service
|
||||||
segment: haproxy-metrics
|
segment: haproxy-metrics
|
||||||
disposition: write
|
disposition: write
|
||||||
|
- resource: service
|
||||||
|
segment: frr_exporter
|
||||||
|
disposition: write
|
||||||
|
|
||||||
# haproxy
|
# haproxy
|
||||||
profiles::haproxy::peers::enable: true
|
profiles::haproxy::peers::enable: true
|
||||||
|
|||||||
@ -7,6 +7,7 @@ hiera_include:
|
|||||||
- profiles::ceph::node
|
- profiles::ceph::node
|
||||||
- profiles::ceph::client
|
- profiles::ceph::client
|
||||||
- profiles::storage::cephfsvols
|
- profiles::storage::cephfsvols
|
||||||
|
- exporters::frr_exporter
|
||||||
|
|
||||||
# FIXME: puppet-python wants to try manage python-dev, which is required by the ceph package
|
# FIXME: puppet-python wants to try manage python-dev, which is required by the ceph package
|
||||||
python::manage_dev_package: false
|
python::manage_dev_package: false
|
||||||
@ -75,6 +76,9 @@ profiles::consul::client::node_rules:
|
|||||||
- resource: service
|
- resource: service
|
||||||
segment: cephmgr
|
segment: cephmgr
|
||||||
disposition: write
|
disposition: write
|
||||||
|
- resource: service
|
||||||
|
segment: frr_exporter
|
||||||
|
disposition: write
|
||||||
|
|
||||||
# additional repos
|
# additional repos
|
||||||
profiles::yum::global::repos:
|
profiles::yum::global::repos:
|
||||||
@ -147,6 +151,7 @@ networking::interfaces:
|
|||||||
mtu: 1500
|
mtu: 1500
|
||||||
|
|
||||||
# frrouting
|
# frrouting
|
||||||
|
exporters::frr_exporter::enable: true
|
||||||
frrouting::ospfd_router_id: "%{hiera('networking_loopback0_ip')}"
|
frrouting::ospfd_router_id: "%{hiera('networking_loopback0_ip')}"
|
||||||
frrouting::ospfd_redistribute:
|
frrouting::ospfd_redistribute:
|
||||||
- connected
|
- connected
|
||||||
|
|||||||
@ -4,6 +4,7 @@ hiera_include:
|
|||||||
- frrouting
|
- frrouting
|
||||||
- profiles::ceph::node
|
- profiles::ceph::node
|
||||||
- profiles::ceph::client
|
- profiles::ceph::client
|
||||||
|
- exporters::frr_exporter
|
||||||
|
|
||||||
# FIXME: puppet-python wants to try manage python-dev, which is required by the ceph package
|
# FIXME: puppet-python wants to try manage python-dev, which is required by the ceph package
|
||||||
python::manage_dev_package: false
|
python::manage_dev_package: false
|
||||||
@ -90,7 +91,14 @@ networking::interfaces:
|
|||||||
netmask: 255.255.255.255
|
netmask: 255.255.255.255
|
||||||
mtu: 1500
|
mtu: 1500
|
||||||
|
|
||||||
|
# consul
|
||||||
|
profiles::consul::client::node_rules:
|
||||||
|
- resource: service
|
||||||
|
segment: frr_exporter
|
||||||
|
disposition: write
|
||||||
|
|
||||||
# frrouting
|
# frrouting
|
||||||
|
exporters::frr_exporter::enable: true
|
||||||
frrouting::ospfd_router_id: "%{hiera('networking_loopback0_ip')}"
|
frrouting::ospfd_router_id: "%{hiera('networking_loopback0_ip')}"
|
||||||
frrouting::ospfd_redistribute:
|
frrouting::ospfd_redistribute:
|
||||||
- connected
|
- connected
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
---
|
---
|
||||||
hiera_include:
|
hiera_include:
|
||||||
- frrouting
|
- frrouting
|
||||||
|
- exporters::frr_exporter
|
||||||
|
|
||||||
profiles::consul::server::members_lookup: true
|
profiles::consul::server::members_lookup: true
|
||||||
profiles::consul::server::data_dir: /data/consul
|
profiles::consul::server::data_dir: /data/consul
|
||||||
@ -38,6 +39,11 @@ profiles::nginx::simpleproxy::nginx_aliases:
|
|||||||
profiles::nginx::simpleproxy::proxy_port: 8500
|
profiles::nginx::simpleproxy::proxy_port: 8500
|
||||||
profiles::nginx::simpleproxy::proxy_path: '/'
|
profiles::nginx::simpleproxy::proxy_path: '/'
|
||||||
|
|
||||||
|
# consul
|
||||||
|
profiles::consul::client::node_rules:
|
||||||
|
- resource: service
|
||||||
|
segment: frr_exporter
|
||||||
|
disposition: write
|
||||||
profiles::consul::prepared_query::rules:
|
profiles::consul::prepared_query::rules:
|
||||||
vault:
|
vault:
|
||||||
ensure: 'present'
|
ensure: 'present'
|
||||||
@ -116,6 +122,7 @@ networking::interfaces:
|
|||||||
mtu: 1500
|
mtu: 1500
|
||||||
|
|
||||||
# frrouting
|
# frrouting
|
||||||
|
exporters::frr_exporter::enable: true
|
||||||
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
||||||
frrouting::ospfd_redistribute:
|
frrouting::ospfd_redistribute:
|
||||||
- connected
|
- connected
|
||||||
|
|||||||
68
modules/exporters/manifests/frr_exporter.pp
Normal file
68
modules/exporters/manifests/frr_exporter.pp
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
class exporters::frr_exporter (
|
||||||
|
Boolean $enable = false,
|
||||||
|
String $user = 'frr_exporter',
|
||||||
|
String $group = 'frr_exporter',
|
||||||
|
Boolean $manage_user = true,
|
||||||
|
Boolean $manage_service = true,
|
||||||
|
Stdlib::Port $port = 9342,
|
||||||
|
Stdlib::Absolutepath $exec_path = '/usr/bin/frr_exporter',
|
||||||
|
Stdlib::Absolutepath $socket_dir = '/var/run/frr',
|
||||||
|
){
|
||||||
|
|
||||||
|
if $enable {
|
||||||
|
|
||||||
|
# install required package
|
||||||
|
package {'frr_exporter':
|
||||||
|
ensure => installed,
|
||||||
|
}
|
||||||
|
|
||||||
|
# manage the user/group
|
||||||
|
if $manage_user {
|
||||||
|
group { $group:
|
||||||
|
ensure => present,
|
||||||
|
}
|
||||||
|
|
||||||
|
user { $user:
|
||||||
|
ensure => present,
|
||||||
|
shell => '/usr/sbin/nologin',
|
||||||
|
groups => [$group, 'frrvty'],
|
||||||
|
managehome => true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# manage the systemd service
|
||||||
|
if $manage_service {
|
||||||
|
|
||||||
|
# Use these in notifications or file resources
|
||||||
|
systemd::unit_file { 'frr_exporter.service':
|
||||||
|
content => template('exporters/frr_exporter.service.erb'),
|
||||||
|
enable => true,
|
||||||
|
active => true,
|
||||||
|
subscribe => Package['frr_exporter'],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# manage consul service
|
||||||
|
consul::service { 'frr_exporter':
|
||||||
|
service_name => 'frr_exporter',
|
||||||
|
address => $facts['networking']['ip'],
|
||||||
|
port => $port,
|
||||||
|
tags => [
|
||||||
|
'metrics',
|
||||||
|
'metrics_scheme=http',
|
||||||
|
'metrics_job=frr',
|
||||||
|
],
|
||||||
|
checks => [
|
||||||
|
{
|
||||||
|
id => 'frr_exporter_http_check',
|
||||||
|
name => 'frr_exporter HTTP Check',
|
||||||
|
http => "http://${facts['networking']['fqdn']}:${port}/metrics",
|
||||||
|
method => 'GET',
|
||||||
|
tls_skip_verify => true,
|
||||||
|
interval => '10s',
|
||||||
|
timeout => '1s',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
15
modules/exporters/templates/frr_exporter.service.erb
Normal file
15
modules/exporters/templates/frr_exporter.service.erb
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Prometheus frr_exporter
|
||||||
|
Wants=network-online.target
|
||||||
|
After=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=<%= @user %>
|
||||||
|
Group=<%= @group %>
|
||||||
|
ExecStart=<%= @exec_path %> --frr.socket.dir-path="<%= @socket_dir %>"
|
||||||
|
ExecReload=/bin/kill -HUP $MAINPID
|
||||||
|
KillMode=process
|
||||||
|
Restart=always
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
Loading…
Reference in New Issue
Block a user