ThankNeko's Blog ThankNeko's Blog
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)

Hoshinozora

尽人事,听天命。
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)
  • 操作系统

  • 虚拟化服务

  • 数据库服务

  • 监控服务

    • Prometheus笔记

    • Zabbix笔记

      • Zabbix介绍与部署
      • Zabbix功能配置
        • 功能结构
        • 服务端添加主机监控
        • 配置自定义监控项
          • 被监控端配置监控项
          • 服务端测试自定义监控项
          • 服务端添加自定义监控项
          • 自定义监控传参方式
        • 配置自定义触发器
          • 创建触发器
          • 表达式方法
        • 配置自定义动作
        • 配置告警方式
          • 后台页面提示信息/声音提示告警
          • 邮箱信息报警
          • 其他告警方式
        • 配置自定义模板
          • 创建模板
          • 配置模板
        • Zabbix常见问题
  • Web服务

  • 数据处理

  • Ops
  • 监控服务
  • Zabbix笔记
Hoshinozora
2023-02-27
目录

Zabbix功能配置

# 功能结构

  • # 监控项

    • 用于自定义监控收集内容信息。
  • # 触发器

    • 可以实现报警提示(条件表达式),默认是页面提示报警。
  • # 动作

    • 用于定义发送的告警信息格式。指定告警媒介和告警目标。
  • # 报警媒介

    • 定义配置报警的方式,如邮件、微信、短信等。
  • # 应用集

    • 将多个类似的监控项进行整合分类,便于查看检查。
  • # 模板

    • 将监控项、触发器、动作等,配置在一个模板中。
    • 方便多个主机的调用,减少重复工作。
  • # 图形

    • 将多个数据的图形,整合成一个图形,方便浏览。

# 服务端添加主机监控

  • 首先登录zabbix管理后台,菜单栏 -> 配置 -> 主机 -> 创建主机 (右上角)

image-20230227231041160

image-20230227231124320

  • 配置被监控的主机
    • 主机名称 - 客户端Linux系统的主机名
    • 可见的名称 - 自定即可,例如:web01-10.0.0.7
    • 群组 - 分组便于以组进行查询,例如:web
    • 接口 - 根据客户端的主机信息和agent配置填写
    • 模板 - 添加模板,可用于给主机绑定模板
      • 例如:Template OS Linux by Zabbix agent
    • 配置完后单击添加即可
  • 配置完后检查监控
    • 菜单栏 -> 监测 -> 主机
    • 检查主机可用性状态有没有变绿。

# 配置自定义监控项

# 被监控端配置监控项

配置自定义监控项首先需要在zabbix客户端上配置获取指标的命令。

  • # 首先编写自定义监控命令

    • 比如监控nginx进程数的命令:ps -ef | grep [n]ginx: | wc -l
  • # 然后再编写agent端配置文件

    • # 第一种方法
      • vim /etc/zabbix/zabbix_agentd.conf
      • 搜索监控项参数UserParameter=,然后把监控命令写到该参数即可,可以定义多个监控项参数。
    • # 第二种方法
      • cd vim /etc/zabbix/zabbix_agentd.d/
      • 在该目录中创建以.conf结尾的配置文件,然后在文件中书写UserParameter=配置即可,一个配置文件中可以定义多个监控项参数。
      • 该目录中以.conf结尾的文件,会在主配置文件中导入,但是要确保主配置文件中Include参数有导入该目录。
    • # 编写格式
      • UserParameter=键,值
        • 键 - 监控项键名
        • 值 - 填监控用的shell命令 (每次获取会将执行结果作为值)
      • 例如:UserParameter=nginx_state,ps -ef | grep [n]ginx: | wc -l

# 服务端测试自定义监控项

Zabbix可以在服务端上,直接通过命令来测试自定义监控项。

  • 安装zabbix-get软件用于测试
    • yum install -y zabbix-get
  • 测试自定义监控是否能正常获取
    • zabbix_get -s [主机IP] -k '[键名]' - 键名是客户端监控项配置的键名
    • 例如:zabbix_get -s 192.168.20.12 -k 'nginx_state'

# 服务端添加自定义监控项

  • 进入到创建监控项页面,菜单 -> 配置 -> 主机 -> 单击相应主机的监控项 -> 创建监控项 (右上角)

image-20230228121756160

image-20230228121925062

  • 配置监控项

    • 名称 - 自定即可,例如:check nginx processes
    • 类型 - 根据实际情况选择即可
    • 键值 - 客户端上配置的监控项键名,例如:nginx_state
      • 右侧的选择按钮,有Zabbix内置的监控项
    • 主机接口 - 选择主机,一般默认即可
    • 信息类型 - 监控命令返回值的类型
    • 单位 - 加在值后面的单位信息,信息类型为数字则会显示该配置,如:个进程
    • 更新间隔 - 收集信息的间隔时间
    • 自定义时间间隔 - 在指定的时间段,自动调整更新间隔的策略,期间字段的含义为[星期, 时间段]
    • 历史数据保留时长 - 收集的信息最长保留时间
    • 趋势存储时间 - 趋势图展示存储时长
    • 新的应用集/应用集 - 给监控命令进行分类方便日后查询,可自定、也可选择已有的
    • 描述 - 添加监控项描述可以防止日后忘记作用
    • 配置完后单击添加即可
  • 添加并检查

    • 菜单 -> 监测 -> 最新数据 -> 根据条件筛选
    • 检查新添加的监控项,状态是否为已启用,然后查看最新数据是否能正常变化

image-20230228124555674

# 自定义监控传参方式

Zabbix的监控项还支持在Shell命令中传入变量,来获取监控值。比如要监控多个服务的端口数,就可以使用该方式提供一种通用的监控项。

  • 在定义监控项时,键名中定义[*],在Shell命令中使用$1,后项引用前项,调用键名中传入的*的内容。

    • 定义例如:UserParameter=service_port_[*],netstat -lntu | grep -c $1
  • 在调用监控项时,键名使用service_port_[内容]

    • 调用例如:zabbix_get -s 10.0.0.7 -k service_port_[80]
    • $1会调用[*]的值,所以使用 service_port_[80],同等于使用 netstat -lntu | grep -c 80
  • # 注意
    • 星号通配符必须使用中括号扩起来[*],否则无法使用,且一条监控项只能有一个[*],但是可以传递多个参数。
    • [*]不能出现在键值名的开头,如[*]_test是不行的。
    • 在需要传入多个实参时,实参之间需要用逗号隔开。定义监控项时,后面的命令中可以调用$1、$2...$N来获取传入的第N个参数。
      • 传递多个参数如: -k onl_player_[one,two]
    • 如果要继续使用Shell中"$"符号原本的含义,要多加一个$符号,比如$$1、$$2。

# 配置自定义触发器

触发器是用于在指定监控项值满足一种或多种条件后,触发相应的动作,比如进行告警、执行命令等。

# 创建触发器

  • 进入到创建触发器页面,菜单 -> 配置 -> 主机 -> 单击相应主机的触发器 -> 创建触发器 (右上角)

image-20230302115552786

image-20230302115623818

  • 配置触发器
    • 名称 - 触发器的名称,例如:nginx number of process < 2
    • 严重性 - 定义表达式条件被触发时代表的严重程度
    • 表达式 - 定义触发条件,可通过右侧的添加来配置
      • 例如:{node01:nginx_state.last(#1)}<2
        • 表示web01的nginx_state监控项的最新数据中,倒数第1个值<2则触发

# 表达式方法

  • 表达式格式:{监控的主机名:键名.调用的表达式函数}判断条件
    • 例如:{web01:nginx_state.last()}<2
  • 常用表达式
    • last() - 收集到的最新数值
    • max() - 在一定周期内,收集到的最大值
    • min() - 在一定周期内,收集到的最小值
    • diff() - 在一定时间内,判断收集的信息是否不同,比如用来判断文件是否被篡改等
    • change() - 在一定时间内,判断收集的信息是否不同
    • avg() - 取一段时间的平均值,比如用来判断负载均衡是否过高

# 配置自定义动作

用于定义触发器被触发时执行的动作,告警或命令等。

  • 进入到创建动作页面,菜单 -> 配置 -> 动作 -> 创建动作 (右上角)

image-20230302130331138

image-20230302130450185

  • # 动作

    • 名称 - 动作的名称,例如:report web state
    • 条件 - 定义动作触发的条件
      • 如果配置的话,就只会在指定条件被触发时执行动作
      • 比如:触发器严重程度等于严重、触发器名称包括Web等

image-20230302132241072

  • # 操作 - 定义该动作被执行时操作

    • 默认操作步骤持续时间 - 定义从警告到解决的默认操作时间

      • 如果触发警报后,又过了该时间,问题还是没有解决,就会进行通知升级,会发送邮箱给其他人。
    • 操作 - 动作执行的操作

      • 操作类型 - 可以选择告警(发送消息)和执行命令

      • 步骤 - 定义该步骤是操作的第几步

        • 例如:设置了两个操作,其中一个步骤是1-1,另一个是2-1,那么如果1-1过了,默认操作步骤持续时间,还是没解决报警,就会发送给2-1,可设置一个BOSS组,如果下级没解决就发送给上级
      • 步骤持续时间 - 如果没有指定则会使用默认操作步骤持续时间

      • 发送给用户组 - 按组发送给指定用户组,只要是这个组里的用户就会发送

      • 发送给用户 - 单独发给指定用户

      • 仅送到 - 指定单个或所有告警媒介,一般选择所有,这样所有配置了的报警媒介都会发送

      • 自定义消息内容 - 定义发送消息操作时的内容格式,一般会勾选上书写自定义内容

        • Zabbix宏网址: https://www.zabbix.com/documentation/5.0/zh/manual/appendix/macros/supported_by_location
        # 主题 - 发送的信息的标题名称,可自定义调用宏
        报警问题:{EVENT.NAME} || 报警主机:{HOST.NAME}
        
        # 消息 - 发送的信息的内容,可自定义调用宏
        报警触发器:{EVENT.NAME}
        <br>
        报警主机:{HOST.NAME}
        <br>
        报警级别:{TRIGGER.NSEVERITY}
        <br>
        (0 - 未定义, 1 - 信息, 2 - 警告, 3 - 一般严重, 4 - 严重, 5 - 灾难)
        <br>
        <br>
        <br>
        报警监控项名称:{ITEM.NAME}
        <br>
        报警监控项键名:{ITEM.KEY}
        <br>
        报警监控项注释:{ITEM.DESCRIPTION}
        <br>
        <br>
        <br>
        报警时数据:{ITEM.VALUE}
        
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
    • 恢复操作 - 当问题被恢复时,执行的操作

    • 更新操作 - 当问题被更新时,执行的操作

# 配置告警方式

# 后台页面提示信息/声音提示告警

  • 菜单 -> 用户设置(小人头) -> 正在发送消息 -> 勾选-前端消息中 -> 保存
  • 页面告警的提示音可以通过替换Zabbix服务端前端文件进行修改

# 邮箱信息报警

# 配置邮箱告警媒介

  • 菜单 -> 管理 -> 报警媒介类型 -> 创建媒体类型(右上角)

image-20230302140819497

  • 名称 - 报警媒介的名称,比如钉钉告警、邮箱告警等

  • 类型 - 告警媒介类型,可以创建Webhook、Email等类型的告警

  • # 邮箱配置项
    • SMTP服务器 -如QQ邮箱的:smtp.qq.com
    • SMTP服务器端口 - 如QQ邮箱的:465或587
    • SMTP HELO - 邮箱的域名,如QQ邮箱的:qq.com
    • SMTP电邮 - 发送邮箱的账号信息,如QQ邮箱的:cecilies@qq.com
    • 安全链接 - 选择SSL/TLS,并勾选 SSL验证对端、SSL验证主机
    • 认证 - 选择用户名和密码
      • 用户名称 - 发送邮箱的账号信息,如QQ邮箱的:cecilies@qq.com
      • 密码 - 第三方登录邮箱服务的授权码
  • 配置完后单击添加即可

  • 然后测试是否可以正常发送

# 定义用户接收告警的邮箱

  • 菜单 -> 用户设置(小人头) -> 报警媒介 -> 添加

image-20230302141203428

  • # 配置项
    • 类型 - 选择刚刚创建的报警媒介名称
    • 收件人 - 收件邮箱
    • 当启用时 - 警报发送时间段
    • 如果存在严重性则使用 - 定义在什么告警级别下发送
    • 添加完后,单击更新即可,需要更新才能生效

# 其他告警方式

  • 通过Webhook我们还可以调用API的方式来进行告警,比如钉钉、微信、电话等等。

# 配置自定义模板

模板是用来对监控项、触发器和其他对象进行分组的功能,当一个模版链接到一个主机后,主机会继承这个模版中的所有对象,可以方便我们对监控主机进行快捷的配置。

# 创建模板

  • 菜单 -> 配置 -> 模板 -> 创建模板(右上角)

image-20230302142452721

  • 模版名称 - 模板的名称

  • 群组 - 用于模板分组,可以选择已有分组,也可以输入新的组名进行创建

  • 然后保存即可

# 配置模板

  • 菜单 -> 配置 -> 模板 -> 搜索新添加的模板,单击进入然后编辑。
  • 添加监控项、触发器、图形等即可。
  • 然后添加主机时,就可以选择该模板进行绑定了。

# Zabbix常见问题

# 告警信息处理步骤

  • 主要关注红色严重级别的问题,看到问题之后,先定位报警原因。

    • 菜单 -> 监测 -> 问题 -> 单击需要处理的问题 -> 配置

    • 查看报警的触发器信息,获得监控项的键名

  • 通过键名,跟踪报警原因。

  • 找到对应主机,找到对应键名的配置,再根据键名对应的命令排查问题。

# 配置错误导致的"不支持" 修改完成还是不支持

image-20230302151811493

  • 解决配置错误问题后,菜单 -> 管理 -> 一般 -> 选择其他
  • 修改 刷新不支持的项目的时间 配置调小一点,支持s/m/h
  • 或者重启服务端Zabbix-server服务

# 监控项报错Cannot evaluate function "last()": item "node01:vm.memory.size[total]" does not exist.

  • 一般是主机或模板监控项中没有创建键值为vm.memory.size[total]的监控项,创建之后即可正常监控。
#Linux#监控#Zabbix
Zabbix介绍与部署
HTTP/HTTPS介绍

← Zabbix介绍与部署 HTTP/HTTPS介绍→

最近更新
01
二〇二五年四月十七日随笔
04-17
02
二〇二五年四月十六日随笔
04-16
03
二〇二五年四月九日随笔
04-09
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Hoshinozora | MIT License
湘ICP备2022022820号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式