Help with monitoring Proxmox PVE and PBS with Zabbix

Hello Team,

Does anyone have links or suggestions on how I can monitor my Proxmox Hosts and PBS servers using Zabbix? I currently monitor the hosts themselves using Zaabix Agent 2 using the General Linux Template. But I’m looking to extend my monitoring to the following:

  1. status of backups (success or fail)
  2. status of proxmox jobs such as prune, verify or sync
  3. provide the size of my datastore used.

Thank you.

Hi @greavette,

@andy_wismer is the zabbix expert here I think. Andy can you help?

TIA

1 Like

Hi also I use Zabbix to monitor the pbs and proxmox server. I’m trying to expand the information, I know there are some templates on the zabbix share store.

1 Like

Hello @france,

I see this template is from 2018 and hasn’t been updated in a while. Does this work on your Proxmox version 6 environment?

Thank you.

Hi I don’t know, I use 7 and with the agent installed I have the information base. Clearly, like you, something advanced awaits her but this is what I found. If you want, you can test everything in my entire test environment, but now I can’t. I have untying a three node with PBS for i.

1 Like

Hi, I quickly tried the template. It gets uploaded to the zabbix server but I can’t see anything at the moment. Also, the template is designed to work with VMS and not PBS! I plan to try again as soon as possible.

Hi

AFAIK, at the moment, there’s still no dedicated module for Zabbix / PBS…
Probably PBS is too new, and has moved forwards so fast with a LOT of major changes between 1.0 and the present 2.0.9…

To get decent, valid data for PBS in Zabbix, one needs to use a couple of scripts, maybe in combination with mails about errors / successful completion of backups…

:slight_smile:

Sorry, but no better news (yet!).

My 2 cents
Andy

1 Like

Hi Andy,

Apologies for the delay in responding to you. Thank you for your input.

I’ve been digging a bit more and I’ve found the following API pages:
https://pbs.proxmox.com/docs/api-viewer/index.html#/tape
https://pve.proxmox.com/pve-docs/api-viewer/index.html#/cluster/backup

The PVE API has pvesh commands to help with gathering information from our PVE server. But their doesn’t appear to be similar commands for PBS. But there are HTTP commands but I don’t know how to execute them to find the details I need.

Are there any programmers here at Nethserver (perhaps @mrmarkuz or @stephdl) who may know how to extract details from PBS to be put into a script for the beginning of a Zabbix template?

Thanks.

1 Like

@greavette

Hi

PBS: It should be possible with curl to extract the needed Data from PBS, then forward that info via Zabbix Agent or SNMP (Extensions) to Zabbix.

My 2 cents
Andy

1 Like

Hey @Andy_Wismer,

I see on the API site I found where we can use the following for sync data:

HTTP: GET /api2/json//admin/sync

But I don’t know how to execute that from within my PBS server. Can curl be used with this GET command to retrieve what’s needed?

Thank you.

Try using curl, and a bit of PERL to fill the data into “fields”…

I use this with SNMP Extensions to read out the UPS Data on my Raspberries. I use these as a NUT server at all my clients with a UPS.

Sample:

Contents of /etc/snmp on the Raspberry:

The contents of snmpd.conf - including the commands for the “SNMP-Extensions”:

rocommunity public
syscontact admin@domain.ch
syslocation Some doctor, Zug
extend ups-nut /etc/snmp/ups-nut.sh
extend cpu-temp /etc/snmp/cpu-temp.sh

The ups-nut.sh file:

#!/usr/bin/env bash

UPS_NAME='ups'

PATH=$PATH:/usr/bin:/bin
TMP=$(upsc $UPS_NAME 2>/dev/null)

for value in "battery\.charge: [0-9.]+" "battery\.(runtime\.)?low: [0-9]+" "battery\.runtime: [0-9]+" "output\.voltage: [0-9.]+" "output\.voltage\.nominal: [0-9]+" "input\.voltage\.nominal: [0-9.]+" "input\.voltage: [0-9.]+" "ups\.load: [0-9.]+" "ups\.temperature: [0-9.]+"
do
    OUT=$(echo $TMP | grep -Eo "$value" | awk '{print $2}' | LANG=C sort | head -n 1)
    if [ -n "$OUT" ]; then
        echo $OUT
    else
        echo "Unknown"
    fi
done

Take this as a sample, and extend as needed…

As said, I’d suggest using curl to retrieve the http output, and PERL to split up the info into fields…

My 2 cents
Andy

1 Like