Zabbix Agent簡單自定義插件教程!
準備環境
|
內容 |
版本 |
|
Centos7 |
CentOS Linux release 7.9.2009 (Core) |
|
Golang |
go1.24.2 |
|
Zabbix Agent2 |
6.0.25 |
內容
使用插件執行whoami命令
具體步驟
1. 編寫 Go 代碼
創建一個 Go 文件,例如 whoami_plugin.go,并在其中編寫代碼。此代碼會執行 whoami 命令,然后將結果返回。
package main
import (
"bufio"
"bytes"
"log"
"os/exec"
)
func main() {
// 創建一個執行 whoami 命令的對象
cmd := exec.Command("whoami")
// 用于存儲命令執行結果的緩沖區
var out bytes.Buffer
cmd.Stdout = &out
// 執行命令并捕獲錯誤
err := cmd.Run()
if err != nil {
log.Fatalf("執行 whoami 命令時出錯: %v", err)
}
// 創建一個掃描器來讀取命令輸出
scanner := bufio.NewScanner(&out)
for scanner.Scan() {
// 輸出命令執行結果
println(scanner.Text())
}
// 檢查掃描過程中是否有錯誤
if err := scanner.Err(); err != nil {
log.Fatalf("讀取 whoami 命令輸出時出錯: %v", err)
}
}
2. 編譯代碼
在 CentOS 7 系統上,使用以下命令來編譯 Go 代碼:
go build -o whoami_plugin whoami_plugin.go
此命令會生成一個名為 whoami_plugin 的可執行文件。

3. 配置 Zabbix Agent
3.1 創建自定義配置文件
在 /itops/zabbix/etc/zabbix_agentd.conf.d/(視實際目錄為準) 目錄下創建一個新的配置文件,例如 whoami_plugin.conf:
touch /itops/zabbix/etc/zabbix_agentd.conf.d/whoami_plugin.conf
3.2 編輯配置文件
在 whoami_plugin.conf 文件中添加以下內容:
UserParameter=whoami.command,/home/itops/test/whoami_plugin
這里的 /home/itops/test 要替換為實際生成的 whoami_plugin 可執行文件的路徑。
3.3 重啟 Zabbix Agent
完成配置文件的編輯后,重啟 Zabbix Agent 服務,使配置生效:
systemctl restart zabbix-agent
4. 驗證插件
在 Zabbix Server 上,使用 zabbix_get 工具來驗證插件是否正常工作:
/itops/zabbix/bin/zabbix_get -s 127.0.0.1 -k whoami.command

其他說明
Zabbix Agent2中需要注意zabbix官方提供的兩個插件內容:
git.zabbix.com/ap/plugin-support/plugin
這個包提供了 Zabbix 插件開發所需的基礎接口和結構體,在代碼里有以下用途:
l 定義插件基礎結構:type Plugin struct { plugin.Base } 借助 plugin.Base 結構體,讓自定義的 Plugin 類型能繼承 Zabbix 插件的基礎屬性和方法。
l 注冊監控指標:plugin.RegisterMetrics 函數用于把自定義的監控指標注冊到 Zabbix 代理,這樣 Zabbix 代理就能識別并請求這些指標。
l 實現導出方法:(p *Plugin) Export 方法實現了 plugin.Exporter 接口里的 Export 方法,用來處理 Zabbix 代理發送的監控指標請求。
git.zabbix.com/ap/plugin-support/plugin/container
此包提供了管理 Zabbix 插件的容器功能,在代碼里的作用如下:
l 創建插件處理器:container.NewHandler(impl.Name()) 函數依據插件名稱創建一個新的插件處理器實例,這個處理器負責處理插件的初始化、生命周期管理等操作。
l 執行插件邏輯:h.Execute() 方法啟動插件,讓插件能處理來自 Zabbix 代理的請求。
后面會帶來關于以上兩個插件的代碼以及使用說明

浙公網安備 33010602011771號