当前位置: 首页 > news >正文

zabbix模板,触发器,自动化

六、模板

(一)模板介绍与作用

模板(template)是包含监控项、应用集、触发器、图形、聚合图形、自动发现、Web监测等的一组实体,核心价值在于批量管理与统一维护,具体作用如下:

  1. 批量应用:若多台主机需相同监控配置(如100台需监控Nginx的服务器),无需逐台配置,只需将对应的Nginx监控模板“链接”到这些主机,即可快速实现统一监控。
  2. 统一更新:当需要调整监控规则(如修改Nginx连接数阈值)时,仅需修改模板中的配置,所有链接该模板的主机将自动同步更新,避免重复操作。
  3. 简化管理:Zabbix自带大量预置模板(如“Template OS Linux by Zabbix agent”),满足基础监控需求,降低运维门槛。

(二)模板包含的核心组件

模板本质是“监控配置的集合”,典型包含以下组件,各组件功能与关联关系如下表:

组件类型核心作用示例
应用集(Application)对监控项分类,便于管理(如“CPU监控”“内存监控”)将“CPU负载”“CPU使用率”等监控项归为“CPU应用集”
监控项(Item)收集数据的最小单位,定义“监控什么”监控CPU 1分钟平均负载(键值:system.cpu.load[all,avg1]
触发器(Trigger)定义数据阈值,触发告警(如“CPU负载超过3则警告”)表达式:{Template test:system.cpu.load[all,avg1].last()}>3
图形(Graph)将监控项数据可视化,便于直观查看趋势用折线图展示CPU 1/5/15分钟平均负载变化
自动发现规则(Discovery Rule)自动识别主机中的动态资源(如新增磁盘分区、网络接口)自动发现主机的挂载文件系统,吧无需手动添加磁盘监控项
Web监测(Web Scenario)监控Web服务可用性(如响应状态码、页面字符串匹配)监测http://10.1.1.12的状态码是否为200

(三)为主机添加/删除模板

1. 添加模板(以监控Linux主机为例)

  1. 进入Web管理界面:依次点击「配置」→「主机」,选择目标主机(如agent1)。
  2. 进入模板配置页:点击主机详情页中的「模板」标签。
  3. 链接模板:在「链接的模板」栏点击「选择」,搜索并选择预置模板(如“Template OS Linux by Zabbix agent”),点击「添加」。
  4. 保存生效:点击页面底部「更新」,模板中的监控项、触发器等配置将自动应用到该主机。

2. 删除模板(两种方式)

操作方式适用场景操作步骤
取消链接并清理主机不再需要该模板的监控,且需删除模板关联的所有配置(监控项、图形等)1. 进入主机「模板」标签;
2. 选中需删除的模板,点击「取消链接并清理」;
3. 确认后,模板及关联配置将从主机中移除。
取消链接不清理主机不再使用模板,但需保留已生成的监控项、图形等历史配置1. 进入主机「模板」标签;
2. 选中需删除的模板,点击「取消链接不清理」;
3. 模板移除后,原监控项仍可独立使用。

(四)创建自定义模板

当预置模板无法满足需求(如自定义监控登录用户数)时,可手动创建模板,步骤如下:

  1. 进入模板创建页:依次点击「数据采集」→「模板」→「创建模板」。
  2. 填写基础信息:
    • 模板名称:自定义名称(如“Template test”,需唯一)。
    • 可见的名称:Web界面显示的名称(可与模板名称一致)。
    • 群组:选择模板所属群组(如“Templates”,便于分类管理)。
    • 描述:可选,注明模板用途(如“自定义测试模板,包含CPU负载与登录用户数监控”)。
  3. 保存模板:点击「添加」,生成空白模板。
  4. 完善模板配置:在空白模板中依次添加「应用集」「监控项」「触发器」「图形」等组件(后续章节详细说明),最终形成完整的自定义监控模板。

(五)模板的筛选与管理

当模板数量较多时,可通过筛选功能快速定位目标模板:

  1. 进入模板列表页:点击「配置」→「模板」。
  2. 配置筛选条件:
    • 按「名称」搜索:输入模板关键词(如“Linux”)。
    • 按「群组」筛选:选择模板所属群组(如“Templates”)。
    • 按「链接的模板」筛选:筛选依赖其他模板的子模板。
  3. 执行筛选:点击「应用」,列表将显示符合条件的模板,支持批量操作(如批量导出、批量删除)。

七、监控项与应用集

(一)核心概念

1. 监控项(Item)

监控项是Zabbix收集数据的最小单位,定义“从主机收集什么数据”,具备以下特性:

  • 数据来源:可从Zabbix Agent(客户端)、SNMP、JMX、IPMI等渠道收集数据。
  • 数据类型:支持浮点数(如CPU负载)、整数(如登录用户数)、字符串(如系统版本)、日志文本等。
  • 更新间隔:定义数据收集频率(如1分钟/次、5分钟/次),可根据监控精度需求调整。
  • 历史保留:设置数据在数据库中的保留时长(如90天),避免数据冗余。

2. 应用集(Application)

应用集是监控项的逻辑分组,用于对同类监控项归类管理(如将“CPU负载”“CPU使用率”“CPU空闲时间”归为“CPU监控”应用集),核心作用:

  • 简化监控项查找:在Web界面中按应用集筛选,快速定位目标监控项。
  • 清晰数据归类:避免监控项杂乱,提升配置可读性。

(二)创建监控项的两种方式

创建方式适用场景优缺点
直接在主机上创建仅需对单台主机配置特殊监控项(如某台服务器的自定义业务指标)优点:配置灵活,仅作用于目标主机;
缺点:无法批量复用,多主机需重复配置。
在模板中创建多台主机需相同监控项(如所有Linux主机的CPU监控)优点:批量复用,修改模板即可同步所有关联主机;
缺点:需先创建模板,适用于标准化监控场景。

(三)使用自带键值创建监控项(案例:监控CPU平均负载)

Zabbix内置大量预定义键值(Key),无需自定义脚本即可直接使用,以“监控CPU 1/5/15分钟平均负载”为例:

1. 操作步骤(在模板中创建)

  1. 进入模板监控项配置页:依次点击「配置」→「模板」,选择目标模板(如“Template test”),点击「监控项」→「创建监控项」。
  2. 填写监控项核心配置:
    • 名称:自定义名称(如“cpu_avg1”,表示1分钟负载)。
    • 类型:选择“Zabbix客户端”(通过Agent收集数据)。
    • 键值:选择内置键值system.cpu.load[all,avg1]all表示监控所有CPU核心,avg1表示1分钟平均负载;avg5为5分钟,avg15为15分钟)。
    • 信息类型:选择“浮点数”(CPU负载为小数)。
    • 更新间隔:设置为“1m”(1分钟收集一次数据)。
    • 历史数据保留时长:设置为“90d”(保留90天历史数据)。
    • 应用集:选择或创建应用集(如“CPU监控”,不用填写)。
  3. 保存生效:点击「添加」,完成“cpu_avg1”监控项创建;重复步骤2,分别使用键值system.cpu.load[all,avg5]system.cpu.load[all,avg15]创建“cpu_avg5”“cpu_avg15”监控项。

2. 验证监控项

  1. 进入主机监控项列表:点击「配置」→「主机」,选择关联模板的主机(如agent1),查看「监控项」标签,确认3个CPU负载监控项状态为“已启用”。
  2. 查看实时数据:点击「监测」→「最新数据」,筛选主机和应用集,可查看监控项的实时采集值。

(四)创建自定义键值监控项(案例:监控登录用户数)

当内置键值无法满足需求时,可通过自定义键值(基于Linux命令或脚本)实现监控,以“监控主机登录用户数”为例:

1. 步骤1:在被监控端(Agent)配置自定义键值

  1. 登录被监控主机(如agent1),编辑Agent配置文件:
    vim /etc/zabbix/zabbix_agentd.conf
    
  2. 添加自定义键值配置:
    UserParameter=loginusers,who | wc -l  # loginusers为自定义键名,who | wc -l为统计登录用户数的命令
    
  3. 重启Agent服务,使配置生效:
    systemctl restart zabbix-agent
    

2. 步骤2:在Zabbix Server端测试键值有效性

安装zabbix-get工具(用于测试Agent数据采集),并验证自定义键值:

# 安装zabbix-get
yum install zabbix-get -y# 测试自定义键值(-s指定Agent IP,-k指定自定义键名)
zabbix_get -s 192.168.100.10 -k loginusers
# 输出结果示例:2(表示当前登录用户数为2)

3. 步骤3:在Web界面创建自定义监控项

  1. 进入模板监控项配置页:同“自带键值创建”步骤1,选择模板并点击「创建监控项」。
  2. 填写自定义监控项配置:
    • 名称:自定义名称(如“登录用户数”)。
    • 类型:选择“Zabbix客户端”。
    • 键值:输入自定义键名loginusers
    • 信息类型:选择“数字(无正负)”(用户数为非负整数)。
    • 单位:填写“个”(可选,增强可读性)。
    • 更新间隔:设置为“1m”。
    • 应用集:创建新应用集“用户监控”。
  3. 保存生效:点击「添加」,完成自定义监控项创建,后续可在「最新数据」中查看登录用户数实时数据。

八、图形与聚合图形

(一)图形(Graph):单组监控项可视化

图形用于将1个或多个监控项的历史数据以折线图、柱状图、饼图等形式可视化,便于直观查看数据趋势(如CPU负载变化、登录用户数波动)。

1. 创建图形(案例:CPU负载与登录用户数图形)

  1. 进入模板图形配置页:依次点击「配置」→「模板」,选择目标模板(如“Template test”),点击「图形」→「创建图形」。
  2. 填写图形基础配置:
    • 名称:自定义名称(如“CPU负载与登录用户数图”)。
    • 宽/高:设置图形尺寸(如宽900、高200,默认即可)。
    • 图形类型:选择“折线图”(适合展示趋势变化)。
  3. 添加监控项到图形:
    • 点击「监控项」栏的「添加」,在弹出的窗口中选择需展示的监控项(如“cpu_avg1”“cpu_avg5”“cpu_avg15”“登录用户数”)。
    • 为每个监控项设置“绘图风格”(如折线)、“颜色”(如cpu_avg1设为绿色、cpu_avg5设为红色)、“坐标轴”(如CPU负载用左侧Y轴,登录用户数用右侧Y轴,避免数值范围差异导致图形失真)。
  4. 保存生效:点击「添加」,完成图形创建。

2. 查看图形数据

  1. 进入主机图形列表:点击「配置」→「主机」,选择关联模板的主机(如agent1),点击「图形」标签,找到目标图形(如“CPU负载与登录用户数图”)。
  2. 预览图形:点击图形名称,进入「预览」页,可查看指定时间范围(如最近1小时、最近24小时)的监控数据趋势,支持放大、缩小时间范围。

(二)聚合图形(Screen):多图形集中展示

聚合图形是将多个独立图形“拼接”成一个面板,便于同时查看多组监控数据(如同时展示CPU、内存、磁盘、网络的图形),核心价值是集中监控、提升效率

1. 创建聚合图形(案例:agent1常用监控面板)

  1. 进入聚合图形创建页:依次点击「监测」→「聚合图形」→「创建聚合图形」。
  2. 填写聚合图形基础配置:
    • 名称:自定义名称(如“agent1常用监控图”)。
    • 列数/行数:设置图形布局(如2列1行,表示横向排列2个图形)。
  3. 编辑聚合图形内容:
    • 点击聚合图形中的「更改」(占位符),在弹出窗口中选择需添加的图形(如“CPU负载与登录用户数图”“内存使用率图”)。
    • 为每个图形设置“宽/高”(如宽500、高200)、“对齐方式”(如居中)。
    • 重复步骤,添加所有需展示的图形,完成布局调整。
  4. 保存生效:点击「添加」,完成聚合图形创建。

2. 配置仪表盘快速访问

为方便日常查看,可将聚合图形添加到Web界面的「仪表盘」:

  1. 进入仪表盘:点击「监测」→「仪表盘」(Global view)。
  2. 添加聚合图形组件:点击「添加构件」,选择“聚合图形”,在弹出窗口中选择目标聚合图形(如“agent1常用监控图”),点击「添加」。
  3. 调整布局:拖动构件调整位置和尺寸,点击「保存设置」,后续打开仪表盘即可直接查看聚合图形。

(三)图形中文乱码问题解决

若图形中的中文标签(如应用集名称、监控项名称)显示为乱码(方框),原因是Zabbix默认字体不支持中文,解决方案如下:

  1. 上传中文字体文件:
    • 下载支持中文的字体文件(如“ukai.ttc”,楷体),上传到Zabbix Server的字体目录:
      # 解压字体文件到Zabbix字体目录
      tar xf ttf-arphic-ukai.tar.gz -C /usr/share/zabbix/assets/fonts/
      # 重命名字体文件(Zabbix配置需指定.ttf格式)
      mv /usr/share/zabbix/assets/fonts/ukai.ttc /usr/share/zabbix/assets/fonts/ukai.ttf
      
  2. 修改Zabbix字体配置:
    • 编辑Zabbix Web配置文件,将默认字体改为中文字体:
      vim /usr/share/zabbix/include/defines.inc.php
      
    • 找到以下配置行,将graphfont改为ukai
      define('ZBX_GRAPH_FONT_NAME', 'ukai');  # 原配置为'graphfont'
      
  3. 生效:无需重启服务,刷新Web界面的图形页面,中文即可正常显示。

九、触发器

(一)触发器概念与作用

触发器(Trigger)是定义“监控数据何时触发告警”的规则,本质是基于监控项数据的条件判断,核心作用:

  • 自动识别异常:当监控项数据达到阈值(如CPU负载超过3、磁盘使用率超过80%)时,触发器状态从“正常”变为“问题”,触发后续告警流程。
  • 减少人工值守:无需运维人员实时查看图形,触发器可自动监控异常,提升故障响应效率。

(二)触发器核心属性

  1. 严重性:定义告警级别,从低到高分为“未分类”“信息”“警告”“一般严重”“严重”“灾难”,便于区分故障紧急程度(如“磁盘使用率超过95%”设为“灾难”,“登录用户数超过20”设为“警告”)。
  2. 表达式:触发器的核心,定义“何时触发”,语法为{模板/主机:监控项.函数(参数)} 运算符 阈值,例如:
    • {Template test:loginusers.last()}>20:表示“Template test”模板中“loginusers”监控项的最新值(last()函数)大于20时触发。
    • {Template test:system.cpu.load[all,avg1].avg(5m)}>3:表示“CPU 1分钟负载”的5分钟平均值(avg(5m)函数)大于3时触发。
  3. 恢复表达式:可选,定义“何时恢复正常”,若未配置,默认当监控项数据不再满足触发条件时自动恢复。

(三)创建触发器(案例:登录用户数过多告警)

以“当agent1登录用户数超过20时触发警告”为例,步骤如下:

  1. 进入模板触发器配置页:依次点击「配置」→「模板」,选择目标模板(如“Template test”),点击「触发器」→「创建触发器」。
  2. 填写触发器基础配置:
    • 名称:自定义名称(如“登录用户数大于20个”)。
    • 严重性:选择“警告”(根据业务重要性调整)。
  3. 构建触发表达式:
    • 点击「表达式」栏的「添加」,弹出“表达式构造器”窗口。
    • 选择「监控项」:在下拉列表中找到目标监控项(如“Template test:登录用户数”)。
    • 选择「函数」:选择“last()”(使用最新采集的数据,适合实时监控)。
    • 设置「条件」:运算符选择“>”,阈值填写“20”。
    • 插入表达式:点击「插入」,自动生成表达式{Template test:loginusers.last()}>20
  4. 保存生效:点击「添加」,完成触发器创建。

(四)验证触发器效果

  1. 模拟异常场景:登录被监控主机(agent1),通过打开多个终端窗口(或远程登录),使登录用户数超过20(可通过who | wc -l查看)。
  2. 查看触发器状态:
    • 进入「监测」→「问题」,可看到触发器状态变为“问题”,显示告警信息(如“agent1:登录用户数大于20个”)。
    • 进入主机「触发器」标签,可查看触发器的详细状态(如“最后变更时间”“持续时间”)。
  3. 模拟恢复场景:关闭多余终端窗口,使登录用户数小于20,触发器状态将自动从“问题”恢复为“正常”。

十、报警

(一)报警原理与流程

Zabbix报警的核心是“触发器触发→动作执行→告警通知”,完整流程如下:

  1. 触发器触发:当监控项数据满足触发器条件时,触发器状态变为“问题”。
  2. 动作(Action)触发:预配置的“动作”监测到触发器状态变化,执行预设操作(如发送告警通知)。
  3. 告警通知:通过“报警媒介”(如邮件、微信、短信)将告警信息发送给指定用户/用户组。
  4. 故障恢复:当触发器恢复“正常”时,动作再次执行,发送恢复通知。

关键组件关系:触发器 → 动作 → 用户/用户组 → 报警媒介 → 告警平台/接口

(二)常见报警媒介与痛点

Zabbix原生支持邮件、Jabber、SMS、脚本等报警媒介,但自建存在以下痛点:

  • 邮件:易被标记为垃圾邮件,送达率低。
  • 微信:需企业微信开发接口,技术门槛高。
  • SMS:需对接运营商API,通常需付费。
  • 脚本:需自行开发对接逻辑,维护成本高。

因此,推荐使用专业告警平台(如OneAlert/睿象云)实现一体化报警,简化配置流程。

(三)基于OneAlert实现报警(步骤详解)

1. 步骤1:注册OneAlert账号并添加Zabbix应用

  1. 访问OneAlert官网(http://www.onealert.com/),注册账号并登录。
  2. 进入「集成」→「监控工具」,找到“Zabbix”,点击「新建应用」。
  3. 配置应用信息:
    • 应用名称:自定义(如“Zabbix报警”)。
    • 自动关闭时间:设置告警自动关闭时长(如30分钟,超时未处理则自动关闭)。
  4. 获取AppKey:创建后生成唯一AppKey(如2842d6d7-7a1-fb97-254d-9be972403dd0),用于后续Zabbix与OneAlert对接。

2. 步骤2:在Zabbix Server安装OneAlert Agent

  1. 切换到Zabbix脚本目录(RPM安装默认路径):
    cd /usr/lib/zabbix/alertscripts
    
  2. 下载并安装OneAlert Agent:
    # 下载Agent包
    wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-2.1.0.tar.gz
    # 解压
    tar xf ca_zabbix_release-2.1.0.tar.gz
    # 进入安装目录,执行安装(替换AppKey为步骤1获取的值)
    cd cloudalert/bin
    bash install.sh 2842d6d7-7a1-fb97-254d-9be972403dd0
    
  3. 按提示输入Zabbix信息:
    • Zabbix管理地址(如http://10.1.1.11/zabbix)。
    • Zabbix管理员账号(如admin)。
    • Zabbix管理员密码(默认zabbix)。
  4. 验证安装:当提示“安装成功”时,OneAlert已自动在Zabbix中配置动作、用户、报警媒介。

3. 步骤3:验证Zabbix与OneAlert对接配置

OneAlert安装后会自动在Zabbix中创建以下配置,需确认是否生效:

  1. 报警动作
    • 进入「配置」→「动作」,筛选“事件源=触发器”,确认存在“CloudAlert Action”动作,规则为“触发器状态变化时,通过CloudAlert媒介发送通知”。
  2. 报警用户与用户组
    • 进入「管理」→「用户」,确认存在“cloudalert”用户,所属用户组为“cloudalert group”。
    • 进入用户详情页的「报警媒介」标签,确认已配置“cloudalert media”媒介(类型为脚本)。
  3. 报警媒介类型
    • 进入「管理」→「报警媒介类型」,确认存在“cloudalert media”,脚本路径为/usr/lib/zabbix/alertscripts/cloudalert/bin/alert.sh

4. 步骤4:配置OneAlert通知策略

  1. 登录OneAlert,进入「配置」→「通知策略」,新建策略:
    • 通知对象:选择需接收告警的用户(绑定邮箱、手机、微信)。
    • 通知方式:勾选“邮件”“短信”“微信”等。
    • 时间范围:设置告警发送时间(如工作时间8:30-18:30,非工作时间仅发送紧急告警)。
  2. 保存策略,完成通知配置。

5. 步骤5:测试报警效果

  1. 模拟告警场景:登录agent1,打开多个终端窗口,使登录用户数超过20(触发“登录用户数大于20个”触发器)。
  2. 查看告警通知:
    • OneAlert平台:进入「告警」页面,可看到新生成的告警记录。
    • 接收通知:绑定的邮箱、手机、微信将收到告警信息,包含告警主机、告警项、阈值、当前值等详情。
  3. 模拟恢复场景:关闭多余终端,登录用户数小于20,触发器恢复正常,OneAlert将发送“恢复通知”。

十一、自动化批量监控

当监控主机数量庞大(如数百台、数千台)时,手动添加主机和模板效率极低,需通过自动发现自动注册实现批量监控。

(一)自动发现与自动注册的区别

特性自动发现(Discovery)自动注册(Auto-registration)
触发方Zabbix Server主动扫描网络Zabbix Agent主动向Server注册
适用场景已知IP网段的主机(如机房内网)动态IP或新增主机(如云服务器)
核心逻辑Server按规则扫描→发现主机→自动添加监控Agent启动后→向Server发送注册请求→Server自动添加监控
依赖条件Server需能访问Agent的10050端口Agent需配置Server地址,且能访问Server的10051端口

(二)自动发现实现批量监控(案例:发现agent2并添加监控)

以“自动发现10.1.1.0/24网段内的Linux主机,自动添加到监控并关联自定义模板”为例,步骤如下:

1. 步骤1:准备被监控主机(agent2)

  1. 安装Zabbix Agent:
    yum install zabbix-agent -y
    
  2. 配置Agent(指向Zabbix Server):
    vim /etc/zabbix/zabbix_agentd.conf
    # 配置Server和ServerActive为Zabbix Server IP
    Server=10.1.1.11
    ServerActive=10.1.1.11
    # 配置主机名(需与后续发现规则匹配)
    Hostname=agent2
    
  3. 重启Agent并设置开机启动:
    systemctl restart zabbix-agent
    systemctl enable zabbix-agent
    

2. 步骤2:配置自动发现规则

  1. 进入自动发现配置页:依次点击「配置」→「自动发现」→「创建发现规则」(或修改默认“Local network”规则)。
  2. 填写发现规则核心配置:
    • 名称:自定义名称(如“Linux主机自动发现”)。
    • IP范围:填写需扫描的网段(如10.1.1.0/24)。
    • 更新间隔:设置扫描频率(如“60s”,即每分钟扫描一次)。
    • 检查:添加“Zabbix客户端”检查,键值选择system.uname(用于判断主机是否为Linux系统,返回值含“Linux”)。
    • 设备唯一性准则:选择“IP地址”(避免重复添加)。
    • 已启用:勾选“已启用”。
  3. 保存规则:点击「添加」,Server将开始按规则扫描网段。

3. 步骤3:确认发现主机

  1. 进入自动发现结果页:依次点击「监测」→「自动发现」,选择目标发现规则(如“Linux主机自动发现”)。
  2. 查看已发现设备:在「已发现的设备」栏,可看到扫描到的主机(如10.1.1.13,即agent2),状态为“在线”。

4. 步骤4:配置动作实现自动添加监控

自动发现仅“找到”主机,需通过“动作”实现“自动添加主机、关联模板、加入主机群组”:

  1. 进入动作配置页:依次点击「配置」→「动作」,将“事件源”改为“自动发现”,点击「创建动作」。
  2. 配置动作基础信息:
    • 名称:自定义名称(如“自动添加Linux主机监控”)。
  3. 设置触发条件(筛选需监控的主机):
    • 点击「条件」栏的「添加」,添加以下条件(多条件“与”逻辑):
      1. 「自动发现状态」=「上线」:仅对在线主机生效。
      2. 「服务类型」=「Zabbix客户端」:确保是Agent主机。
      3. 「接收到的值」(来自system.uname)「包含」「Linux」:仅对Linux主机生效。
      4. (可选)「主机IP地址」=「10.1.1.13」:仅针对agent2(测试场景用,批量场景可删除)。
  4. 配置动作操作(自动执行的任务):
    • 点击「操作」栏的「添加」,添加以下操作:
      1. 「操作类型」=「添加到主机群组」:选择目标群组(如“Linux servers”)。
      2. 「操作类型」=「链接到模板」:选择自定义模板(如“Template test”)。
      3. (可选)「操作类型」=「启用主机」:自动启用主机监控。
  5. 保存动作:点击「添加」,并确保动作状态为“已启用”。

5. 步骤5:验证自动监控效果

  1. 等待扫描周期:Server将在下次扫描(如60s后)发现agent2,并执行动作中的操作。
  2. 查看主机列表:进入「配置」→「主机」,可看到agent2已被添加,状态为“已启用”,且已关联“Template test”模板。
  3. 查看监控数据:进入「监测」→「最新数据」,筛选agent2,可看到模板中的监控项已开始采集数据,触发器正常生效。

(三)批量操作与模板导入导出

1. 批量操作(启用/禁用/删除主机)

当需对多台主机执行相同操作时,可通过批量操作实现:

  1. 进入主机列表页:点击「配置」→「主机」。
  2. 选择目标主机:勾选需操作的多台主机(如agent1、agent2)。
  3. 执行批量操作:点击页面底部的「批量更新」「启用」「禁用」或「删除」,按提示确认即可。

2. 模板导入导出(备份与迁移)

模板导出可实现“配置备份”和“跨Server迁移”,步骤如下:

(1)模板导出
  1. 进入模板列表页:点击「配置」→「模板」,选择目标模板(如“Template test”)。
  2. 导出模板:点击「导出」,选择导出格式(默认XML),点击「下载」,保存XML文件到本地(备份或迁移用)。
(2)模板导入
  1. 进入模板导入页:在目标Zabbix Server的「配置」→「模板」页面,点击「导入」。
  2. 上传模板文件:点击「选择文件」,上传已导出的XML文件,选择导入规则(如“更新现有的”“创建新的”)。
  3. 完成导入:点击「导入」,模板及关联的监控项、触发器、图形等配置将被恢复到新Server中。

十二、Zabbix Proxy

(一)Proxy概念与应用场景

Zabbix Proxy是Zabbix的分布式监控组件,本质是“监控数据代理”,介于Zabbix Server和Agent之间,核心作用是分担Server压力、实现跨网络监控,典型应用场景如下:

  1. 跨区域/跨网络监控:当Agent与Server不在同一网络(如跨机房、跨内外网)时,直接监控需开放大量端口(存在安全风险),Proxy可作为“中间节点”,仅需Proxy与Server之间开放10051端口。
  2. 大规模监控:当监控主机数量超过1000台时,Server的数据采集和处理压力过大,Proxy可按区域/机房分担采集任务,降低Server负载。
  3. 不稳定网络区域:在网络波动较大的区域部署Proxy,Proxy可本地缓存数据,避免网络中断导致数据丢失,网络恢复后同步给Server。

(二)Proxy与Server的核心区别

特性Zabbix ServerZabbix Proxy
核心功能全局配置管理、告警处理、数据存储本地数据采集、缓存数据、同步数据到Server
数据库需存储所有监控数据(历史数据、趋势数据)仅存储本地采集的临时数据(同步到Server后可清理)
依赖关系不依赖其他组件,是监控核心依赖Server获取配置(如监控项、触发器),并同步数据
部署数量通常1个(大规模场景可集群)可多个,按区域/机房部署

(三)部署Proxy实现分布式监控(案例)

以“部署Proxy监控agent1、agent2,Proxy将数据同步给Server”为例,步骤如下:

1. 步骤1:环境准备

主机名角色IP地址核心任务
serverZabbix Server10.1.1.11全局配置、告警处理
proxyZabbix Proxy10.1.1.14采集agent1/agent2/自身数据,同步给Server
agent1被监控主机10.1.1.12运行Agent,提供监控数据
agent2被监控主机10.1.1.13运行Agent,提供监控数据

基础配置(所有主机)

  1. 配置主机名与hosts解析:
    # proxy主机设置主机名
    hostnamectl set-hostname --static proxy
    # 所有主机添加hosts解析
    vim /etc/hosts
    10.1.1.11 server
    10.1.1.12 agent1
    10.1.1.13 agent2
    10.1.1.14 proxy
    
  2. 关闭防火墙与SELinux:
    systemctl stop firewalld && systemctl disable firewalld
    setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    
  3. 时间同步:
    systemctl restart ntpd && systemctl enable ntpd
    
  4. 配置Zabbix YUM源(所有主机):
    vim /etc/yum.repos.d/zabbix.repo
    [zabbix]
    name=zabbix
    baseurl=file:///root/zabbix_soft  # 本地源,也可使用清华源(https://mirrors.tuna.tsinghua.edu.cn/zabbix/)
    enabled=1
    gpgcheck=0
    

2. 步骤2:部署Proxy

  1. 安装Proxy相关软件(Proxy需本地数据库存储临时数据,此处用MariaDB):
    yum install mariadb-server zabbix-proxy-mysql zabbix-agent -y
    
  2. 配置MariaDB并创建Proxy数据库:
    # 启动MariaDB并设置开机启动
    systemctl restart mariadb && systemctl enable mariadb
    # 登录数据库,创建Proxy专用库
    mysql
    MariaDB [(none)]> create database zabbix_proxy default charset utf8;
    MariaDB [(none)]> grant all privileges on zabbix_proxy.* to 'zabbix'@'localhost' identified by '123';  # 密码自定义
    MariaDB [(none)]> flush privileges;
    MariaDB [(none)]> quit
    
  3. 导入Proxy数据库 schema(初始化表结构):
    zcat /usr/share/doc/zabbix-proxy-mysql-4.4.4/schema.sql.gz | mysql zabbix_proxy -u zabbix -p123
    # 验证导入:查看是否生成表
    mysql -e 'use zabbix_proxy; show tables;'
    
  4. 配置Proxy配置文件(/etc/zabbix/zabbix_proxy.conf):
    vim /etc/zabbix/zabbix_proxy.conf
    # 核心配置(取消注释并修改)
    Server=10.1.1.11  # Zabbix Server IP
    Hostname=proxy  # Proxy主机名(需与后续Server配置一致)
    DBName=zabbix_proxy  # Proxy数据库名
    DBUser=zabbix  # 数据库用户名
    DBPassword=123  # 数据库密码
    ConfigFrequency=60  # Proxy从Server获取配置的间隔(秒)
    DataSenderFrequency=5  # Proxy向Server同步数据的间隔(秒)
    
  5. 启动Proxy并设置开机启动:
    systemctl restart zabbix-proxy && systemctl enable zabbix-proxy
    # 验证端口:Proxy默认监听10051端口(与Server相同,需确保不冲突)
    netstat -ntlup | grep 10051
    

3. 步骤3:配置Agent指向Proxy

需将agent1、agent2、proxy自身的Agent配置改为“指向Proxy”(由Proxy采集数据):

  1. 编辑Agent配置文件(以agent1为例,agent2和proxy操作相同):
    vim /etc/zabbix/zabbix_agentd.conf
    # 修改Server和ServerActive为Proxy IP
    Server=10.1.1.14
    ServerActive=10.1.1.14
    # 配置主机名(需唯一)
    Hostname=agent1  # agent2设为agent2,proxy设为proxy
    # 添加自定义监控项(如登录用户数,与之前一致)
    UserParameter=loginusers,who | wc -l
    
  2. 重启Agent服务:
    systemctl restart zabbix-agent
    

4. 步骤4:在Server中添加Proxy

  1. 进入Server Web界面:依次点击「管理」→「Agent代理程序」→「创建代理程序」。
  2. 填写Proxy配置:
    • Agent代理程序名称:填写“proxy”(需与Proxy主机的Hostname一致)。
    • 系统代理程序模式:选择“主动式”(Proxy主动向Server同步数据,默认推荐)。
    • 代理地址:填写Proxy的IP(10.1.1.14)。
  3. 保存Proxy:点击「添加」,Server将与Proxy建立连接,获取Proxy的配置。

5. 步骤5:在Server中添加被监控主机(关联Proxy)

  1. 添加proxy主机:
    • 依次点击「配置」→「主机」→「创建主机」。
    • 主机名称:填写“proxy”。
    • 群组:创建并选择“Proxy Group”。
    • Agent代理程序的接口:IP填写10.1.1.14,端口10050。
    • 由agent代理程序监测:选择“proxy”(指定由该Proxy采集数据)。
    • 模板:关联“Template test”模板。
    • 点击「添加」保存。
  2. 批量添加agent1和agent2:
    • 重复步骤1,分别添加agent1和agent2,「由agent代理程序监测」均选择“proxy”,关联“Template test”模板。

6. 步骤6:验证Proxy监控效果

  1. 查看Proxy状态:进入「管理」→「Agent代理程序」,确认proxy的“状态”为“在线”。
  2. 查看主机监控状态:进入「配置」→「主机」,确认agent1、agent2、proxy的“ZBX”图标为绿色(表示连接正常)。
  3. 查看监控数据:进入「监测」→「最新数据」,筛选agent1,可看到监控项数据正常采集(数据由Proxy同步给Server)。
  4. 测试触发器:模拟agent1登录用户数超过20,触发器触发后,告警信息将由Proxy同步给Server,再通过OneAlert发送通知。

十三、主动监控与被动监控

Zabbix的“主动/被动”是指数据采集的方向,分为Agent主动/被动、Proxy主动/被动两种模式,核心影响数据流向和负载分配。

(一)Agent主动监控与被动监控

1. 核心区别

特性Agent被动模式(默认)Agent主动模式
数据流向Server/Proxy主动向Agent请求数据(“拉”模式)Agent主动向Server/Proxy发送数据(“推”模式)
配置关键Agent的Server参数(指定允许谁来拉数据)Agent的ServerActive参数(指定向谁推数据) + 监控项类型设为“Zabbix客户端(主动式)”
负载分布Server/Proxy负载高(需并发请求大量Agent)Agent负载略高(需主动发送数据),Server/Proxy负载低
适用场景监控主机数量较少(<500台)监控主机数量多(>500台),需减轻Server/Proxy负载

2. 配置Agent主动模式

以“将Template test模板的监控项改为主动模式”为例:

  1. 进入模板监控项列表:依次点击「配置」→「模板」→「Template test」→「监控项」。
  2. 批量修改监控项类型:
    • 勾选所有监控项(如cpu_avg1、loginusers),点击「批量更新」。
    • 类型:改为“Zabbix客户端(主动式)”。
    • 点击「更新」,所有关联该模板的主机监控项将同步改为主动模式。
  3. 验证:Agent将按ServerActive配置的地址(如Proxy IP)主动发送数据,Server/Proxy无需再主动请求。

(二)Proxy主动监控与被动监控

1. 核心区别

特性Proxy被动模式Proxy主动模式(默认推荐)
数据流向Server主动向Proxy请求数据(“拉”模式)Proxy主动向Server同步数据(“推”模式)
配置关键Proxy配置文件ProxyMode=1(1为被动,0为主动)Proxy配置文件ProxyMode=0(默认)
负载分布Server负载高(需拉取多个Proxy数据)Proxy负载略高(需主动同步),Server负载低
适用场景Proxy数量少(<10个)Proxy数量多(>10个),需减轻Server负载

2. 配置Proxy被动模式

若需修改Proxy为被动模式(仅大规模场景可能用到):

  1. 编辑Proxy配置文件:
    vim /etc/zabbix/zabbix_proxy.conf
    # 修改ProxyMode为1(被动模式)
    ProxyMode=1
    
  2. 重启Proxy服务:
    systemctl restart zabbix-proxy
    
  3. 在Server中修改Proxy模式:进入「管理」→「Agent代理程序」,编辑proxy,将“系统代理程序模式”改为“被动式”。

(三)默认模式推荐

  1. Agent默认被动模式:适合中小规模监控(<500台),配置简单,无需修改监控项类型。
  2. Proxy默认主动模式:适合所有场景,Proxy主动同步数据,减轻Server负载,避免Server因“拉取数据”导致的压力集中。

大规模场景调整建议:当监控主机>1000台时,可将Agent改为主动模式+Proxy主动模式,最大限度分散负载。

十四、Web监测(拓展补充)

Web监测(Web Scenario)是Zabbix针对Web服务的专项监控功能,可模拟用户访问Web页面的流程,监控可用性、响应时间、页面内容匹配等指标,核心用于保障Web业务正常运行。

(一)Web监测核心功能

  1. 多步骤监控:可模拟用户的多步操作(如“访问首页→点击登录→提交表单”),监控每个步骤的状态。
  2. 关键指标监测
    • 响应状态码(如200表示正常,404表示页面不存在,500表示服务器错误)。
    • 响应时间(从发起请求到接收完数据的时间,评估Web服务性能)。
    • 页面内容匹配(检查页面是否包含指定字符串,如“登录成功”“商品价格”)。
    • 下载速度(评估页面资源加载效率)。
  3. 告警触发:可基于Web监测的指标创建触发器(如“响应时间超过5秒”“状态码非200”),触发告警。

(二)创建Web监测(案例:监控agent1的Web服务)

以“监控agent1的Web服务(http://10.1.1.12),检查首页状态码和测试页字符串”为例,步骤如下:

1. 步骤1:在agent1上部署Web服务

  1. 安装Apache(httpd):
    yum install httpd -y
    
  2. 创建测试页面:
    # 创建首页(index.html)
    echo "agent1 Web Home" > /var/www/html/index.html
    # 创建测试页(test.txt),包含指定字符串“haha”
    echo "111haha222" > /var/www/html/test.txt
    
  3. 启动httpd服务:
    systemctl restart httpd && systemctl enable httpd
    # 验证:访问http://10.1.1.12,应显示“agent1 Web Home”
    

2. 步骤2:在Server中创建Web监测(关联agent1)

  1. 进入Web监测配置页:依次点击「配置」→「主机」,选择agent1,点击「Web监测」→「创建Web场景」。

  2. 填写Web场景基础配置:

    • 名称:自定义名称(如“agent1 Web服务监测”)。
    • 应用集:创建并选择“Web监控”。
    • 更新间隔:设置监测频率(如“1m”,每分钟监测一次)。
    • 尝试次数:设置失败重试次数(如“1”,失败后不重试)。
  3. 添加监测步骤(Step):

    步骤1:监测首页状态码
    • 点击「步骤」栏的「添加」。
    • 名称:填写“首页状态码监测”。
    • URL:填写http://10.1.1.12/index.html
    • 要求的状态码:填写“200”(正常状态码)。
    • 超时:设置“15s”(超过15秒未响应则判定失败)。
    • 点击「添加」保存步骤1。
    步骤2:监测测试页字符串
    • 再次点击「添加」步骤。
    • 名称:填写“测试页字符串监测”。
    • URL:填写http://10.1.1.12/test.txt
    • 要求的字串:填写“haha”(检查页面是否包含该字符串)。
    • 超时:设置“15s”。
    • 点击「添加」保存步骤2。
  4. 保存Web场景:点击「添加」,Web监测将开始按配置执行监测。

3. 步骤3:查看Web监测结果

  1. 进入Web监测报告:依次点击「监测」→「Web监测」,选择agent1的“agent1 Web服务监测”。
  2. 查看监测详情:
    • 最近检查记录:显示每次监测的结果(成功/失败)、每个步骤的响应时间、状态码。
    • 图形:可查看“响应时间趋势图”“步骤成功率图”,直观评估Web服务性能。
  3. 验证异常场景:
    • 停止httpd服务:systemctl stop httpd,监测将失败,状态码显示“连接拒绝”。
    • 删除test.txt中的“haha”:echo "111222" > /var/www/html/test.txt,步骤2将失败,提示“未找到指定字符串”。

4. 步骤4:基于Web监测创建触发器

可针对Web监测的结果创建触发器(如“Web服务响应时间超过5秒则告警”):

  1. 进入模板触发器配置页:选择“Template test”,点击「触发器」→「创建触发器」。
  2. 构建表达式:
    • 点击「表达式」→「添加」,选择「监控项」为“agent1 Web服务监测:平均响应时间”(Web监测自动生成的监控项)。
    • 函数选择“avg(1m)”(1分钟平均值),运算符“>”,阈值“5”(单位:秒)。
    • 表达式示例:{Template test:web.test.time[agent1 Web服务监测].avg(1m)}>5
  3. 保存触发器:设置严重性为“一般严重”,点击「添加」,当Web响应时间超过5秒时将触发告警。

十五、综合练习(监控场景实战)

(一)系统监控拓展(CPU/内存/磁盘/网络)

1. 练习1:监控进程数量并设置多级触发器

需求:监控主机进程总数,触发规则:

  • 超过200个:警告
  • 超过300个:一般严重
  • 超过400个:灾难

实现步骤

  1. 创建监控项:在模板中添加监控项,键值使用内置proc.num[](监控所有进程数量)。
    • 名称:“总进程数”
    • 键值:proc.num[]
    • 信息类型:数字(无正负)
  2. 创建3个触发器
    • 警告:{Template test:proc.num[].last()}>200,严重性“警告”
    • 一般严重:{Template test:proc.num[].last()}>300,严重性“一般严重”
    • 灾难:{Template test:proc.num[].last()}>400,严重性“灾难”
  3. 验证:通过ps aux | wc -l查看进程数,模拟进程数超过阈值,确认触发器按级别触发。

2. 练习2:监控TCP连接数量

需求:监控主机的TCP连接总数(ESTABLISHED状态)。

实现步骤

  1. 自定义键值:在Agent中添加自定义键值(统计ESTABLISHED连接数):
    vim /etc/zabbix/zabbix_agentd.conf
    UserParameter=tcp.established,netstat -ant | grep ESTABLISHED | wc -l
    
  2. 创建监控项:在模板中添加监控项,键值tcp.established,信息类型“数字”。
  3. 创建触发器:设置阈值(如超过1000触发警告),表达式:{Template test:tcp.established.last()}>1000

3. 练习3:监控磁盘使用率

需求:监控/分区使用率,超过80%警告,超过90%严重。

实现步骤

  1. 创建监控项:使用内置键值vfs.fs.size[/,pused]/分区使用率,百分比)。
  2. 创建触发器
    • 警告:{Template test:vfs.fs.size[/,pused].last()}>80
    • 严重:{Template test:vfs.fs.size[/,pused].last()}>90

4. 练习4:监控可用内存

需求:监控可用内存(含缓存),低于1GB警告。

实现步骤

  1. 创建监控项:使用内置键值vm.memory.size[available](可用内存,单位B),信息类型“浮点数”,单位“GB”(需设置值映射:1GB=102410241024 B)。
  2. 创建触发器:表达式:{Template test:vm.memory.size[available].last()}<1(单位GB)。

(二)业务监控实战(Nginx/MariaDB)

1. 监控Nginx服务

(1)基于Nginx状态页监控
  1. 配置Nginx状态页:在agent1的Nginx配置中添加状态页:

    vim /etc/nginx/nginx.conf
    server {listen 80;server_name agent1;location /status {stub_status on;  # 开启状态页allow 10.1.1.14;  # 允许Proxy访问allow 127.0.0.1;deny all;}
    }
    systemctl restart nginx
    
    • 访问http://10.1.1.12/status,可查看Nginx状态(如Active connections、accepts、handled、requests)。
  2. 创建自定义脚本:在agent1中创建脚本,解析状态页数据:

    vim /opt/nginx_status.sh
    #!/bin/bash
    HOST="127.0.0.1"
    PORT="80"
    # 定义函数,返回不同指标
    function ping { /sbin/pidof nginx | wc -l; }  # 检查Nginx进程是否存在
    function active { curl "http://$HOST:$PORT/status" 2>/dev/null | grep 'Active' | awk '{print $NF}'; }
    function accepts { curl "http://$HOST:$PORT/status" 2>/dev/null | awk NR==3 | awk '{print $1}'; }
    function handled { curl "http://$HOST:$PORT/status" 2>/dev/null | awk NR==3 | awk '{print $2}'; }
    function requests { curl "http://$HOST:$PORT/status" 2>/dev/null | awk NR==3 | awk '{print $3}'; }
    $1  # 接收参数,执行对应函数
    chmod 755 /opt/nginx_status.sh
    
  3. 配置自定义键值:在Agent中添加键值:

    vim /etc/zabbix/zabbix_agentd.conf
    UserParameter=nginx_status[*],/opt/nginx_status.sh $1
    systemctl restart zabbix-agent
    
  4. 创建监控项与触发器

    • 监控项:如“Nginx活跃连接数”(键值nginx_status[active])、“Nginx请求数”(键值nginx_status[requests])。
    • 触发器:如“活跃连接数超过100警告”({Template test:nginx_status[active].last()}>100)。
(2)使用Zabbix预置模板

Zabbix自带“Template App Nginx by HTTP”模板,可直接关联主机,无需自定义脚本(需确保Nginx状态页配置正确)。

2. 监控MariaDB服务

(1)监控数据库登录用户数
  1. 配置自定义键值:在agent1的Agent中添加键值,通过mysqladmin或SQL查询获取登录用户数:

    vim /etc/zabbix/zabbix_agentd.conf
    # 方式1:使用mysqladmin
    UserParameter=mysql.threads_connected,mysqladmin -u root extended-status | grep Threads_connected | awk '{print $4}'
    # 方式2:使用SQL查询(需确保zabbix用户有访问权限)
    UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | mysql -u zabbix -p123 -N | awk '{print $$2}'
    systemctl restart zabbix-agent
    
  2. 创建监控项与触发器

    • 监控项:“MySQL登录用户数”(键值mysql.threads_connectedmysql.status[Threads_connected])。
    • 触发器:“登录用户数超过50警告”({Template test:mysql.threads_connected.last()}>50)。

(三)大规模监控架构设计

1. 多Server分担监控

当监控主机超过5000台时,单台Server压力过大,可部署多台Zabbix Server,按区域/业务划分监控范围(如Server1监控华北机房,Server2监控华东机房)。

2. Proxy分层部署

在超大规模场景(如数万台主机),可部署“Proxy集群”或“二级Proxy”:

  • 一级Proxy:按机房部署,采集机房内所有主机数据。
  • 二级Proxy:在大型机房内按机柜部署,分担一级Proxy的压力。

3. 自动化运维整合

  • 批量部署Agent:使用Ansible或Cobbler的PostScript脚本,批量安装和配置Agent。
  • 自动发现与注册:结合CMDB(配置管理数据库),新主机上线后自动注册到Zabbix,关联对应模板。
  • 模板版本管理:通过Git管理模板XML文件,实现模板的版本控制与批量导入。
http://www.dtcms.com/a/487384.html

相关文章:

  • 景德镇网站建设公司中国空间站结构示意图
  • Citadel OA 面经,从实战解析到备考攻略
  • 莆田市城厢区建设局网站一个做搞笑类视频的网站取名
  • Nacos配置文件如何初始化的
  • 创维E900V22D刷入armbian hdmi开机花屏和网络无法使用 解决方式【亲测】
  • 全面解答:远控快捷键切换方便吗?不同系统间键盘映射设置随需调
  • 互联网门户网站有哪些鞍山市网站建设
  • 【vLLM】源码解读:vllm如何识别到第三方自定义设备的
  • 网站制作的基本成都网站建设网络
  • 日志系统4 日志类型的设计
  • 深度学习:从图片数据到模型训练(十分类)
  • PCB mark点
  • 大兴网站开发网站建设咨询100%能上热门的文案
  • 网站建设douyanet杭州专业建设网站哪里好
  • Mysql杂志(三十二)——redo日志、undo日志
  • 2017做那些网站致富网博士自助建站系统
  • 上海做公司网站的公司室内设计网站模板
  • 化州 网站建设如何自己建营销网站
  • Kafka-2 Docker 部署单节点环境(SpringBoot验证)
  • 从0开始了解kafka《第二篇 kafka的安装、管理和配置》
  • 02 SQL数据检索入门 - SELECT语句详解
  • 从分词器构建到强化学习:nanochat开源项目下载与部署全流程教程,教你一步步训练ChatGPT语言模型
  • 长安镇仿做网站注册网站好的平台
  • 加强公司内部网站建设正邦设计公司
  • 巩义网站建设价格怎么注册个人工作室
  • 四川网站建设益友网站地图怎么用
  • 制作一个响应式网站开发工具景观设计公司名称
  • 网站设计网站开发优化欢迎你的加入
  • MySql 基本操作指令大全
  • 军用网站建设ui设计一个月挣多少钱