Dùng Zabbix đã lâu, có thể bạn chưa biết Zabbix có hỗ trợ API để mình gọi nữa đó nha. Zabbix API là chương trình cho phép bạn truy xuất và sửa đổi cấu hình, truy cập data history, được sử dụng để:
- Tạo ứng dụng để làm việc trên Zabbix.
- Tích hợp Zabbix với công cụ bên thứ 3.
- Tự động các tác vụ hằng ngày.
I. Tản mạn
Zabbix API là một API dựa trên web và được chuyển đổi như một phần giao diện người dùng. Theo như document của Zabbix thì API được sử dụng method JSON-RPC 2.0 với 2 ý chính sau:
- API bao gồm tập hợp các method riêng biệt
- Request và Response của client và API được định dạng JSON.
Mỗi method đảm nhiệm một nhiệm vụ khác nhau, đa phần xoay quang các method: get, create, update and delete.
Ví dụ: host.create để tạo mới một host.
item.get để lấy các giá trị của item đó…
Lọc giá trị item đó lấy latest value để check …vv còn rất nhiều case khác nữa. @@~
II. Sử dụng làm sao?
Mình xin giới thiệu qua một vài example để mọi người tham khảo và áp dụng, trong khuôn khổ bài viết mình không thể trình bày hết, mọi người thông cảm nhé.
Thêm một vấn đề nữa, ở trong tuts này mình sẽ dung Postman để gọi API nha, có giao diện cho dễ dùng chứ rối quá =))
1. Lấy token đăng nhập
Định dạng JSON bạn dùng mẫu sau:
{
“jsonrpc”: “2.0”, “method”: “user.login”, “params”: { “user”: “YOUR_USER”, “password”: “YOUR_PASSWORD” }, “id”: 1, “auth”: null } |
Mục đích phải có token mới access được vào server và từ đó mới lấy được các thông tin khác như GET hosts, GET items…
Bạn mở Postman ra, nhập url của Zabbix API vào, nó sẽ có dạng là http://Zabbix-Host/api_jsonrpc.php
Chọn Method là POST.
Body chọn row, past format trên vào.
Kết quả như hình sau:
Phần giá trị result chính là token để bạn sử dụng về sau.
2. GET toàn bộ hosts
Lấy toàn bộ thông tin của các host đang cấu hình trên Zabbix.
{
“jsonrpc”: “2.0”, “method”: “host.get”, “params”: { “output”: [ “hostid”, “host” ], “selectInterfaces”: [ “interfaceid”, “ip” ] }, “id”: 2, “auth”: “xxxxxxxxxxxxxxxxxxxxxxxxxxxxx” } |
3. GET một item bất kì xem sao nào
{
“jsonrpc”: “2.0”, “method”: “item.get”, “params”: { “output”: “extend”, “hostids”: “10084”, “search”: { “key_”: “domain.registration.check[aggretsukomerch.com]” }, “sortfield”: “name” }, “id”: 1, “auth”: “xxxxxxxxxxxxxxxxxxxxxxxxxxxxx” } |
4. GET info một trigger
{
“jsonrpc”: “2.0”, “method”: “trigger.get”, “params”: { “output”: “extend”, “hostids”: “10084”, “triggerids”: “15743”, “selectFunctions”: “extend” }, “auth”: “xxxxxxxxxxxxxxxxxxxxxxxxxxxxx”, “id”: 1 } |
Và còn rất nhiều API khác bạn có thể tham khảo thêm tại đây:
https://www.zabbix.com/documentation/3.2/manual/api/reference
III. Tổng kết
Bài viết ngắn gọn xúc tích (nhưng không động lại bao nhiêu :D) đến đây thôi, hy vọng sẽ giúp các bạn một phần nào đấy trong việc bổ sung kiến thức hoặc ứng dụng vào công việc nếu có. Xin cám ơn các bạn đã theo dõi!!!