feat: add nzbget_exporter
All checks were successful
Build / precommit (pull_request) Successful in 5m51s

- add nzbget_exporter class
- add exporter to nzbget class
This commit is contained in:
Ben Vincent 2025-08-03 14:09:02 +10:00
parent 5a9241940f
commit d1764f3e2b
3 changed files with 90 additions and 0 deletions

View File

@ -4,6 +4,7 @@ hiera_include:
- nzbget
- profiles::media::nzbget
- profiles::nginx::ldapauth
- exporters::nzbget_exporter
profiles::packages::include:
unrar: {}
@ -13,6 +14,9 @@ nzbget::params::user: nzbget
nzbget::params::group: media
nzbget::params::manage_group: false
# nzbget_exporter
exporters::nzbget_exporter::enable: true
# additional altnames
profiles::pki::vault::alt_names:
- nzbget.main.unkin.net
@ -62,6 +66,9 @@ profiles::consul::client::node_rules:
- resource: service
segment: nzbget
disposition: write
- resource: service
segment: nzbget_exporter
disposition: write
profiles::yum::global::repos:
rpmfusion-free:

View File

@ -0,0 +1,68 @@
class exporters::nzbget_exporter (
Boolean $enable = false,
String $user = 'nzbget_exporter',
String $group = 'nzbget_exporter',
Boolean $manage_user = true,
Boolean $manage_service = true,
Stdlib::Port $port = 9452,
Stdlib::HTTPUrl $url = 'http://127.0.0.1:6789',
Stdlib::Absolutepath $exec_path = '/usr/bin/nzbget_exporter',
){
if $enable {
# install required package
package {'nzbget_exporter':
ensure => installed,
}
# manage the user/group
if $manage_user {
group { $group:
ensure => present,
}
user { $user:
ensure => present,
shell => '/usr/sbin/nologin',
groups => $group,
managehome => true,
}
}
# manage the systemd service
if $manage_service {
# Use these in notifications or file resources
systemd::unit_file { 'nzbget_exporter.service':
content => template('exporters/nzbget_exporter.service.erb'),
enable => true,
active => true,
subscribe => Package['nzbget_exporter'],
}
}
# manage consul service
consul::service { 'nzbget_exporter':
service_name => 'nzbget_exporter',
address => $facts['networking']['ip'],
port => $port,
tags => [
'metrics',
'metrics_scheme=http',
'metrics_job=nzbget',
],
checks => [
{
id => 'nzbget_exporter_http_check',
name => 'nzbget_exporter HTTP Check',
http => "http://${facts['networking']['fqdn']}:${port}/metrics",
method => 'GET',
tls_skip_verify => true,
interval => '10s',
timeout => '1s',
},
],
}
}
}

View File

@ -0,0 +1,15 @@
[Unit]
Description=Prometheus nzbget_exporter
Wants=network-online.target
After=network-online.target
[Service]
User=<%= @user %>
Group=<%= @group %>
ExecStart=<%= @exec_path %> --host=<%= @url %>
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always
[Install]
WantedBy=multi-user.target