Belajar Zabbix - Zabbix API & Automation
Episode 14 of 23

Belajar Zabbix - Zabbix API & Automation

Episode ini membuka automation penuh Zabbix lewat API JSON-RPC: autentikasi dengan token, operasi host, item, trigger, dan alert, serta skrip dengan curl dan Python pyzabbix, ditambah integrasi zabbix-cli dan Terraform provider.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Kalian sudah berkali-kali melihat curl ke /api_jsonrpc.php di episode-episode sebelumnya. Episode 14 ini membuka kotak itu sepenuhnya: Zabbix API adalah gerbang automation yang menjadikan seluruh frontend — host, item, trigger, alert — sebagai objek terprogram. Semua yang bisa dilakukan lewat UI bisa dilakukan lewat API.

Kemampuan ini mengubah cara tim bekerja. Provisioning host, sinkronisasi konfigurasi, dan pembuatan laporan bisa dijalankan oleh pipeline, bukan oleh manusia yang mengklik frontend. Episode ini juga memperkenalkan tiga alat yang membungkus API: curl, Python dengan pyzabbix, dan Terraform.

Memahami Zabbix API

JSON-RPC dan Endpoint

Zabbix API mengikuti protokol JSON-RPC 2.0. Semua permintaan dikirim sebagai POST ke endpoint /api_jsonrpc.php dengan format:

Struktur permintaan JSON-RPC
{
  "jsonrpc": "2.0",
  "method": "host.get",
  "params": {},
  "id": 1,
  "auth": "<token>"
}

Bidang method menentukan operasi, params membawa argumen, dan auth membawa token autentikasi. Perintah curl -s -X POST http://localhost/api_jsonrpc.php di episode-episode sebelumnya adalah permintaan seperti ini.

Autentikasi: API Token

Cara yang direkomendasikan untuk automation adalah API token yang dibuat per user di menu Users → API tokens. Token menggantikan password dan bisa diberi masa berlaku. Setelah dibuat, token dipakai sebagai nilai auth di setiap permintaan.

Untuk memeriksa apakah token valid, panggil metode apiinfo.version:

Cek versi API tanpa token
curl -s -X POST http://localhost/api_jsonrpc.php \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"apiinfo.version","id":1,"params":{}}'

Response {"result":"7.0.29"} atau sejenisnya berarti endpoint API hidup. Metode ini tidak membutuhkan autentikasi dan menjadi health check paling sederhana.

Operasi Dasar API

Host, Item, dan Trigger

API memakai pola penamaan <objek>.<aksi>: host.get, host.create, item.get, trigger.get, dan seterusnya. Contoh mengambil daftar host beserta host group:

Ambil daftar host via API
curl -s -X POST http://localhost/api_jsonrpc.php \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"host.get","params":{"output":["hostid","host"],"selectGroups":["name"]},"id":1,"auth":"<token>"}'

Parameter selectGroups adalah contoh sintaks API untuk mengambil objek yang direferensikan — pola yang dipakai di banyak metode untuk memperkaya hasil query.

Mengambil Alert dan Event

API juga membuka data operasional. Untuk audit notifikasi, alert.get mengambil riwayat alert, dan event.get mengambil daftar event problem. Ini berguna untuk membuat laporan eksternal atau integrasi dengan sistem ticketing.

Automation dengan Alat Pilihan

Python dengan pyzabbix

pyzabbix adalah client Python untuk Zabbix API. Instal lalu buat skrip sederhana:

Install pyzabbix
pip install pyzabbix
PythonContoh skrip pyzabbix
from pyzabbix import ZabbixAPI
 
zapi = ZabbixAPI("http://localhost")
zapi.login(user="automation", password="SandiKuat")
 
hosts = zapi.host.get(output=["host"], selectGroups=["name"])
for h in hosts:
    print(h["host"])

Skrip di atas login ke API dan mencetak daftar host. zapi.host.get(output=["host"]) mengembalikan objek host yang siap diproses di Python.

zabbix-cli dan Terraform

  • zabbix-cli adalah CLI resmi berbasis Python yang membungkus API menjadi perintah interaktif, misalnya zabbix host list.
  • Terraform provider zabbix/zabbix memungkinkan host, host group, dan template dikelola sebagai code (Infrastructure as Code).
Resource host di Terraform
resource "zabbix_host" "app01" {
  host = "app01.example.com"
  hostgroup_name = "Linux servers"
}

Resource zabbix_host di atas mendefinisikan satu host di Terraform. Dengan cara ini, seluruh konfigurasi Zabbix bisa di-review, di-versioning, dan di-deploy secara reproducible.

Tip

Gunakan API token dengan permission paling rendah yang dibutuhkan skrip. Automation yang berjalan dengan akun Super admin adalah risiko besar — batasi scope token sesuai pekerjaan yang harus dilakukan.

Pola Automation yang Sehat

Beberapa pola yang menjaga automation tetap aman:

  • Simpan token di environment variable atau secret manager, bukan di dalam skrip.
  • Idempotent: skrip yang dijalankan dua kali harus menghasilkan keadaan yang sama.
  • Uji metode API dengan get terlebih dahulu sebelum create atau update.
  • Catat hasil setiap operasi untuk audit.

Penutup

Episode 14 membuka automation: Zabbix API berbasis JSON-RPC dengan API token, operasi host, item, trigger, dan alert, serta tiga alat praktis — curl, Python pyzabbix, dan Terraform — untuk mengelola Zabbix sebagai code.

Inti yang harus dibawa pulang:

  • Semua operasi frontend tersedia lewat API JSON-RPC di /api_jsonrpc.php.
  • API token adalah cara autentikasi yang direkomendasikan untuk automation.
  • Pola <objek>.<aksi> berlaku untuk host, item, trigger, alert, dan lainnya.
  • pyzabbix, zabbix-cli, dan Terraform membungkus API untuk skala lebih besar.
  • Simpan token dengan aman dan beri permission seminimal mungkin.

Di episode 15 selanjutnya kita akan membahas authentication, RBAC, dan security hardening — autentikasi dengan user bawaan, LDAP, SAML SSO, dan 2FA, kontrol akses berbasis role dan permission, serta hardening dengan TLS/PSK, reverse proxy HTTPS, dan patch keamanan.