Zabbix Agent2
Zabbix Agent2在Zabbix 5.0版本推出,使用Go语言重写,旨在减少TCP连接数并提供改进的检查并发性。Agent2 引入了插件系统,简化了监控功能的扩展,支持对各种系统服务、数据库、IoT设备和Docker容器的深入监控。它具备开箱即用的证书监控、系统监控和文件属性监控功能,同时保持了与 Zabbix Agent 的兼容性。Agent 2 支持广泛的操作系统平台,便于安装和部署,为系统管理员提供了一个强大、灵活且高效的监控解决方案。
统信服务器操作系统信息
代码语言:javascript复制[root@localhost /]# cat /etc/os-release
PRETTY_NAME="UOS Server 20"
NAME="UOS Server 20"
VERSION_ID="20"
VERSION="20"
ID=uos
HOME_URL="https://www.chinauos.com/"
BUG_REPORT_URL="https://bbs.chinauos.com/"
VERSION_CODENAME=fuyu
PLATFORM_ID="platform:uel20"
[root@localhost /]# uosinfo
#################################################
Release: uos release 20 (fuyu)
Kernel : 5.10.0-46.uel20.x86_64
Build : UOS Server 20 (1060e) 20230606 amd64
#################################################
安装 go 编译环境
代码语言:javascript复制下载go程序压缩包
wget -P /opt https://studygolang.com/dl/golang/go1.19.linux-amd64.tar.gz
解压工程序压缩包
tar -zvxf /opt/go1.19.linux-amd64.tar.gz -C /usr/local/
设置环境变量
代码语言:javascript复制go程序环境变量
echo "export PATH=$PATH:/usr/local/go/bin" >>/etc/profile
重载环境变量
source /etc/profile
验证go环境
代码语言:javascript复制go env
显示如下,表明 go 语言环境配置成功
代码语言:javascript复制[root@localhost ~]# go env
GO111MODULE='on'
GOARCH='amd64'
GOBIN=''
GOCACHE='/root/.cache/go-build'
GOENV='/root/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/root/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/root/go'
GOPRIVATE=''
GOPROXY='https://goproxy.cn,direct'
GOROOT='/usr/local/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.21.9'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g '
CGO_ENABLED='1'
GOMOD='/dev/null'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build2434785988=/tmp/go-build -gno-record-gcc-switches'
配置go代理环境
代码语言:javascript复制go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct
Zabbix Agent2 编译安装
1, 下载Zabbix源码包
代码语言:javascript复制wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.29.tar.gz
2, 创建用户帐户
代码语言:javascript复制groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
3,创建Zabbix进程主目录
代码语言:javascript复制mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
chown zabbix:zabbix /usr/lib/zabbix
4, 编译安装zabbix_agent2
(1)安装依赖
代码语言:javascript复制dnf install pcre-devel
(2)解压tar包到/opt下
代码语言:javascript复制tar -zvxf zabbix-6.0.29.tar.gz -C /opt && cd /opt/zabbix-6.0.29/
(3)进行编译
代码语言:javascript复制./configure --prefix=/usr/local/zabbix-agent2 --enable-agent2 --with-openssl
(4)编译安装
代码语言:javascript复制make install
默认配置文件
代码语言:javascript复制/usr/local/zabbix-agent2/etc/zabbix_agent2.conf
二进制程序
代码语言:javascript复制/usr/local/zabbix-agent2/sbin/zabbix_agent2
5,配置 systemd 启动文件
代码语言:javascript复制cat << EOF > /usr/lib/systemd/system/zabbix-agent2.service
[Unit]
Description=Zabbix Agent 2
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/usr/local/zabbix-agent2/etc/zabbix_agent2.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent2
Type=simple
Restart=on-failure
PIDFile=/run/zabbix/zabbix_agent2.pid
KillMode=control-group
ExecStart=/usr/local/zabbix-agent2/sbin/zabbix_agent2 -c /usr/local/zabbix-agent2/etc/zabbix_agent2.conf
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
EOF
6,zabbix-agent2配置文件
代码语言:javascript复制egrep -v "*#|^$" /usr/local/zabbix-agent2/etc/zabbix_agent2.conf
Server=127.0.0.1
ServerActive=127.0.0.1
HostnameItem=system.hostname
HostMetadata=Linux
UnsafeUserParameters=1
UserParameter=CPU_TOP,ps auxc |head -n 1 && ps hauxc | sort -k3,3nr | head -n 5
UserParameter=MEM_TOP,ps auxc |head -n 1 && ps hauxc | sort -k4,4nr | head -n 5
ControlSocket=/tmp/agent.sock
Include=./zabbix_agent2.d/plugins.d/*.conf
7,启动并设置开机启动
代码语言:javascript复制systemctl start zabbix-agent2 && systemctl enable --now zabbix-agent2
8,zabbix_agent2 测试
代码语言:javascript复制[root@localhost sbin]# pwd
/usr/local/zabbix-agent2/sbin
[root@localhost sbin]# ./zabbix_agent2 -t agent.ping
agent.ping
9,zabbix-agent2 自定义监控项键值
代码语言:javascript复制vim /usr/local/zabbix_agent2/etc/zabbix_agent2.conf
UnsafeUserParameters=1
UserParameter=CPU_TOP,ps auxc |head -n 1 && ps hauxc | sort -k3,3nr | head -n 5
UserParameter=MEM_TOP,ps auxc |head -n 1 && ps hauxc | sort -k4,4nr | head -n 5
重启zabbix-agent2
代码语言:javascript复制systemctl restart zabbix-agent2
zabbix_agent2 -t 测试
代码语言:javascript复制[root@localhost sbin]# pwd
/usr/local/zabbix-agent2/sbin
[root@localhost sbin]# ./zabbix_agent2 -t MEM_TOP
- -c 指定配置文件
./zabbix_agent2 -t MEM_TOP -c /usr/local/zabbix-agent2/etc/zabbix_agent2.conf
10,Zabbix Agent2 工作模式
- 主动(Active):agent请求server获取主动的监控项列表,server 将监控项回复给agent,agent将监控项内需要检测的数据提交给server/proxy。
- 被动(Passive):server向agent请求获取监控项的数据,agent返回数据。
- go安装文档
https://go.dev/doc/install
- go程序下载
https://go.dev/dl/
- zabbix_agent2源码包下载
https://www.zabbix.com/download_sources#60LTS
- zabbix_agent2安装文档
https://www.zabbix.com/documentation/6.0/en/manual/installation/install