63 lines
1.2 KiB
Go
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
|
|
}
|