Zabbix部署2¶
一. 被监控端zabbix_agent主机上安装zabbix_agent¶
1. 安装zabbix_agent¶
1) 配置阿里云epel源¶
# 1. 备份
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
# 2. 下载新repo 到/etc/yum.repos.d/
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-9.noarch.rpm
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
2) 安装依赖工具¶
yum -y install pcre pcre-devel net-snmp net-snmp-devel curl-devel libssh2-devel libevent libevent-devel curl curl-devel perl-DBI gcc make
3) 创建用户¶
4) zabbix_agent端编译安装¶
a. 下载zabbix7.0.29
# 1. 下载源码包
wget -O zabbix-7.0.29.tar.gz https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.29.tar.gz
# 2. 下载官方 sha256 校验文件
wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.29.tar.gz.sha256
# 3. 校验:-c 读取 sha256 文件里的值,和同名文件比对,输出 OK 即通过
printf '%s %s\n' "$(cat zabbix-7.0.29.tar.gz.sha256)" "zabbix-7.0.29.tar.gz" | sha256sum -c -
b. 解压编译安装
# 1. 解压
tar xf zabbix-7.0.29.tar.gz
# 2. 配置
cd zabbix-7.0.29
./configure --prefix=/usr/local/zabbix --enable-agent
# 3. 编译安装
make && make install
c. 创建软链接
5) 配置zabbix_agent¶
先备份并修改/usr/local/zabbix/etc/zabbix_agentd.conf
我们需要改的行有
# PidFile=/tmp/zabbix_agentd.pid
# 11行。取消注释后修改为PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/tmp/zabbix_agentd.log
# 30行。修改为LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=127.0.0.1
# 113行。这里写zabbix_server的地址。即Server=192.168.100.103
# ListenPort=10050
# 127行,取消注释
ServerActive=127.0.0.1
# 169行,也是写zabbix_server的地址。ServerActive=192.168.100.103
Hostname=Zabbix server
# 180行。这里同网页的设置。可以写成Hostname=Zabbix_agent
# Timeout=3
# 301行。改为Timeout=15
# Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf
# 551行。取消注释
可以使用如下命令
sed -i -e 's@# PidFile=/tmp/zabbix_agentd\.pid@PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid@' \
-e 's@LogFile=/tmp/zabbix_agentd\.log@LogFile=/usr/local/zabbix/logs/zabbix_agentd.log@' \
-e 's@Server=127\.0\.0\.1@Server=192.168.100.103@' \
-e 's@# ListenPort=10050@ListenPort=10050@' \
-e 's@ServerActive=127\.0\.0\.1@ServerActive=192.168.100.103@' \
-e 's@Hostname=Zabbix server@Hostname=Zabbix_agent@' \
-e 's@# Timeout=3@Timeout=15@' \
-e 's@# Include=/usr/local/etc/zabbix_agentd\.conf\.d/\*\.conf@Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf@' \
/usr/local/zabbix/etc/zabbix_agentd.conf
或者粘贴进去
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.100.103
ListenPort=10050
ServerActive=192.168.100.103
Hostname=Zabbix_agent
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
2. 创建数据存放目录,并赋权¶
mkdir -p /usr/local/zabbix/etc/zabbix_agentd.conf.d
mkdir /usr/local/zabbix/logs
chown -R zabbix:zabbix /usr/local/zabbix/logs
3. 添加zabbix_agent启动脚本,然后启动服务¶
# 1. 写入启动文件
cat << 'EOF' | tee /lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/zabbix/logs/zabbix_agentd.pid
User=zabbix
Group=zabbix
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf
ExecStop=/bin/kill-SIGTERM $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 2. 重载
systemctl daemon-reload
# 3. 启动服务
systemctl start zabbix-agent.service
# 4. 设置开机自启动
systemctl enable zabbix-agent.service
4. 查看服务¶
# 查看端口占用
[root@7 zabbix-7.0.29]# ss -tuanp|grep zabbix
tcp LISTEN 0 4096 0.0.0.0:10050 0.0.0.0:* users:(("zabbix_agentd",pid=30382,fd=4),("zabbix_agentd",pid=30381,fd=4),("zabbix_agentd",pid=30380,fd=4),("zabbix_agentd",pid=30379,fd=4),("zabbix_agentd",pid=30378,fd=4),("zabbix_agentd",pid=30377,fd=4),("zabbix_agentd",pid=30376,fd=4),
("zabbix_agentd",pid=30375,fd=4),("zabbix_agentd",pid=30374,fd=4),("zabbix_agentd",pid=30373,fd=4),("zabbix_agentd",pid=30372,fd=4),("zabbix_agentd",pid=30371,fd=4),("zabbix_agentd",pid=30370,fd=4))
# 查看进程
[root@7 zabbix-7.0.29]# ps -aux|grep 'zabbix'
zabbix 30370 0.0 0.1 4872 2048 ? S 19:31 0:00 /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf
zabbix 30371 0.0 0.1 4872 2048 ? S 19:31 0:00 /usr/local/zabbix/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix 30372 0.0 0.1 4872 1920 ? S 19:31 0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix 30373 0.0 0.1 4872 1920 ? S 19:31 0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix 30374 0.0 0.1 4872 1920 ? S 19:31 0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix 30375 0.0 0.1 4872 1920 ? S 19:31 0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #4 [waiting for connection]
zabbix 30376 0.0 0.1 4872 1920 ? S 19:31 0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #5 [waiting for connection]
zabbix 30377 0.0 0.1 4872 1920 ? S 19:31 0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #6 [waiting for connection]
zabbix 30378 0.0 0.1 4872 1792 ? S 19:31 0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #7 [waiting for connection]
zabbix 30379 0.0 0.1 4872 1920 ? S 19:31 0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #8 [waiting for connection]
zabbix 30380 0.0 0.1 4872 1920 ? S 19:31 0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #9 [waiting for connection]
zabbix 30381 0.0 0.1 4872 1920 ? S 19:31 0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #10 [waiting for connection]
zabbix 30382 0.0 0.1 4872 2048 ? S 19:31 0:00 /usr/local/zabbix/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root 30386 0.0 0.1 6652 2304 pts/0 S+ 19:32 0:00 grep --color=auto zabbix
5. 测试zabbix_server端与zabbix_agent端的通信¶
[root@5 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.100.106 -p 10050 -k system.uname
Linux 7 5.14.0-570.17.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Fri May 23 22:47:01 UTC 2025 x86_64
6. 登录zabbix_server的Web界面配置zabbix_agent主机¶
1) 创建主机¶
zabbix_server: 192.168.100.103
a. 创建主机

b. 配置被监控主机的模板和端口


二. Zabbix的一些概念¶
1. 常见进程¶
默认情况下zabbix包含五个程序: zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选项,需要额外安装,我们下面分别介绍他们各自的作用
(1) zabbix_agentd:
客户端守护进程,此进程收集客户端数据,例如CPU负载、内存、硬盘使用情况等
(2) zabbix_get
zabbix工具,单独使用的命令。通常在server或者proxy端执行获取远程客户端信息的命令。通常用于用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容方式来做故障排查
(3) zabbix_sender
zabbix工具,用于发送数据给server或者proxy。通常用于耗时比较长的检查。很多检查非常耗时间,会导致zabbix超时。于是我们在脚本执行完毕后,使用sender主动提交数据
(4) zabbix_server
zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都会提交给server
备注:当然不是所有的数据都主动提交给zabbix_server,也有的是server主动去获取数据
(5) zabbox_proxy
zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要吧收集到的数据提交给server
(6) zabbix_java_gateway
zabbix2.0之后引入的一个功能。顾名思义也就是Java网关,类似于agentd。但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。
2. zabbix监控环境中的基本概念¶
- 主机(host): 要监控的网络设备或主机,可由IP或DNS名称指定
- 主机集群(host group): 主机的逻辑容器,可以包含主机和模板
- 监控项(item): 一个特定监控指标的相关数据;这些数据来自于被监控的对象;item是zabbix进行数据收集的核心。相对于某个监控对象,每个item都有"key"标识
- 触发器(trigger): 一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范畴内,也就是阈值;接受的数据量大于阈值时,触发器状态从"OK"变为"problem",当数据再次恢复到合理范围,优惠转变为"OK"
- 事件(event): 触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent自动注册等
- 动作(action): 指对于特定事件先定义的处理方法,如发送通知,何时执行操作
- 报警升级(escalation): 发送警报或者执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等
- 媒介(media): 发送通知的手段或者通道,如Email、Jabber或者SMS等
- 通知(notification): 通过特定媒介向用户发送的有关某事件的信息
- 远程命令(remote command): 预定义的命令,可在被监控的主机处于特定条件下时自动执行
- 模板(template): 用于快速定义被监控的主机的预设条目集合。通常包含了item、trigger、graph、screen、appication以及low-level discovery rule; 模板可以直接链接至某个主机
- 应用(application): 一组item的集合
- web场景(web scennario): 用于检测web站点可用性的一个或多个HTTP请求
- 前端(frontend): Zabbix的web接口。