在开始添加监控主机之前,我们需要确保Zabbix服务器端已经正确安装并运行。这里我使用的是Zabbix 6.0 LTS版本,这个版本提供了更稳定的性能和更丰富的功能。对于监控代理(agent)的选择,我推荐使用Zabbix官方提供的agent2,它相比传统agent有更好的性能和更丰富的功能集。
注意:在添加主机前,请确保被监控主机和Zabbix服务器之间的网络连通性正常,特别是防火墙设置不会阻挡监控数据的传输。
首先,我们需要在被监控主机上安装Zabbix agent。以CentOS 7系统为例,安装步骤如下:
bash复制# 添加Zabbix官方仓库
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-1.el7.noarch.rpm
# 安装Zabbix agent2
yum install zabbix-agent2 zabbix-agent2-plugin-*
# 启动服务并设置开机自启
systemctl enable --now zabbix-agent2
安装完成后,我们需要配置agent的配置文件,通常位于/etc/zabbix/zabbix_agent2.conf。关键的配置参数包括:
code复制Server=192.168.1.100 # Zabbix服务器IP
ServerActive=192.168.1.100 # 主动模式下的服务器IP
Hostname=web-server-01 # 必须与Zabbix web界面中配置的主机名一致
使用管理员账号登录Zabbix Web界面后,导航至"配置"→"主机"页面。点击右上角的"创建主机"按钮开始添加新主机。
在主机配置页面,有几个关键字段需要填写:
在"接口"部分,我们需要添加agent的接口信息:
提示:对于大规模部署,建议使用DNS名称而非IP地址,这样在IP变更时不需要修改每个主机的配置。
模板是Zabbix监控的核心功能之一,它预定义了监控项、触发器和图形。在"模板"标签页中,我们可以为当前主机添加适合的模板:
我通常会根据主机的实际用途添加多个模板。例如,对于Web服务器,我会添加OS模板、Nginx/Apache模板和PHP模板。
宏变量可以让我们更灵活地管理监控配置。在主机配置的"宏"标签页中,我们可以定义主机级别的宏:
这些宏可以在监控项、触发器等配置中引用,当需要批量修改时非常方便。
Zabbix提供了资产记录功能,可以帮助我们管理主机的硬件和软件信息。在"资产记录"标签页中,我们可以记录:
虽然这部分信息不是监控必须的,但对于IT资产管理非常有帮助。
对于安全性要求较高的环境,我们可以配置Zabbix agent与服务器之间的加密通信。这需要在agent和服务器两端进行配置:
bash复制openssl rand -hex 32 > /etc/zabbix/zabbix_agent2.psk
code复制TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=my_psk_identity
TLSPSKFile=/etc/zabbix/zabbix_agent2.psk
添加主机后,我们可以立即测试几个关键监控项是否正常工作:
如果这些基础监控项没有数据,说明agent通信可能有问题。
在实际操作中,我遇到过几个典型问题及解决方法:
主机显示不可用:
systemctl status zabbix-agent2telnet zabbix_server_ip 10050firewall-cmd --list-all监控项无数据:
journalctl -u zabbix-agent2 -fzabbix_agent2 -t key_namesetenforce 0临时关闭测试性能数据不准确:
ntpdate -u pool.ntp.org当确认基础监控项工作正常后,我们可以开始配置更丰富的数据展示:
我特别喜欢使用Zabbix的"最新数据"功能快速查看原始监控值,这在排查问题时非常有用。
对于大规模环境,手动添加主机效率太低。Zabbix提供了自动发现功能:
自动发现可以大大减少运维工作量,但需要谨慎配置以避免误发现。
Zabbix提供了完善的API接口,我们可以编写脚本实现批量主机管理:
python复制from zabbix_api import ZabbixAPI
# 连接Zabbix API
zapi = ZabbixAPI("http://zabbix-server/zabbix")
zapi.login("Admin", "zabbix")
# 批量添加主机
hosts = ["web01", "web02", "db01"]
for host in hosts:
zapi.host.create({
"host": host,
"interfaces": [{
"type": 1,
"main": 1,
"useip": 1,
"ip": "192.168.1." + host[-2:],
"dns": "",
"port": "10050"
}],
"groups": [{
"groupid": "2" # Linux servers组
}],
"templates": [{
"templateid": "10001" # Template OS Linux
}]
})
对于生产环境,我建议对Zabbix配置进行版本控制:
zabbix_server -R config_cache_reload这样可以在配置出错时快速回滚,也方便在不同环境间同步配置。
不是所有可监控的指标都有实际价值。根据我的经验,应该重点关注:
避免过度监控,这会导致性能开销和告警噪音。
合理的告警阈值可以减少误报。我的经验法则是:
Zabbix默认会保存所有监控数据,这可能导致数据库快速增长。建议:
这些配置可以在"管理"→"常规"→"Housekeeping"中设置。