How to Set Up Telegram Alerts for Monitoring Your Proxmox Cluster
I’ll show a practical way to get Telegram notifications from a Proxmox cluster. Create a bot, get a chat id, test a message, then pick a way to forward real events without filling your phone with noise.
Step-by-step guide to setting up Proxmox monitoring with Telegram
Preparing your Proxmox environment for notifications
Make sure your Proxmox host can reach api.telegram.org on port 443. Open outbound HTTPS if you run a strict firewall. For automation access to the Proxmox API, create a dedicated service account or use root with an API token. If you do not want to touch the API, read logs instead; both approaches work for Proxmox monitoring.
Give the automation account only the minimum privileges it needs. A read-only role that can view tasks, node status, and backup logs is usually enough.
Creating your Telegram bot and getting the API token
- Start a chat with @BotFather in Telegram.
- Send /newbot and follow the prompts for name and username.
- BotFather returns a token that looks like 123456:ABC-defGhIJKlmnoPQRstuVwxYZ.
Get the chat id. Add the bot to a group or start a direct chat with it. Then run:
curl -s "https://api.telegram.org/bot<TOKEN>/getUpdates" | jq .
Look for message.chat.id in the JSON. That number is your CHAT_ID.
Test sending a message:
curl -s -X POST "https://api.telegram.org/bot<TOKEN>/sendMessage"
-d chat_id=<CHAT_ID>
-d text="Telegram notifications test from Proxmox monitoring"
Replace <TOKEN> and <CHAT_ID>. If the message arrives, the bot and network are working.
Configuring Proxmox webhook notifications
There are three practical ways to feed Proxmox events into Telegram:
Option A — direct webhook bridge for small setups
- Run a small HTTP endpoint or script that accepts a POST from Proxmox or another monitor and forwards it to Telegram with curl.
- Example minimal forwarder (bash). Save as /usr/local/bin/telegram-forward.sh and chmod +x it:
#!/bin/bash
TOKEN="123456:ABC-DEF"
CHAT_ID="987654321"
TEXT="$1"
curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage"
-d chat_id="${CHAT_ID}"
-d text="$(echo "$TEXT" | cut -c1-4000)"
Use Proxmox to call that script, or set up a small webhook receiver on a separate host that accepts JSON and calls this script. It is simple to understand and quick to test.
Option B — tail logs and match
- Tail /var/log/syslog or the Proxmox task log and match strings for critical events.
- Example one-liner:
tail -F /var/log/syslog |
grep --line-buffered -Ei 'error|panic|failed|lost quorum' |
while read -r line; do /usr/local/bin/telegram-forward.sh "$line"; done
This is quick to deploy but needs tuning to avoid noise.
Option C — external monitoring tools
- Run Prometheus with node_exporter and Alertmanager, or use Uptime Kuma, Nagios, or Centreon.
- Alertmanager can route alerts to Telegram through a webhook or a small bridge. External monitoring gives history, silencing, and grouping for better Proxmox alerts.
I would use a small bridge for a homelab and Alertmanager for a larger setup.
Testing notifications from Proxmox
Trigger a safe test. Examples:
- A deliberate VM stop or restart.
- A temporary firewall block on a node to simulate a node going down.
- A simulated failed backup or a test log line injected to /var/log/syslog.
Use the same curl sendMessage command to simulate how real alerts will look. Check that timestamps, VM names, and node names are included in the message so you know what to act on.
Exploring external monitoring tools for Proxmox alerts
If you need alert history, dashboards, or better routing, pick one of these:
- Prometheus + Alertmanager for metric-based alerts and grouping.
- Uptime Kuma for simple HTTP/ICMP checks and Telegram notifications.
- Nagios or Centreon if you prefer classical monitoring.
I use Prometheus when I want thresholds and deduplication. Uptime Kuma is good for quick availability checks and has a built-in Telegram notifier.
Tips for effective Proxmox alerts and Telegram notifications
Keeping alert volume manageable
High volume kills usefulness. Send only high-value alerts:
- Node offline or lost quorum.
- Backup failure.
- Storage near full; I use 85% as a trigger.
- VM process crashes or repeated failed starts.
Group similar events. If three backups fail at once, send one grouped message listing each VM. Set a rolling suppression window so repeated noise about the same issue is suppressed for 10–30 minutes.
Customizing alert messages
Add the basics: severity, node, VM name, short description, timestamp, and a link to the Proxmox web UI (https://proxmox.example:8006). Keep messages short. Example format:
CRITICAL: backup failed
Node: pve1
VM: vm-105 (plex)
When: 2025-10-26T09:04:12Z
If you use Alertmanager, use templates to format the message and include labels like severity and team_owner.
Integrating with automation tools for better management
Use n8n or a small script to parse incoming webhooks and add context:
- Enrich alerts with runbook links.
- Auto-create an incident ticket in a ticketing system.
- Add quick action buttons in Telegram via inline keyboards if you need restart controls.
I use automation sparingly. Keep human approval for destructive actions.
Monitoring Proxmox cluster health effectively
Track these metrics:
- Cluster quorum state.
- Node CPU and memory usage spikes.
- Disk usage per storage (LVM, ZFS).
- I/O wait and disk errors.
- Backup job status and duration.
Set thresholds and alert only on sustained breaches, not single spikes. For example, alarm on disk > 85% for more than 30 minutes.
Troubleshooting common notification issues
Bot not sending messages:
- Confirm the bot is added to the chat or invited into the group.
- Check getUpdates for errors.
- Check the firewall for blocked outbound HTTPS.
Wrong chat id:
- Run getUpdates again after sending a message to the bot from the target chat. Chat ids can change for group chats if new security features are applied.
Too many messages:
- Add filters or rate limits in the bridge.
- Use Alertmanager grouping or a dedupe window.
Missing context:
- Include node and VM identifiers in the message. If your alerts only send error codes, add a lookup that resolves IDs to human names.
- Create the Telegram bot, get the token and chat id, then test with curl.
- Start with a simple bridge or log tailer to forward only critical Proxmox alerts.
- If you need history and deduplication, add Prometheus + Alertmanager or Uptime Kuma.
- Tune thresholds and grouping so Telegram notifications stay useful.



