济宁市中国丧葬服务网

zabbix如何添加监控主机和自定义监控项

2026-04-01 22:49:02 浏览次数:0
详细信息

一、添加监控主机

1. Web界面添加主机

步骤:
1. 登录Zabbix Web界面
2. 导航到:配置 → 主机 → 创建主机

2. 主机配置参数

必填项:
- 主机名称:唯一标识(如:server-01)
- 可见名称:显示名称(如:生产服务器)
- 群组:选择所属监控组(如:Linux servers)
- Agent接口:添加监控代理地址
  - IP地址:192.168.1.100
  - 端口:10050

3. 模板关联

选择监控模板:
- Linux by Zabbix agent
- Template App Apache
- Template App MySQL
- 等...

4. 批量添加主机

可以通过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"}]
    })

二、自定义监控项配置

1. Agent端自定义监控项

# 编辑Agent配置文件
vim /etc/zabbix/zabbix_agentd.conf

# 添加用户自定义参数
UserParameter=my.custom.item[*],/usr/local/bin/check_script.sh $1 $2

# 重启Agent
systemctl restart zabbix-agent

2. 常用监控项类型

1. Zabbix agent       # 通过Agent获取
2. SNMP               # SNMP协议
3. JMX                # Java应用监控
4. IPMI               # 硬件监控
5. 简单检查           # HTTP、TCP等
6. 数据库监控         # ODBC方式
7. HTTP agent         # 获取URL内容
8. SSH/ Telnet        # 远程执行命令

3. 创建自定义监控项步骤

1. 配置 → 主机 → 选择主机 → 监控项
2. 点击"创建监控项"
3. 填写监控项信息

4. 监控项配置示例

示例1:监控CPU温度
# 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]

5. 监控项高级配置

数据预处理示例
{
  "名称": "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服务状态

6. 触发器配置

// CPU温度过高告警
{
  "名称": "CPU温度过高 on {HOST.NAME}",
  "表达式": "{主机名:cpu.temp.last()}>80",
  "严重性": "严重",
  "恢复表达式": "{主机名:cpu.temp.last()}<=75"
}

// 服务异常告警
{
  "名称": "Nginx服务异常 on {HOST.NAME}",
  "表达式": "{主机名:net.tcp.service[http].last()}=0",
  "严重性": "严重"
}

7. 使用发现规则(自动发现)

自动发现磁盘
# 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

8. 使用Zabbix sender发送数据

# 命令行发送数据
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

9. 最佳实践建议

命名规范

# 使用一致的命名约定
<应用>.<组件>.<指标类型>
例:
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

10. 故障排查

# 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监控主机和自定义监控项,实现全方位的监控覆盖。

相关推荐