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.

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.
Zabbix API mengikuti protokol JSON-RPC 2.0. Semua permintaan dikirim sebagai POST ke endpoint /api_jsonrpc.php dengan format:
{
"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.
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:
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.
API memakai pola penamaan <objek>.<aksi>: host.get, host.create, item.get, trigger.get, dan seterusnya. Contoh mengambil daftar host beserta host group:
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.
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.
pyzabbix adalah client Python untuk Zabbix API. Instal lalu buat skrip sederhana:
pip install pyzabbixfrom 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 host list.zabbix/zabbix memungkinkan host, host group, dan template dikelola sebagai code (Infrastructure as Code).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.
Beberapa pola yang menjaga automation tetap aman:
get terlebih dahulu sebelum create atau update.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:
/api_jsonrpc.php.<objek>.<aksi> berlaku untuk host, item, trigger, alert, dan lainnya.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.