Skip to content

Commit cdd0150

Browse files
Add PBS exporter and failure alerts
Co-authored-by: 33Fraise33 <33Fraise33@users.noreply.github.com>
1 parent 42d22e5 commit cdd0150

5 files changed

Lines changed: 91 additions & 0 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
groups:
3+
- name: pbs.rules
4+
rules:
5+
- alert: PBS backup failed
6+
expr: pbs_task_status{task_type="backup",status=~"(?i:failed|error)"} == 1
7+
for: 10m
8+
labels:
9+
severity: critical
10+
annotations:
11+
summary: "PBS backup failed on {{ $labels.node_name }}"
12+
description: "Backup {{ $labels.task }} for datastore {{ $labels.datastore }} failed."
13+
14+
- alert: PBS verification failed
15+
expr: pbs_task_status{task_type="verify",status=~"(?i:failed|error)"} == 1
16+
for: 10m
17+
labels:
18+
severity: critical
19+
annotations:
20+
summary: "PBS verification failed on {{ $labels.node_name }}"
21+
description: "Verification {{ $labels.task }} for datastore {{ $labels.datastore }} failed."
22+
23+
- alert: PBS sync failed
24+
expr: pbs_task_status{task_type="sync",status=~"(?i:failed|error)"} == 1
25+
for: 10m
26+
labels:
27+
severity: critical
28+
annotations:
29+
summary: "PBS sync failed on {{ $labels.node_name }}"
30+
description: "Sync {{ $labels.task }} for datastore {{ $labels.datastore }} failed."

playbooks/host_files/beokpdcovm01/templates/prometheus/prometheus.yml.j2

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,27 @@ scrape_configs:
262262
- targets:
263263
- "prometheus-adguard_exporter:9618"
264264

265+
- job_name: 'pbs_exporter'
266+
metrics_path: /probe
267+
http_sd_configs:
268+
- <<: *netbox_auth
269+
url: https://netbox.unitix.be/api/plugins/prometheus-sd/virtual-machines/?status=active&tag=pbs
270+
relabel_configs:
271+
- source_labels: [__meta_netbox_primary_ip]
272+
target_label: __param_target
273+
- source_labels: [__param_target]
274+
target_label: instance
275+
- source_labels: [__meta_netbox_name]
276+
target_label: node_name
277+
- source_labels: [__meta_netbox_site]
278+
target_label: site
279+
- source_labels: [__meta_netbox_tenant]
280+
target_label: tenant
281+
- source_labels: [__meta_netbox_role_slug]
282+
target_label: device_role
283+
- target_label: __address__
284+
replacement: "prometheus-pbs_exporter:9569"
285+
265286
- job_name: "hass"
266287
metrics_path: /api/prometheus
267288
authorization:

playbooks/host_vars/beokpdcovm01.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ dawarich_photon_api_host: photon.frai.se
33
dawarich_photon_api_port: "443"
44
dawarich_photon_api_use_https: "true"
55

6+
prometheus:
7+
features:
8+
pbs_exporter: true
9+
610
cloudflared:
711
docker_network: services
812
service_token: !vault |

roles/prometheus/tasks/main.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@
2727
tags: adguard, adguard_exporter
2828
when: prometheus.features.adguard | default (false)
2929

30+
- name: Setup PBS exporter
31+
ansible.builtin.import_tasks: pbs_exporter.yml
32+
tags: pbs, pbs_exporter, pbs-exporter
33+
when: prometheus.features.pbs_exporter | default(false)
34+
3035
- name: Setup alertmanager
3136
ansible.builtin.import_tasks: alertmanager.yml
3237
tags: alertmanager, alerts, alert
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
- name: Validate PBS exporter credentials
3+
ansible.builtin.assert:
4+
that:
5+
- pbs_exporter_api_token_id is defined
6+
- pbs_exporter_api_token_id | length > 0
7+
- pbs_exporter_api_token_secret is defined
8+
- pbs_exporter_api_token_secret | length > 0
9+
fail_msg: >-
10+
pbs_exporter_api_token_id and pbs_exporter_api_token_secret must be
11+
supplied as inventory variables.
12+
no_log: true
13+
14+
- name: Setup Prometheus PBS exporter
15+
community.docker.docker_container:
16+
name: prometheus-pbs_exporter
17+
image: "{{ pbs_exporter_image | default('natrontech/pbs-exporter:latest') }}"
18+
networks:
19+
- name: monitoring
20+
dns_servers: "{{ dns.servers }}"
21+
env:
22+
PBS_TOKEN_ID: "{{ pbs_exporter_api_token_id }}"
23+
PBS_TOKEN_SECRET: "{{ pbs_exporter_api_token_secret }}"
24+
PBS_TLS_INSECURE: "true"
25+
restart: true
26+
restart_policy: always
27+
state: started
28+
pull: true
29+
labels:
30+
traefik.enable: "false"
31+
no_log: true

0 commit comments

Comments
 (0)