zabbix

package module
v0.0.0-...-e5d030e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 22, 2023 License: BSD-2-Clause Imports: 12 Imported by: 4

README

zabbix GoDoc Build Status Go Report Card

This Go package provides access to Zabbix API.

Zabbix Version Compatibility
6.4.x
6.2.x
6.0.x LTS
5.4.x
5.2.x
5.0.x LTS
4.4.x
4.2.x
4.0.x LTS
3.4.x
3.2.x

Install it: go get github.com/canghai908/zabbix-go

You have to run tests before using this package – Zabbix API doesn't match documentation in few details, which are changing in patch releases. Tests are not expected to be destructive, but you are advised to run them against not-production instance or at least make a backup.

export TEST_ZABBIX_URL=http://localhost:8080/zabbix/api_jsonrpc.php
export TEST_ZABBIX_USER=Admin
export TEST_ZABBIX_PASSWORD=zabbix
export TEST_ZABBIX_VERBOSE=1
go test -v

TEST_ZABBIX_URL may contain HTTP basic auth username and password: http://username:password@host/api_jsonrpc.php. Also, in some setups URL should be like http://host/zabbix/api_jsonrpc.php.

Documentation is available on pkg.go.dev. Also, Rafael Fernandes dos Santos wrote a great article about using and extending this package.

License: Simplified BSD License (see LICENSE).

Documentation

Overview

Package zabbix provides access to Zabbix API.

Before using it make sure you run tests as described in README: https://github.com/AlekSi/zabbix

Index

Examples

Constants

View Source
const (
	Available   AvailableType = 1
	Unavailable AvailableType = 2

	Monitored   StatusType = 0
	Unmonitored StatusType = 1
)
View Source
const (
	ZabbixAgent       ItemType = 0
	SNMPv1Agent       ItemType = 1
	ZabbixTrapper     ItemType = 2
	SimpleCheck       ItemType = 3
	SNMPv2Agent       ItemType = 4
	ZabbixInternal    ItemType = 5
	SNMPv3Agent       ItemType = 6
	ZabbixAgentActive ItemType = 7
	ZabbixAggregate   ItemType = 8
	WebItem           ItemType = 9
	ExternalCheck     ItemType = 10
	DatabaseMonitor   ItemType = 11
	IPMIAgent         ItemType = 12
	SSHAgent          ItemType = 13
	TELNETAgent       ItemType = 14
	Calculated        ItemType = 15
	JMXAgent          ItemType = 16

	Float     ValueType = 0
	Character ValueType = 1
	Log       ValueType = 2
	Unsigned  ValueType = 3
	Text      ValueType = 4

	Decimal     DataType = 0
	Octal       DataType = 1
	Hexadecimal DataType = 2
	Boolean     DataType = 3

	AsIs  DeltaType = 0
	Speed DeltaType = 1
	Delta DeltaType = 2
)

Variables

View Source
var New bool

Functions

This section is empty.

Types

type API

type API struct {
	Auth   string      // auth token, filled by Login()
	Logger *log.Logger // request/response logger, nil by default
	// contains filtered or unexported fields
}

func NewAPI

func NewAPI(url string) (api *API)

Creates new API access object. Typical URL is http://host/api_jsonrpc.php or http://host/zabbix/api_jsonrpc.php. It also may contain HTTP basic auth username and password like http://username:password@host/api_jsonrpc.php.

func (*API) ApplicationGetByHostIdAndName

func (api *API) ApplicationGetByHostIdAndName(hostId, name string) (res *Application, err error)

Gets application by host Id and name only if there is exactly 1 matching application.

func (*API) ApplicationGetById

func (api *API) ApplicationGetById(id string) (res *Application, err error)

Gets application by Id only if there is exactly 1 matching application.

func (*API) ApplicationsCreate

func (api *API) ApplicationsCreate(apps Applications) (err error)

Wrapper for application.create: https://www.zabbix.com/documentation/2.2/manual/appendix/api/application/create

func (*API) ApplicationsDelete

func (api *API) ApplicationsDelete(apps Applications) (err error)

Wrapper for application.delete: https://www.zabbix.com/documentation/2.2/manual/appendix/api/application/delete Cleans ApplicationId in all apps elements if call succeed.

func (*API) ApplicationsDeleteByIds

func (api *API) ApplicationsDeleteByIds(ids []string) (err error)

Wrapper for application.delete: https://www.zabbix.com/documentation/2.2/manual/appendix/api/application/delete

func (*API) ApplicationsGet

func (api *API) ApplicationsGet(params Params) (res Applications, err error)

Wrapper for application.get: https://www.zabbix.com/documentation/2.2/manual/appendix/api/application/get

func (*API) Call

func (api *API) Call(method string, params interface{}) (response Response, err error)

Calls specified API method. Uses api.Auth if not empty. err is something network or marshaling related. Caller should inspect response.Error to get API error.

Example
api := NewAPI("http://host/api_jsonrpc.php")
api.Login("user", "password")
res, _ := api.Call("item.get", Params{"itemids": "23970", "output": "extend"})
log.Print(res)
Output:

func (*API) CallWithError

func (api *API) CallWithError(method string, params interface{}) (response Response, err error)

Uses Call() and then sets err to response.Error if former is nil and latter is not.

func (*API) HistoryGet

func (api *API) HistoryGet(params Params) (res HistoryItems, err error)

func (*API) HostGetByHost

func (api *API) HostGetByHost(host string) (res *Host, err error)

Gets host by Host only if there is exactly 1 matching host.

func (*API) HostGetById

func (api *API) HostGetById(id string) (res *Host, err error)

Gets host by Id only if there is exactly 1 matching host.

func (*API) HostGroupGetById

func (api *API) HostGroupGetById(id string) (res *HostGroup, err error)

Gets host group by Id only if there is exactly 1 matching host group.

func (*API) HostGroupsCreate

func (api *API) HostGroupsCreate(hostGroups HostGroups) (err error)

Wrapper for hostgroup.create: https://www.zabbix.com/documentation/2.2/manual/appendix/api/hostgroup/create

func (*API) HostGroupsDelete

func (api *API) HostGroupsDelete(hostGroups HostGroups) (err error)

Wrapper for hostgroup.delete: https://www.zabbix.com/documentation/2.2/manual/appendix/api/hostgroup/delete Cleans GroupId in all hostGroups elements if call succeed.

func (*API) HostGroupsDeleteByIds

func (api *API) HostGroupsDeleteByIds(ids []string) (err error)

Wrapper for hostgroup.delete: https://www.zabbix.com/documentation/2.2/manual/appendix/api/hostgroup/delete

func (*API) HostGroupsGet

func (api *API) HostGroupsGet(params Params) (res HostGroups, err error)

Wrapper for hostgroup.get: https://www.zabbix.com/documentation/2.2/manual/appendix/api/hostgroup/get

func (*API) HostInterfacesGet

func (api *API) HostInterfacesGet(params Params) (res HostInterfaces, err error)

func (*API) HostsCreate

func (api *API) HostsCreate(hosts Hosts) (err error)

Wrapper for host.create: https://www.zabbix.com/documentation/2.2/manual/appendix/api/host/create

func (*API) HostsDelete

func (api *API) HostsDelete(hosts Hosts) (err error)

Wrapper for host.delete: https://www.zabbix.com/documentation/2.2/manual/appendix/api/host/delete Cleans HostId in all hosts elements if call succeed.

func (*API) HostsDeleteByIds

func (api *API) HostsDeleteByIds(ids []string) (err error)

Wrapper for host.delete: https://www.zabbix.com/documentation/2.2/manual/appendix/api/host/delete

func (*API) HostsGet

func (api *API) HostsGet(params Params) (res Hosts, err error)

Wrapper for host.get: https://www.zabbix.com/documentation/2.2/manual/appendix/api/host/get

func (*API) HostsGetByHostGroupIds

func (api *API) HostsGetByHostGroupIds(ids []string) (res Hosts, err error)

Gets hosts by host group Ids.

func (*API) HostsGetByHostGroups

func (api *API) HostsGetByHostGroups(hostGroups HostGroups) (res Hosts, err error)

Gets hosts by host groups.

func (*API) ItemsCreate

func (api *API) ItemsCreate(items Items) (err error)

Wrapper for item.create: https://www.zabbix.com/documentation/2.2/manual/appendix/api/item/create

func (*API) ItemsDelete

func (api *API) ItemsDelete(items Items) (err error)

Wrapper for item.delete: https://www.zabbix.com/documentation/2.2/manual/appendix/api/item/delete Cleans ItemId in all items elements if call succeed.

func (*API) ItemsDeleteByIds

func (api *API) ItemsDeleteByIds(ids []string) (err error)

Wrapper for item.delete: https://www.zabbix.com/documentation/2.2/manual/appendix/api/item/delete

func (*API) ItemsGet

func (api *API) ItemsGet(params Params) (res Items, err error)

Wrapper for item.get https://www.zabbix.com/documentation/2.2/manual/appendix/api/item/get

func (*API) ItemsGetByApplicationId

func (api *API) ItemsGetByApplicationId(id string) (res Items, err error)

Gets items by application Id.

func (*API) Login

func (api *API) Login(user, password string) (auth string, err error)

Calls "user.login" API method and fills api.Auth field. This method modifies API structure and should not be called concurrently with other methods.

func (*API) SetClient

func (api *API) SetClient(c *http.Client)

Allows one to use specific http.Client, for example with InsecureSkipVerify transport.

func (*API) Version

func (api *API) Version() (v string, err error)

Calls "APIInfo.version" API method. This method temporary modifies API structure and should not be called concurrently with other methods.

type Application

type Application struct {
	ApplicationId string `json:"applicationid,omitempty"`
	HostId        string `json:"hostid"`
	Name          string `json:"name"`
	TemplateId    string `json:"templateid,omitempty"`
}

https://www.zabbix.com/documentation/2.2/manual/appendix/api/application/definitions

type Applications

type Applications []Application

type AvailableType

type AvailableType int

type DataType

type DataType int

type DeltaType

type DeltaType int

type Error

type Error struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Data    string `json:"data"`
}

func (*Error) Error

func (e *Error) Error() string

type ExpectedMore

type ExpectedMore struct {
	Expected int
	Got      int
}

func (*ExpectedMore) Error

func (e *ExpectedMore) Error() string

type ExpectedOneResult

type ExpectedOneResult int

func (*ExpectedOneResult) Error

func (e *ExpectedOneResult) Error() string

type HistoryItem

type HistoryItem struct {
	ItemId string `json:"itemid"`
	Clock  string `json:"clock"`
	Value  string `json:"value"`
	// contains filtered or unexported fields
}

type HistoryItems

type HistoryItems []HistoryItem

type Host

type Host struct {
	HostId    string        `json:"hostid,omitempty"`
	Host      string        `json:"host"`
	Available AvailableType `json:"available"`
	Error     string        `json:"error"`
	Name      string        `json:"name"`
	Status    StatusType    `json:"status"`

	// Fields below used only when creating hosts
	GroupIds   HostGroupIds   `json:"groups,omitempty"`
	Interfaces HostInterfaces `json:"interfaces,omitempty"`
}

https://www.zabbix.com/documentation/2.2/manual/appendix/api/host/definitions

type HostGroup

type HostGroup struct {
	GroupId  string       `json:"groupid,omitempty"`
	Name     string       `json:"name"`
	Internal InternalType `json:"internal,omitempty"`
}

https://www.zabbix.com/documentation/2.2/manual/appendix/api/hostgroup/definitions

type HostGroupId

type HostGroupId struct {
	GroupId string `json:"groupid"`
}

type HostGroupIds

type HostGroupIds []HostGroupId

type HostGroups

type HostGroups []HostGroup

type HostInterface

type HostInterface struct {
	HostId      string        `json:"hostid"`
	InterfaceId string        `json:"interfaceid"`
	DNS         string        `json:"dns"`
	IP          string        `json:"ip"`
	Main        int           `json:"main"`
	Port        string        `json:"port"`
	Type        InterfaceType `json:"type"`
	UseIP       int           `json:"useip"`
}

https://www.zabbix.com/documentation/2.2/manual/appendix/api/hostinterface/definitions

type HostInterfaces

type HostInterfaces []HostInterface

type Hosts

type Hosts []Host

type InterfaceType

type InterfaceType int
const (
	Agent InterfaceType = 1
	SNMP  InterfaceType = 2
	IPMI  InterfaceType = 3
	JMX   InterfaceType = 4
)

type InternalType

type InternalType int
const (
	NotInternal InternalType = 0
	Internal    InternalType = 1
)

type Item

type Item struct {
	ItemId      string    `json:"itemid,omitempty"`
	Delay       string    `json:"delay"`
	HostId      string    `json:"hostid"`
	InterfaceId string    `json:"interfaceid,omitempty"`
	Key         string    `json:"key_"`
	Name        string    `json:"name"`
	Type        ItemType  `json:"type"`
	ValueType   ValueType `json:"value_type"`
	DataType    DataType  `json:"data_type"`
	Delta       DeltaType `json:"delta"`
	Description string    `json:"description"`
	Error       string    `json:"error"`
	History     string    `json:"history,omitempty"`
	Trends      string    `json:"trends,omitempty"`
	Lastvalue   string    `json:"lastvalue"`
	Lastclock   int64     `json:"lastclock"`
	Prevvalue   string    `json:"prevvalue"`

	// Fields below used only when creating applications
	ApplicationIds []string `json:"applications,omitempty"`
}

https://www.zabbix.com/documentation/2.2/manual/appendix/api/item/definitions

type ItemType

type ItemType int

type Items

type Items []Item

func (Items) ByKey

func (items Items) ByKey() (res map[string]Item)

Converts slice to map by key. Panics if there are duplicate keys.

type Params

type Params map[string]interface{}

type Response

type Response struct {
	Jsonrpc string      `json:"jsonrpc"`
	Error   *Error      `json:"error"`
	Result  interface{} `json:"result"`
	Id      int32       `json:"id"`
}

type StatusType

type StatusType int

type ValueType

type ValueType int

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL