
Всем привет! Эта новость будет интересна тем, у кого есть микросервисы или утилиты на Go, которым нужно взаимодействовать с API Zabbix.
Возможно, вы уже знаете, что совсем недавно ребята из Zabbix зарелизили v5.0. А поскольку у нас в Nixys активно используется эта система мониторинга, то мы просто не могли пройти мимо этого события и в дополнение к уже имеющимся версиям v2.4 и v4.4, добавили в нашу open source библиотеку nxs-go-zabbix ещё и поддержку API Zabbix v5.0.
В ближайшие две недели мы переходим на v5.0, поэтому нам уже потребовалось применить наши последние наработки для собственных средств автоматизации. Полёт отличный!
Насколько легко воспользоваться нашей библиотекой в своём Go-проекте, можно увидеть из следующего кода:
package main import ( "fmt" "os" "github.com/nixys/nxs-go-zabbix/v5" ) func zabbixLogin(z *zabbix.Context, zbxHost, zbxUsername, zbxPassword string) { if err := z.Login(zbxHost, zbxUsername, zbxPassword); err != nil { fmt.Println("Login error:", err) os.Exit(1) } fmt.Println("Login: success") } func zabbixLogout(z *zabbix.Context) { if err := z.Logout(); err != nil { fmt.Println("Logout error:", err) os.Exit(1) } fmt.Println("Logout: success") } func main() { var z zabbix.Context /* Get variables from environment to login to Zabbix server */ zbxHost := os.Getenv("ZABBIX_HOST") zbxUsername := os.Getenv("ZABBIX_USERNAME") zbxPassword := os.Getenv("ZABBIX_PASSWORD") if zbxHost == "" || zbxUsername == "" || zbxPassword == "" { fmt.Println("Login error: make sure environment variables `ZABBIX_HOST`, `ZABBIX_USERNAME` and `ZABBIX_PASSWORD` are defined") os.Exit(1) } /* Login to Zabbix server */ zabbixLogin(&z, zbxHost, zbxUsername, zbxPassword) defer zabbixLogout(&z) /* Get all hosts */ hObjects, _, err := z.HostGet(zabbix.HostGetParams{ GetParameters: zabbix.GetParameters{ Output: zabbix.SelectExtendedOutput, }, }) if err != nil { fmt.Println("Hosts get error:", err) return } /* Print names of retrieved hosts */ fmt.Println("Hosts list:") for _, h := range hObjects { fmt.Println("-", h.Host) } }
Пока реализованы не все методы весьма обширного API Zabbix просто потому, что у нас они не используются, но если вы решите заюзать nxs-go-zabbix у себя и вам чего-то не хватит — пишите, обязательно дополним нашу библиотеку. А будет желание, время и возможность — подключайтесь к проекту, места хватит всем! )
P.S. Это библиотека доступна в нашем Github
