Zabbix 添加监控主机

发布时间:2026/5/22 12:33:56

Zabbix 添加监控主机 Zabbix 添加监控主机实战plaintext1.安装Agent → 2.配置文件 → 3.Web添加 → 4.链接模板 → 5.数据采集 Agent:10050 ◄────► Server:10051 ◄────► Proxy │ ▼ Database2. Agent 安装与配置2.1 Zabbix Agent2 安装bash# RHEL/CentOS rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-release-6.4-1.el8.noarch.rpm dnf install zabbix-agent2 -y systemctl enable --now zabbix-agent2 # Debian/Ubuntu wget https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release_6.4-1debian12_all.deb dpkg -i zabbix-release_6.4-1debian12_all.deb apt update apt install zabbix-agent2 -y # 源码编译 yum install -y gcc make pcre-devel openssl-devel ./configure --enable-agent --with-libpcre2 --with-openssl make install useradd -M -s /sbin/nologin zabbix2.2 zabbix_agent2.conf 核心配置bash# /etc/zabbix/zabbix_agent2.conf Server192.168.1.100,192.168.1.101 # 被动模式允许的Server IP ServerActive192.168.1.100:10051 # 主动模式Agent上报 Hostnameweb-server-01 # 必须与Web端完全一致 ListenIP0.0.0.0 ListenPort10050 # TLS加密生产环境建议 TLSConnectpsk TLSAcceptpsk TLSPSKIdentityPSK-ID-web-server-01 TLSPSKFile/etc/zabbix/zabbix_agent2.psk # 主动模式参数 RefreshActiveChecks120 BufferSend5 Timeout30 Include/etc/zabbix/zabbix_agent2.d/*.conf2.3 主动模式 vs 被动模式表格模式Server角色Agent角色适用场景被动主动拉取被动响应小规模主动等待接收主动上报大规模、NATbash# 被动模式 Server192.168.1.100 # 主动模式 ServerActive192.168.1.100:10051 Hostnameweb-server-012.4 PSK 加密通信bash# 生成PSK密钥 openssl rand -hex 32 /etc/zabbix/zabbix_agent2.psk chown zabbix:zabbix /etc/zabbix/zabbix_agent2.psk chmod 600 /etc/zabbix/zabbix_agent2.psk # Agent配置 TLSConnectpsk TLSAcceptpsk TLSPSKIdentityPSK-ID-web-server-01 TLSPSKFile/etc/zabbix/zabbix_agent2.psk systemctl restart zabbix-agent2 # 测试 zabbix_get -s 127.0.0.1 -p 10050 -k system.cpu.load \ --tls-connect psk --tls-psk-identityPSK-ID-web-server-01 \ --tls-psk-file/etc/zabbix/zabbix_agent2.psk3. Web 端添加主机3.1 手动添加流程plaintext配置 → 主机 → 创建主机 主机名称: web-server-01 ← 与Agent一致 可见名称: Web服务器-01 群组: Linux servers 接口: Agent IP: 192.168.1.101 端口: 10050 模板: Template OS Linux by Zabbix Agent2 状态: 已启用表格配置项说明主机名称Agent Hostname值唯一标识可见名称Web显示名称群组主机所属群组IP/端口Agent连接信息3.2 模板链接与宏覆盖表格模板监控内容Template OS Linux by Zabbix Agent2CPU/内存/磁盘/网络Template App MySQLMySQL连接/查询Template App HTTP ServiceHTTP响应/时间主机宏覆盖: 配置 → 主机 → 宏标签bash{$CPU.LIMIT} 80 # 覆盖CPU告警阈值 {$DISK.SIZE.MIN} 10GB # 覆盖磁盘告警阈值宏优先级: 主机宏 → 模板宏 → 全局宏4. 自动发现与自动注册4.1 自动发现Server主动扫描plaintextDiscovery Rule → 扫描网段:10050 → 匹配条件 → 执行动作配置: 配置 → 动作 → Discovery actions → 创建动作条件: 发现状态上线, IP范围192.168.1.0/24操作: 添加主机链接模板启用4.2 自动注册Agent主动上报plaintextAgent主动上报 → Server接收 → 匹配Hostname/元数据 → 执行动作Agent端配置bashServerActive192.168.1.100:10051 Hostnameweb-server-01 HostMetadatalinux productionServer端动作: 配置 → 动作 → 自动注册动作条件: 主机元数据包含linux操作: 添加到群组链接模板4.3 两种方式对比表格特性自动发现自动注册发起方Server主动扫描Agent主动上报Agent模式被动主动适用场景新机器已知IP云环境/动态扩容5. 常用操作命令5.1 zabbix_get 验证连通性bashzabbix_get -s 192.168.1.101 -p 10050 -k agent.ping # 返回1正常 zabbix_get -s 192.168.1.101 -p 10050 -k system.cpu.load # CPU负载 zabbix_get -s 192.168.1.101 -p 10050 -k vfs.fs.size[/,pused] # 磁盘 # PSK测试 zabbix_get -s 192.168.1.101 -p 10050 -k system.cpu.load \ --tls-connect psk --tls-psk-identityPSK-ID-web-server-01 \ --tls-psk-file/etc/zabbix/zabbix_agent2.psk5.2 zabbix_sender 主动推送bash# 单个值 zabbix_sender -z 192.168.1.100 -p 10051 -s web-server-01 -k custom.item -o 123 # 批量文件格式: host key value zabbix_sender -z 192.168.1.100 -p 10051 -i /tmp/data.txt # 带时间戳 zabbix_sender -z 192.168.1.100 -p 10051 -s web-server-01 -k custom.item -o 123 -t $(date %s)5.3 Agent日志排查bash/var/log/zabbix/zabbix_agent2.log tail -f /var/log/zabbix/zabbix_agent2.log grep -i error /var/log/zabbix/zabbix_agent2.log # 调试模式: DebugLevel4 systemctl restart zabbix-agent25.4 Zabbix API批量添加主机python#!/usr/bin/env python3 Zabbix API批量添加主机 - pip install zabbix-api from zabbix_api import ZabbixAPI import json class ZabbixHostManager: def __init__(self, server, username, password): self.zapi ZabbixAPI(serverserver) self.zapi.login(username, password) print(f已连接: {server}) def get_group_id(self, name): r self.zapi.hostgroup.get({output: extend, filter: {name: [name]}}) return r[0][groupid] if r else None def get_template_ids(self, names): t self.zapi.template.get({output: extend, filter: {host: names}}) return [{templateid: x[templateid]} for x in t] def create_host(self, hostname, ip, group, templates, port10050): gid self.get_group_id(group) if not gid: print(f⚠ 群组不存在: {group}) return None try: host self.zapi.host.create({ host: hostname, interfaces: [{type: 1, main: 1, useip: 1, ip: ip, port: str(port)}], groups: [{groupid: gid}], templates: self.get_template_ids(templates) }) print(f✓ {hostname} 创建成功) return host[hostids][0] except Exception as e: print(f✗ {hostname} 失败: {e}) return None def batch_create(self, hosts): return [{hostname: h[hostname], id: self.create_host(h[hostname], h[ip], h[group], h.get(templates, []))} for h in hosts] if __name__ __main__: manager ZabbixHostManager(http://192.168.1.100/zabbix, Admin, zabbix) hosts [ {hostname: web-server-01, ip: 192.168.1.101, group: Linux servers, templates: [Template OS Linux by Zabbix Agent2]}, {hostname: mysql-server-01, ip: 192.168.1.102, group: Database servers, templates: [Template OS Linux by Zabbix Agent2, Template App MySQL]}, ] print(json.dumps(manager.batch_create(hosts), indent2, ensure_asciiFalse))6. 常见问题与排查6.1 主机不可达Get value from agent failedbashsystemctl status zabbix-agent2 ss -tlnp | grep 10050 zabbix_get -s 192.168.1.101 -p 10050 -k agent.ping firewall-cmd --add-port10050/tcp --permanent firewall-cmd --reload setsebool -P zabbix_can_network1 tail -50 /var/log/zabbix/zabbix_agent2.log表格原因解决方案Agent未启动systemctl start zabbix-agent2防火墙阻止开放10050/tcpHostname不匹配Agent与Web主机名必须一致TLS配置错误确认PSK密钥一致6.2 数据采集不到bashtail -f /var/log/zabbix/zabbix_agent2.log | grep -i error zabbix_get -s 192.168.1.101 -p 10050 -k system.cpu.load # 返回ZBX_NOTSUPPORTED表示不支持该键值表格原因解决方案键值拼写错误参考官方文档确认缺少依赖安装相关工具脚本无权限chmod x /path/to/script模板未链接确认模板已正确链接6.3 自动发现/注册不生效bashgrep -E ServerActive|Hostname /etc/zabbix/zabbix_agent2.conf tail -f /var/log/zabbix/zabbix_server.log | grep -i auto systemctl restart zabbix-agent2表格原因解决方案动作未启用确认动作状态为已启用条件不匹配检查主机元数据/名称群组不存在先创建群组7. 最佳实践7.1 命名规范plaintext格式: {环境}-{角色}-{序号} 示例: prod-web-01, prod-mysql-01 ⚠️ 主机名必须唯一与Agent Hostname一致7.2 群组划分表格类型示例按环境Production / Staging / Development按角色Web Servers / Database Servers7.3 模板继承plaintext层级1: Template OS Linux by Zabbix Agent2 ↓ 层级2: Template App MySQL (链接L1) ↓ 层级3: Template Business Web (链接L2) ⚠️ 建议不超过3层7.4 标签管理bash# 触发器标签 env:production # 环境 service:mysql # 服务 severity:high # 严重程度 team:ops # 负责团队7.5 批量操作bash# Ansible批量部署 ansible -i hosts all -m yum -a namezabbix-agent2 statepresent -b ansible all -m template -a srczabbix_agent2.conf.j2 dest/etc/zabbix/zabbix_agent2.conf -b # CSV格式: hostname,ip,group,templates # prod-web-01,192.168.1.101,Production Linux,Template OS Linux by Zabbix Agent2总结plaintext┌────────────────────────────────────────────────────────────────┐ │ 1. Agent安装 │ Agent2推荐 │ 主动模式适合大规模 │ │ 2. 配置 │ Hostname与Web一致 │ PSK加密生产环境建议 │ │ 3. Web添加 │ 主机名Agent Hostname │ 链接模板宏覆盖 │ │ 4. 自动注册 │ 适合云环境/动态扩容 │ │ 5. 验证 │ zabbix_get/sender │ 查看日志排查 │ └────────────────────────────────────────────────────────────────┘

相关新闻