feat: add frr_exporter class
All checks were successful
Build / precommit (pull_request) Successful in 4m56s
All checks were successful
Build / precommit (pull_request) Successful in 4m56s
- add frr exporter to all nodes running frr
This commit is contained in:
parent
53fabc923b
commit
9deeacce22
@ -2,6 +2,7 @@
|
||||
hiera_include:
|
||||
- profiles::selinux::setenforce
|
||||
- frrouting
|
||||
- exporters::frr_exporter
|
||||
|
||||
profiles::packages::include:
|
||||
cobbler: {}
|
||||
@ -35,6 +36,7 @@ networking::interfaces:
|
||||
mtu: 1500
|
||||
|
||||
# frrouting
|
||||
exporters::frr_exporter::enable: true
|
||||
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
||||
frrouting::ospfd_redistribute:
|
||||
- connected
|
||||
@ -46,6 +48,12 @@ frrouting::ospfd_interfaces:
|
||||
frrouting::daemons:
|
||||
ospfd: true
|
||||
|
||||
# consul
|
||||
profiles::consul::client::node_rules:
|
||||
- resource: service
|
||||
segment: frr_exporter
|
||||
disposition: write
|
||||
|
||||
# additional repos
|
||||
profiles::yum::global::repos:
|
||||
frr-extras:
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
hiera_include:
|
||||
- frrouting
|
||||
- profiles::dhcp::server
|
||||
- exporters::frr_exporter
|
||||
|
||||
# networking
|
||||
anycast_ip: 198.18.19.18
|
||||
@ -19,6 +20,7 @@ networking::interfaces:
|
||||
mtu: 1500
|
||||
|
||||
# frrouting
|
||||
exporters::frr_exporter::enable: true
|
||||
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
||||
frrouting::ospfd_redistribute:
|
||||
- connected
|
||||
@ -30,6 +32,12 @@ frrouting::ospfd_interfaces:
|
||||
frrouting::daemons:
|
||||
ospfd: true
|
||||
|
||||
# consul
|
||||
profiles::consul::client::node_rules:
|
||||
- resource: service
|
||||
segment: frr_exporter
|
||||
disposition: write
|
||||
|
||||
# additional repos
|
||||
profiles::yum::global::repos:
|
||||
frr-extras:
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
---
|
||||
hiera_include:
|
||||
- frrouting
|
||||
- exporters::frr_exporter
|
||||
|
||||
profiles::dns::master::ns_role: roles::infra::dns::master
|
||||
profiles::dns::master::use_ns: region
|
||||
@ -178,6 +179,7 @@ networking::interfaces:
|
||||
mtu: 1500
|
||||
|
||||
# frrouting
|
||||
exporters::frr_exporter::enable: true
|
||||
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
||||
frrouting::ospfd_redistribute:
|
||||
- connected
|
||||
@ -189,6 +191,12 @@ frrouting::ospfd_interfaces:
|
||||
frrouting::daemons:
|
||||
ospfd: true
|
||||
|
||||
# consul
|
||||
profiles::consul::client::node_rules:
|
||||
- resource: service
|
||||
segment: frr_exporter
|
||||
disposition: write
|
||||
|
||||
# additional repos
|
||||
profiles::yum::global::repos:
|
||||
frr-extras:
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
---
|
||||
hiera_include:
|
||||
- frrouting
|
||||
- exporters::frr_exporter
|
||||
|
||||
profiles::dns::resolver::acls:
|
||||
acl-main.unkin.net:
|
||||
@ -228,6 +229,7 @@ networking::interfaces:
|
||||
mtu: 1500
|
||||
|
||||
# frrouting
|
||||
exporters::frr_exporter::enable: true
|
||||
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
||||
frrouting::ospfd_redistribute:
|
||||
- connected
|
||||
@ -239,6 +241,12 @@ frrouting::ospfd_interfaces:
|
||||
frrouting::daemons:
|
||||
ospfd: true
|
||||
|
||||
# consul
|
||||
profiles::consul::client::node_rules:
|
||||
- resource: service
|
||||
segment: frr_exporter
|
||||
disposition: write
|
||||
|
||||
# additional repos
|
||||
profiles::yum::global::repos:
|
||||
frr-extras:
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
hiera_include:
|
||||
- frrouting
|
||||
- profiles::haproxy::server
|
||||
- exporters::frr_exporter
|
||||
|
||||
# networking
|
||||
anycast_ip: 198.18.19.17
|
||||
@ -19,6 +20,7 @@ networking::interfaces:
|
||||
mtu: 1500
|
||||
|
||||
# frrouting
|
||||
exporters::frr_exporter::enable: true
|
||||
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
||||
frrouting::ospfd_redistribute:
|
||||
- connected
|
||||
@ -69,6 +71,9 @@ profiles::consul::client::node_rules:
|
||||
- resource: service
|
||||
segment: haproxy-metrics
|
||||
disposition: write
|
||||
- resource: service
|
||||
segment: frr_exporter
|
||||
disposition: write
|
||||
|
||||
# haproxy
|
||||
profiles::haproxy::peers::enable: true
|
||||
|
||||
@ -7,6 +7,7 @@ hiera_include:
|
||||
- profiles::ceph::node
|
||||
- profiles::ceph::client
|
||||
- profiles::storage::cephfsvols
|
||||
- exporters::frr_exporter
|
||||
|
||||
# FIXME: puppet-python wants to try manage python-dev, which is required by the ceph package
|
||||
python::manage_dev_package: false
|
||||
@ -75,6 +76,9 @@ profiles::consul::client::node_rules:
|
||||
- resource: service
|
||||
segment: cephmgr
|
||||
disposition: write
|
||||
- resource: service
|
||||
segment: frr_exporter
|
||||
disposition: write
|
||||
|
||||
# additional repos
|
||||
profiles::yum::global::repos:
|
||||
@ -147,6 +151,7 @@ networking::interfaces:
|
||||
mtu: 1500
|
||||
|
||||
# frrouting
|
||||
exporters::frr_exporter::enable: true
|
||||
frrouting::ospfd_router_id: "%{hiera('networking_loopback0_ip')}"
|
||||
frrouting::ospfd_redistribute:
|
||||
- connected
|
||||
|
||||
@ -4,6 +4,7 @@ hiera_include:
|
||||
- frrouting
|
||||
- profiles::ceph::node
|
||||
- profiles::ceph::client
|
||||
- exporters::frr_exporter
|
||||
|
||||
# FIXME: puppet-python wants to try manage python-dev, which is required by the ceph package
|
||||
python::manage_dev_package: false
|
||||
@ -90,7 +91,14 @@ networking::interfaces:
|
||||
netmask: 255.255.255.255
|
||||
mtu: 1500
|
||||
|
||||
# consul
|
||||
profiles::consul::client::node_rules:
|
||||
- resource: service
|
||||
segment: frr_exporter
|
||||
disposition: write
|
||||
|
||||
# frrouting
|
||||
exporters::frr_exporter::enable: true
|
||||
frrouting::ospfd_router_id: "%{hiera('networking_loopback0_ip')}"
|
||||
frrouting::ospfd_redistribute:
|
||||
- connected
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
---
|
||||
hiera_include:
|
||||
- frrouting
|
||||
- exporters::frr_exporter
|
||||
|
||||
profiles::consul::server::members_lookup: true
|
||||
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_path: '/'
|
||||
|
||||
# consul
|
||||
profiles::consul::client::node_rules:
|
||||
- resource: service
|
||||
segment: frr_exporter
|
||||
disposition: write
|
||||
profiles::consul::prepared_query::rules:
|
||||
vault:
|
||||
ensure: 'present'
|
||||
@ -116,6 +122,7 @@ networking::interfaces:
|
||||
mtu: 1500
|
||||
|
||||
# frrouting
|
||||
exporters::frr_exporter::enable: true
|
||||
frrouting::ospfd_router_id: "%{facts.networking.ip}"
|
||||
frrouting::ospfd_redistribute:
|
||||
- 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