---
title: "Memasang Alert Server ke Telegram Saat Ada Masalah"
description: "Cara membuat bot Telegram, mengirim alert dari server Linux dengan skrip bash dan cron, memberi tahu saat layanan systemd gagal, dan menyambungkan Netdata."
url: "https://nivelva.com/insight/memasang-alert-server-telegram-ada-masalah"
category: "Server \u0026 Infrastruktur"
tags: ["telegram","alert","monitoring","bash","linux"]
author: "Theresia Candiawan"
published: "2026-11-07T10:15:00+07:00"
updated: "2026-11-07T10:15:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Memasang Alert Server ke Telegram Saat Ada Masalah

> **Jawaban singkat:** Buat bot lewat @BotFather, ambil chat ID dari getUpdates, lalu kirim pesan dengan curl ke Bot API. Bungkus dalam skrip yang memeriksa disk, layanan, dan website secara berkala, hanya mengirim saat status berubah, dan sambungkan juga ke systemd dan Netdata.

Seberapa cepat kamu tahu kalau disk server penuh atau Nginx berhenti? Kalau jawabannya "saat pelanggan komplain", alert ke Telegram adalah perbaikan paling murah yang bisa kamu pasang hari ini. Pesan langsung masuk ke HP, bisa ke grup tim, dan tidak butuh layanan berbayar.

Caranya: buat bot Telegram, kirim pesan lewat Bot API dengan `curl`, lalu panggil perintah itu dari skrip pemeriksaan yang berjalan berkala. Berikut langkah lengkapnya untuk server Linux mana pun.

## Langkah memasang alert Telegram

### 1. Buat bot lewat @BotFather

Buka Telegram, cari akun resmi **@BotFather**, kirim `/newbot`, lalu ikuti pertanyaannya (nama bot dan username yang diakhiri `bot`). Di akhir, BotFather memberikan **token** berbentuk angka, titik dua, dan deretan huruf. Token ini seperti kata sandi: siapa pun yang memegangnya bisa mengendalikan bot.

### 2. Dapatkan chat ID tujuan

Kirim pesan apa saja ke bot barumu (atau tambahkan bot ke grup tim, lalu kirim pesan di grup). Setelah itu buka alamat berikut dari server atau browser, ganti `TOKEN` dengan token bot:

```
curl -s "https://api.telegram.org/botTOKEN/getUpdates"
```

Cari bagian `"chat":{"id":...}` pada hasilnya. Chat pribadi berupa angka positif, sedangkan ID grup diawali tanda minus, dan supergroup diawali `-100`. Kalau hasilnya kosong, kirim pesan sekali lagi lalu ulangi. Di grup, bot dengan privacy mode bawaan tetap menerima perintah yang diawali `/`, jadi kirim misalnya `/start` bila pesan biasa tidak muncul.

### 3. Simpan token dengan aman

Buat file `/etc/tg-alert.env`:

```
TG_TOKEN="123456789:ISI-TOKEN-DARI-BOTFATHER"
TG_CHAT_ID="-1001234567890"
```

Lalu kunci izinnya:

```
sudo chmod 600 /etc/tg-alert.env
```

Jangan menaruh token langsung di crontab atau skrip yang bisa dibaca user lain.

### 4. Buat perintah pengirim pesan

Simpan sebagai `/usr/local/bin/tg-alert`:

```
#!/bin/bash
set -u
. /etc/tg-alert.env
PESAN="[$(hostname)] $*"
curl -sS --max-time 10 -X POST \
  "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \
  --data-urlencode "chat_id=${TG_CHAT_ID}" \
  --data-urlencode "text=${PESAN}" > /dev/null
```

Beri izin eksekusi dengan `sudo chmod 700 /usr/local/bin/tg-alert`, lalu uji:

```
sudo tg-alert "Uji alert dari server"
```

Kalau pesan masuk ke Telegram, jalur kirim sudah beres. Nama server ikut tercantum di depan pesan, sehingga mudah dibedakan bila kamu mengelola beberapa server.

### 5. Buat skrip pemeriksaan yang tidak berisik

Kesalahan umum adalah mengirim pesan setiap kali pemeriksaan berjalan. Dalam satu jam grup bisa dibanjiri pesan yang sama, dan akhirnya diabaikan. Skrip berikut menyimpan status di folder kecil dan hanya mengirim pesan saat kondisi **berubah**: sekali saat bermasalah, sekali saat pulih.

Simpan sebagai `/usr/local/bin/cek-server.sh`:

```
#!/bin/bash
STATE=/var/lib/cek-server
mkdir -p "$STATE"

lapor() {  # $1 kunci, $2 = 1 bila bermasalah, $3 pesan
  if [ "$2" = 1 ]; then
    if [ ! -e "$STATE/$1" ]; then
      /usr/local/bin/tg-alert "MASALAH: $3" && touch "$STATE/$1"
    fi
  elif [ -e "$STATE/$1" ]; then
    /usr/local/bin/tg-alert "PULIH: $3" && rm -f "$STATE/$1"
  fi
}

# Disk root di atas 85%
PAKAI=$(df --output=pcent / | tail -1 | tr -dc '0-9')
[ "$PAKAI" -ge 85 ] && m=1 || m=0
lapor disk-root "$m" "Disk / terpakai ${PAKAI}%"

# Load 1 menit di atas 2x jumlah core
LOAD=$(cut -d' ' -f1 /proc/loadavg)
awk -v l="$LOAD" -v c="$(nproc)" 'BEGIN{exit !(l > c*2)}' && m=1 || m=0
lapor load "$m" "Load average ${LOAD}"

# Layanan penting
for svc in nginx mysql; do
  systemctl is-active --quiet "$svc" && m=0 || m=1
  lapor "svc-$svc" "$m" "Layanan $svc"
done

# Website merespons 200
KODE=$(curl -s -o /dev/null -w '%{http_code}' --max-time 15 https://domainmu.com/)
[ "$KODE" = 200 ] && m=0 || m=1
lapor web "$m" "Website domainmu.com kode HTTP $KODE"
```

Sesuaikan nama layanan (misalnya `mariadb` atau `php8.3-fpm`), alamat website, dan ambang batasnya. Ambang yang wajar per metrik dibahas di [metrik server yang wajib dipantau](https://nivelva.com/insight/metrik-server-wajib-dipantau). Beri izin eksekusi dengan `chmod 700`.

### 6. Jadwalkan setiap 5 menit

Buat file `/etc/cron.d/cek-server`:

```
*/5 * * * * root /usr/local/bin/cek-server.sh
```

Penjelasan format jadwal cron ada di [cara membuat cron job di Linux](https://nivelva.com/insight/cron-job-linux). Untuk menguji, isi sementara ambang disk dengan angka rendah, misalnya 1, lalu jalankan skrip manual. Pesan MASALAH harus masuk sekali saja, dan PULIH setelah ambangnya dikembalikan.

### 7. Beri tahu saat layanan systemd gagal

Systemd bisa memanggil unit lain saat sebuah layanan gagal. Buat `/etc/systemd/system/tg-gagal@.service`:

```
[Unit]
Description=Kirim alert Telegram untuk %i

[Service]
Type=oneshot
ExecStart=/usr/local/bin/tg-alert "Unit %i gagal"
```

Lalu tambahkan ke layanan yang ingin dipantau, misalnya tugas backup, dengan `sudo systemctl edit backup.service` dan isi:

```
[Unit]
OnFailure=tg-gagal@%n.service
```

Jalankan `sudo systemctl daemon-reload`. Sekarang setiap kali `backup.service` berakhir dengan status gagal, pesan langsung terkirim. Cara ini sangat berguna untuk tugas yang berjalan diam-diam tengah malam.

### 8. Sambungkan Netdata bila sudah terpasang

Kalau server memakai Netdata, kamu tidak perlu menulis pemeriksaan sendiri untuk metrik sistem. Buka `sudo /etc/netdata/edit-config health_alarm_notify.conf` lalu isi:

```
SEND_TELEGRAM="YES"
TELEGRAM_BOT_TOKEN="123456789:ISI-TOKEN-DARI-BOTFATHER"
DEFAULT_RECIPIENT_TELEGRAM="-1001234567890"
```

Uji dengan perintah dari dokumentasi Netdata:

```
sudo su -s /bin/bash netdata
export NETDATA_ALARM_NOTIFY_DEBUG=1
/usr/libexec/netdata/plugins.d/alarm-notify.sh test
```

Pemasangan dan pengamanan Netdata dibahas di [cara memantau server Linux dengan Netdata](https://nivelva.com/insight/cara-memantau-server-linux-netdata).

## Pilih cara yang mana?

| Cara | Cocok untuk | Kelebihan | Kekurangan |
|:--|:--|:--|:--|
| Skrip bash + cron | Pemeriksaan sederhana dan spesifik | Ringan, mudah dipahami | Harus ditulis dan dirawat sendiri |
| systemd OnFailure | Tugas terjadwal dan layanan penting | Langsung saat gagal | Hanya mendeteksi unit yang gagal |
| Netdata | Metrik sistem lengkap | Banyak alert bawaan | Agen tambahan di server |

Ketiganya bisa dipakai bersamaan. Satu catatan penting: semua cara di atas berjalan di server itu sendiri. Kalau server mati total atau jaringannya putus, tidak akan ada pesan yang terkirim. Untuk kasus itu, tambahkan pemeriksa dari luar, misalnya server lain yang mengecek website-mu secara berkala.

## Pertanyaan yang sering diajukan

### Apakah ada batas jumlah pesan yang bisa dikirim bot?

Ada. Telegram membatasi laju pengiriman pesan bot, terutama ke grup yang sama. Skrip yang hanya mengirim saat status berubah jauh dari batas itu.

### Bagaimana kalau token bot bocor?

Buka @BotFather, pilih bot, lalu buat ulang token. Token lama langsung tidak berlaku, dan perbarui file `/etc/tg-alert.env` di semua server.

### Bisakah alert dikirim ke topik tertentu di grup?

Bisa. Bot API menerima parameter `message_thread_id` pada `sendMessage` untuk grup yang memakai topik.

### Apakah bisa memakai n8n alih-alih skrip?

Bisa, misalnya server mengirim webhook ke n8n lalu n8n meneruskan ke Telegram. Contoh alur Telegram di n8n ada di [notifikasi pesanan baru ke grup Telegram](https://nivelva.com/insight/notifikasi-pesanan-baru-grup-telegram-n8n).

## Checklist singkat

- Bot dibuat lewat @BotFather dan token disimpan dengan izin 600.
- Chat ID didapat dari getUpdates dan pesan uji berhasil masuk.
- Skrip pemeriksaan hanya mengirim saat status berubah.
- Cron berjalan setiap beberapa menit.
- Tugas penting memakai OnFailure systemd.
- Ada pemeriksa dari luar untuk kasus server mati total.

## Sumber

- <https://core.telegram.org/bots/api>
- <https://core.telegram.org/bots/features>
- <https://learn.netdata.cloud/docs/alerts-&-notifications/notifications/agent-dispatched-notifications/telegram>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/memasang-alert-server-telegram-ada-masalah
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
