§¿§ä§à §á§à§ê§Ñ§Ô§à§Ó§à§Ö §â§å§Ü§à§Ó§à§Õ§ã§ä§Ó§à §á§à §ã§à§Ù§Õ§Ñ§ß§Ú§ð §á§â§à§ã§ä§à§Ô§à §Ù§Ñ§Ô§â§å§Ø§Ñ§Ö§Þ§à§Ô§à §á§Ý§Ñ§Ô§Ú§ß§Ñ §Õ§Ý§ñ Áú»¢¶Ä²© §Ñ§Ô§Ö§ß§ä§Ñ 2.
§£ §ç§à§Õ§Ö §ï§ä§à§Ô§à §â§å§Ü§à§Ó§à§Õ§ã§ä§Ó§Ñ §Ó§í §Õ§à§Ò§Ñ§Ó§Ú§ä§Ö §ß§à§Ó§í§Û §Ù§Ñ§Ô§â§å§Ø§Ñ§Ö§Þ§í§Û §á§Ý§Ñ§Ô§Ú§ß MyIP. §±§Ý§Ñ§Ô§Ú§ß §Ò§å§Õ§Ö§ä §â§Ö§Ñ§Ý§Ú§Ù§à§Ó§í§Ó§Ñ§ä§î 1 §Þ§Ö§ä§â§Ú§Ü§å §á§à§Õ §ß§Ñ§Ù§Ó§Ñ§ß§Ú§Ö§Þ myip, §Ü§à§ä§à§â§Ñ§ñ §Ó§à§Ù§Ó§â§Ñ§ë§Ñ§Ö§ä §Ó§ß§Ö§ê§ß§Ú§Û IP-§Ñ§Õ§â§Ö§ã §ç§à§ã§ä§Ñ, §ß§Ñ §Ü§à§ä§à§â§à§Þ §â§Ñ§Ò§à§ä§Ñ§Ö§ä Áú»¢¶Ä²© §Ñ§Ô§Ö§ß§ä 2.
§£ §ï§ä§à§Þ §â§Ñ§Ù§Õ§Ö§Ý§Ö §Ó§í §å§Ù§ß§Ñ§Ö§ä§Ö, §Ü§Ñ§Ü §ß§Ñ§á§Ú§ã§Ñ§ä§î §á§Ý§Ñ§Ô§Ú§ß, §Ü§à§ä§à§â§í§Û §Õ§à§Ò§Ñ§Ó§Ý§ñ§Ö§ä §ß§à§Ó§å§ð §Þ§Ö§ä§â§Ú§Ü§å §Ó Áú»¢¶Ä²© agent 2.
§³§à§Ù§Õ§Ñ§Û§ä§Ö §ß§à§Ó§å§ð §Õ§Ú§â§Ö§Ü§ä§à§â§Ú§ð myip §Ó /usr/local/zabbix/go/plugins/.
§³§à§Ù§Õ§Ñ§Û§ä§Ö §æ§Ñ§Û§Ý main.go §Ó §Õ§Ú§â§Ö§Ü§ä§à§â§Ú§Ú myip §Ú §à§á§â§Ö§Õ§Ö§Ý§Ú§ä§Ö §Ú§Þ§ñ §Ó§Ñ§ê§Ö§Ô§à Go-§á§Ñ§Ü§Ö§ä§Ñ.
/usr/local/zabbix/go/plugins/myip/main.go
§°§ã§ä§Ñ§Ó§î§ä§Ö §æ§Ñ§Û§Ý §à§ä§Ü§â§í§ä§í§Þ, §é§ä§à§Ò§í §Õ§à§Ò§Ñ§Ó§Ú§ä§î §Ò§à§Ý§î§ê§Ö §ã§ä§â§à§Ü, §Ü§Ñ§Ü §à§á§Ú§ã§Ñ§ß§à §Ó §ã§Ý§Ö§Õ§å§ð§ë§Ú§ç §ê§Ñ§Ô§Ñ§ç.
/usr/local/zabbix/go/plugins/myip/main.go
package main
import (
"fmt"
"io/ioutil"
"net/http"
"git.zabbix.com/ap/plugin-support/plugin/container"
"git.zabbix.com/ap/plugin-support/plugin"
)
/usr/local/zabbix/go/plugins/myip/main.go
package main
import (
"fmt"
"io/ioutil"
"net/http"
"git.zabbix.com/ap/plugin-support/plugin/container"
"git.zabbix.com/ap/plugin-support/plugin"
)
type Plugin struct {
plugin.Base
}
var impl Plugin
/usr/local/zabbix/go/plugins/myip/main.go
package main
import (
"fmt"
"io/ioutil"
"net/http"
"git.zabbix.com/ap/plugin-support/plugin/container"
"git.zabbix.com/ap/plugin-support/plugin"
)
type Plugin struct {
plugin.Base
}
var impl Plugin
func (p *Plugin) Export(key string, params []string, ctx plugin.ContextProvider) (result interface{}, err error)
/usr/local/zabbix/go/plugins/myip/main.go
package main
import (
"fmt"
"io/ioutil"
"net/http"
"git.zabbix.com/ap/plugin-support/plugin/container"
"git.zabbix.com/ap/plugin-support/plugin"
)
type Plugin struct {
plugin.Base
}
var impl Plugin
func (p *Plugin) Export(key string, params []string, ctx plugin.ContextProvider) (result interface{}, err error){
p.Infof("received request to handle %s key with %d parameters", key, len(params))
}
/usr/local/zabbix/go/plugins/myip/main.go
package main
import (
"fmt"
"io/ioutil"
"net/http"
"git.zabbix.com/ap/plugin-support/plugin/container"
"git.zabbix.com/ap/plugin-support/plugin"
)
type Plugin struct {
plugin.Base
}
var impl Plugin
func (p *Plugin) Export(key string, params []string, ctx plugin.ContextProvider) (result interface{}, err error){
p.Infof("received request to handle %s key with %d parameters", key, len(params))
resp, err := http.Get("https://api.ipify.org")
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
return string(body), nil
}
§°§á§Ú§ã§Ñ§ß§Ú§Ö §á§Ñ§â§Ñ§Þ§Ö§ä§â§à§Ó §Þ§Ö§ä§à§Õ§Ñ plugin.RegisterMetrics:
§¥§Ý§ñ §â§Ö§Ô§Ú§ã§ä§â§Ñ§è§Ú§Ú §ß§Ö§ã§Ü§à§Ý§î§Ü§Ú§ç §Þ§Ö§ä§â§Ú§Ü §á§à§Ó§ä§à§â§Ú§ä§Ö §á§Ñ§â§Ñ§Þ§Ö§ä§â§í metric name §Ú description §Õ§Ý§ñ §Ü§Ñ§Ø§Õ§à§Û §Þ§Ö§ä§â§Ú§Ü§Ú. §¯§Ñ§á§â§Ú§Þ§Ö§â: plugin.RegisterMetrics(&impl, "Myip", "metric.one", "§°§á§Ú§ã§Ñ§ß§Ú§Ö §Þ§Ö§ä§â§Ú§Ü§Ú §à§Õ§Ú§ß.", "metric.two", "§°§á§Ú§ã§Ñ§ß§Ú§Ö §Þ§Ö§ä§â§Ú§Ü§Ú §Õ§Ó§Ñ.")
/usr/local/zabbix/go/plugins/myip/main.go
package main
import (
"fmt"
"io/ioutil"
"net/http"
"git.zabbix.com/ap/plugin-support/plugin/container"
"git.zabbix.com/ap/plugin-support/plugin"
)
type Plugin struct {
plugin.Base
}
var impl Plugin
func (p *Plugin) Export(key string, params []string, ctx plugin.ContextProvider) (result interface{}, err error){
p.Infof("received request to handle %s key with %d parameters", key, len(params))
resp, err := http.Get("https://api.ipify.org")
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
return string(body), nil
}
func init() {
plugin.RegisterMetrics(&impl, "Myip", "myip", "Return the external IP address of the host where agent is running.")
}
§°§á§â§Ö§Õ§Ö§Ý§Ö§ß§Ú§Ö §æ§å§ß§Ü§è§Ú§Ú main() §ñ§Ó§Ý§ñ§Ö§ä§ã§ñ §à§Ò§ñ§Ù§Ñ§ä§Ö§Ý§î§ß§í§Þ.
/usr/local/zabbix/go/plugins/myip/main.go
package main
import (
"fmt"
"io/ioutil"
"net/http"
"git.zabbix.com/ap/plugin-support/plugin/container"
"git.zabbix.com/ap/plugin-support/plugin"
)
type Plugin struct {
plugin.Base
}
var impl Plugin
func (p *Plugin) Export(key string, params []string, ctx plugin.ContextProvider) (result interface{}, err error){
p.Infof("received request to handle %s key with %d parameters", key, len(params))
resp, err := http.Get("https://api.ipify.org")
if err != nil {
return nil, err
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
return nil, err
}
return string(body), nil
}
func init() {
plugin.RegisterMetrics(&impl, "Myip", "myip", "Return the external IP address of the host where agent is running.")
}
func main() {
h, err := container.NewHandler(impl.Name())
if err != nil {
panic(fmt.Sprintf("failed to create plugin handler %s", err.Error()))
}
impl.Logger = &h
err = h.Execute()
if err != nil {
panic(fmt.Sprintf("failed to execute plugin handler %s", err.Error()))
}
}
§£ §ï§ä§à§Þ §â§Ñ§Ù§Õ§Ö§Ý§Ö §Ó§í §å§Ù§ß§Ñ§Ö§ä§Ö, §Ü§Ñ§Ü §ã§Ü§à§Þ§á§Ú§Ý§Ú§â§à§Ó§Ñ§ä§î §á§Ý§Ñ§Ô§Ú§ß.
go mod init myip
GOPROXY=direct go get git.zabbix.com/ap/plugin-support/plugin@branchname
go mod tidy
go build
§µ§Ò§Ö§Õ§Ú§ä§Ö§ã§î, §é§ä§à §å§Ü§Ñ§Ù§Ñ§Ý§Ú §á§â§Ñ§Ó§Ú§Ý§î§ß§à§Ö §ß§Ñ§Ù§Ó§Ñ§ß§Ú§Ö §Ó§Ö§ä§Ü§Ú, §ä§à §Ö§ã§ä§î §Ù§Ñ§Þ§Ö§ß§Ú§ä§Ö branchname
(§ã§Þ. §ã§ä§â§à§Ü§å 2) §ß§Ñ §à§Õ§ß§à §Ú§Ù §ã§Ý§Ö§Õ§å§ð§ë§Ú§ç:
release/*
- §Õ§Ý§ñ §ã§ä§Ñ§Ò§Ú§Ý§î§ß§à§Û §â§Ö§Ý§Ú§Ù§ß§à§Û §Ó§Ö§ä§Ü§Ú, §Ô§Õ§Ö "*" ¡ª §ï§ä§à §Ó§Ö§â§ã§Ú§ñ §â§Ö§Ý§Ú§Ù§Ñ (§ß§Ñ§á§â§Ú§Þ§Ö§â, 6.4
)master
- §Õ§Ý§ñ §Ó§Ö§ä§Ü§Ú master -<§ç§ï§ê §Ü§à§Þ§Þ§Ú§ä§Ñ>
- §Õ§Ý§ñ §Ü§à§ß§Ü§â§Ö§ä§ß§à§Û §Ó§Ö§â§ã§Ú§Ú §Ü§à§Þ§Þ§Ú§ä§Ñ (§Ú§ã§á§à§Ý§î§Ù§å§Û§ä§Ö §à§á§â§Ö§Õ§Ö§Ý§Ö§ß§ß§í§Û §ç§ï§ê §Ü§à§Þ§Þ§Ú§ä§Ñ)§£§í§Ó§à§Õ §Õ§à§Ý§Ø§Ö§ß §Ò§í§ä§î §á§â§Ú§Þ§Ö§â§ß§à §ä§Ñ§Ü§Ú§Þ:
go: creating new go.mod: module myip
go: to add module requirements and sums:
go mod tidy
go: finding module for package git.zabbix.com/ap/plugin-support/plugin/container
go: finding module for package git.zabbix.com/ap/plugin-support/plugin
go: found git.zabbix.com/ap/plugin-support/plugin in git.zabbix.com/ap/plugin-support v0.0.0-20220608100211-35b8bffd7ad0
go: found git.zabbix.com/ap/plugin-support/plugin/container in git.zabbix.com/ap/plugin-support v0.0.0-20220608100211-35b8bffd7ad0
§³§à§Ù§Õ§Ñ§Û§ä§Ö §Ú§ã§á§à§Ý§ß§ñ§Ö§Þ§í§Û §æ§Ñ§Û§Ý myip §Õ§Ý§ñ §Ù§Ñ§Ô§â§å§Ø§Ñ§Ö§Þ§à§Ô§à §á§Ý§Ñ§Ô§Ú§ß§Ñ.
§µ§Ü§Ñ§Ø§Ú§ä§Ö §á§å§ä§î §Ü §æ§Ñ§Û§Ý§å §Ü§à§ß§æ§Ú§Ô§å§â§Ñ§è§Ú§Ú §á§Ý§Ñ§Ô§Ú§ß§Ñ §Ó §á§Ñ§â§Ñ§Þ§Ö§ä§â§Ö Plugins.Myip.System.Path §æ§Ñ§Û§Ý§Ñ §Ü§à§ß§æ§Ú§Ô§å§â§Ñ§è§Ú§Ú Áú»¢¶Ä²© agent 2.
§¯§Ñ§Ù§Ó§Ñ§ß§Ú§Ö §á§Ý§Ñ§Ô§Ú§ß§Ñ §Ó §á§Ñ§â§Ñ§Þ§Ö§ä§â§Ö §Ü§à§ß§æ§Ú§Ô§å§â§Ñ§è§Ú§Ú (§Ó §ï§ä§à§Þ §â§å§Ü§à§Ó§à§Õ§ã§ä§Ó§Ö - Myip) §Õ§à§Ý§Ø§ß§à §ã§à§Ó§á§Ñ§Õ§Ñ§ä§î §ã §Ú§Þ§Ö§ß§Ö§Þ §á§Ý§Ñ§Ô§Ú§ß§Ñ, §à§á§â§Ö§Õ§Ö§Ý§Ö§ß§ß§í§Þ §Ó §æ§å§ß§Ü§è§Ú§Ú plugin.RegisterMetrics().
echo 'Plugins.Myip.System.Path=/usr/local/zabbix/go/plugins/myip/myip' > /etc/zabbix_agent2.d/plugins.d/myip.conf
§°§ä§Ó§Ö§ä §Õ§à§Ý§Ø§Ö§ß §ã§à§Õ§Ö§â§Ø§Ñ§ä§î §Ó§ß§Ö§ê§ß§Ú§Û IP-§Ñ§Õ§â§Ö§ã §Ó§Ñ§ê§Ö§Ô§à §å§Ù§Ý§Ñ §ã§Ö§ä§Ú.
§£ §ã§Ý§å§é§Ñ§Ö §à§ê§Ú§Ò§Ü§Ú §á§â§à§Ó§Ö§â§î§ä§Ö, §Ö§ã§ä§î §Ý§Ú §å §á§à§Ý§î§Ù§à§Ó§Ñ§ä§Ö§Ý§ñ zabbix §á§â§Ñ§Ó§Ñ §ß§Ñ §Õ§à§ã§ä§å§á §Ü §Õ§Ú§â§Ö§Ü§ä§à§â§Ú§Ú /usr/local/zabbix/go/plugins/myip.