步骤:
1. 登录Zabbix Web界面
2. 导航到:配置 → 主机 → 创建主机
必填项:
- 主机名称:唯一标识(如:server-01)
- 可见名称:显示名称(如:生产服务器)
- 群组:选择所属监控组(如:Linux servers)
- Agent接口:添加监控代理地址
- IP地址:192.168.1.100
- 端口:10050
选择监控模板:
- Linux by Zabbix agent
- Template App Apache
- Template App MySQL
- 等...
可以通过CSV导入或API批量添加:
# Python API示例
from zabbix_api import ZabbixAPI
api = ZabbixAPI("http://zabbix-server/zabbix")
api.login("Admin", "zabbix")
hosts = [
{"host": "web01", "ip": "192.168.1.101", "groupid": "2"},
{"host": "web02", "ip": "192.168.1.102", "groupid": "2"}
]
for host in hosts:
api.host.create({
"host": host["host"],
"interfaces": [{
"type": 1,
"main": 1,
"useip": 1,
"ip": host["ip"],
"dns": "",
"port": "10050"
}],
"groups": [{"groupid": host["groupid"]}],
"templates": [{"templateid": "10001"}]
})
# 编辑Agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
# 添加用户自定义参数
UserParameter=my.custom.item[*],/usr/local/bin/check_script.sh $1 $2
# 重启Agent
systemctl restart zabbix-agent
1. Zabbix agent # 通过Agent获取
2. SNMP # SNMP协议
3. JMX # Java应用监控
4. IPMI # 硬件监控
5. 简单检查 # HTTP、TCP等
6. 数据库监控 # ODBC方式
7. HTTP agent # 获取URL内容
8. SSH/ Telnet # 远程执行命令
1. 配置 → 主机 → 选择主机 → 监控项
2. 点击"创建监控项"
3. 填写监控项信息
# Agent端创建脚本
vim /usr/local/bin/check_cpu_temp.sh
#!/bin/bash
sensors | grep "Core 0" | awk '{print $3}' | sed 's/+//' | sed 's/°C//'
chmod +x /usr/local/bin/check_cpu_temp.sh
# zabbix_agentd.conf配置
UserParameter=cpu.temp,cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000}'
# Web界面配置监控项
名称:CPU温度
键值:cpu.temp
单位:°C
更新间隔:30s
历史数据保留:90d
趋势存储:365d
示例2:监控Nginx活跃连接数
# Agent配置
UserParameter=nginx.active,*curl -s http://127.0.0.1/nginx_status | grep "Active" | awk '{print $NF}'
# 监控项配置
名称:Nginx活跃连接数
键值:nginx.active
类型:Zabbix agent
信息类型:数字(无正负)
示例3:监控目录文件数量
# 带参数的UserParameter
UserParameter=file.count[*],find $1 -type f | wc -l
# 监控项键值
file.count[/var/log]
file.count[/home/user/documents]
{
"名称": "Web响应时间",
"键值": "web.response.time",
"预处理": [
{
"类型": "正则表达式",
"参数1": "Time: ([0-9.]+)ms",
"参数2": "\1"
},
{
"类型": "自定义倍数",
"参数1": "0.001"
}
]
}
依赖监控项示例
# 主监控项:检查服务端口
名称:SSH服务状态
键值:net.tcp.service[ssh]
类型:简单检查
# 依赖监控项:检查SSH进程
名称:SSH进程运行状态
键值:proc.num[sshd]
依赖:SSH服务状态
// CPU温度过高告警
{
"名称": "CPU温度过高 on {HOST.NAME}",
"表达式": "{主机名:cpu.temp.last()}>80",
"严重性": "严重",
"恢复表达式": "{主机名:cpu.temp.last()}<=75"
}
// 服务异常告警
{
"名称": "Nginx服务异常 on {HOST.NAME}",
"表达式": "{主机名:net.tcp.service[http].last()}=0",
"严重性": "严重"
}
# Agent配置
UserParameter=vfs.fs.discovery,echo '{"data":['; /bin/find /sys/class/block -name 'sd*' -exec basename {} \; | while read line; do echo "{\"{#DISKNAME}\":\"$line\"},"; done | sed '$s/,$//'; echo ']}'
# 发现规则配置
名称:磁盘自动发现
键值:vfs.fs.discovery
# 命令行发送数据
zabbix_sender -z zabbix-server -s "hostname" -k "custom.metric" -o "123.45"
# Shell脚本示例
#!/bin/bash
value=$(some_command)
zabbix_sender -z 192.168.1.10 -s $(hostname) -k custom.item -o $value
命名规范
# 使用一致的命名约定
<应用>.<组件>.<指标类型>
例:
nginx.connections.active
mysql.queries.per_second
disk./.space.used
监控项优化
更新间隔:根据指标重要性设置
历史数据:合理设置保留时间
#!/bin/bash
# 批量添加监控项
for host in host1 host2 host3; do
zabbix_api.sh item.create \
--host $host \
--name "自定义监控项" \
--key "custom.item" \
--type 0 \
--interval 60
done
# 1. 检查Agent配置
zabbix_agentd -p | grep UserParameter
# 2. 测试监控项
zabbix_get -s 127.0.0.1 -k "custom.item"
# 3. 查看Agent日志
tail -f /var/log/zabbix/zabbix_agentd.log
# 4. 检查Zabbix Server日志
tail -f /var/log/zabbix/zabbix_server.log
通过以上步骤,您可以成功添加Zabbix监控主机和自定义监控项,实现全方位的监控覆盖。