63 lines
1.2 KiB
Go

package plugin
import (
"golang.zabbix.com/sdk/errs"
"golang.zabbix.com/sdk/metric"
"golang.zabbix.com/sdk/plugin"
"golang.zabbix.com/sdk/plugin/container"
"onvif-agent/config"
)
var (
PluginName = config.Conf.Integrations.ZabbixAgent.Plugin.Name
)
type zabbixAgentPlugin struct {
plugin.Base
}
// Launch launches the plugin. Blocks until plugin execution has finished.
func Launch() error {
p := &zabbixAgentPlugin{}
err := p.registerMetrics()
if err != nil {
return err
}
h, err := container.NewHandler(PluginName)
if err != nil {
return errs.Wrap(err, "failed to create new handler")
}
p.Logger = &h
err = h.Execute()
if err != nil {
return errs.Wrap(err, "failed to execute plugin handler")
}
return nil
}
func (p *zabbixAgentPlugin) registerMetrics() error {
metricSet := metric.MetricSet{
"onvif.client": metric.New(
"ONVIF client",
[]*metric.Param{
metric.NewParam("method", "HTTP method"),
metric.NewParam("url", "URL"),
metric.NewParam("data", "Request data"),
},
false,
),
}
err := plugin.RegisterMetrics(p, PluginName, metricSet.List()...)
if err != nil {
return errs.Wrap(err, "failed to register metrics")
}
return nil
}