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 }