Zabbix功能配置
# 功能结构
# 监控项
- 用于自定义监控收集内容信息。
# 触发器
- 可以实现报警提示(条件表达式),默认是页面提示报警。
# 动作
- 用于定义发送的告警信息格式。指定告警媒介和告警目标。
# 报警媒介
- 定义配置报警的方式,如邮件、微信、短信等。
# 应用集
- 将多个类似的监控项进行整合分类,便于查看检查。
# 模板
- 将监控项、触发器、动作等,配置在一个模板中。
- 方便多个主机的调用,减少重复工作。
# 图形
- 将多个数据的图形,整合成一个图形,方便浏览。
# 服务端添加主机监控
- 首先登录zabbix管理后台,菜单栏 -> 配置 -> 主机 -> 创建主机 (右上角)
- 配置被监控的主机
主机名称
- 客户端Linux系统的主机名可见的名称
- 自定即可,例如:web01-10.0.0.7群组
- 分组便于以组进行查询,例如:web接口
- 根据客户端的主机信息和agent配置填写模板
- 添加模板,可用于给主机绑定模板- 例如:
Template OS Linux by Zabbix agent
- 例如:
- 配置完后单击添加即可
- 配置完后检查监控
- 菜单栏 -> 监测 -> 主机
- 检查主机可用性状态有没有变绿。
# 配置自定义监控项
# 被监控端配置监控项
配置自定义监控项首先需要在zabbix客户端上配置获取指标的命令。
# 首先编写自定义监控命令
- 比如监控nginx进程数的命令:
ps -ef | grep [n]ginx: | wc -l
- 比如监控nginx进程数的命令:
# 然后再编写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'
# 服务端添加自定义监控项
- 进入到创建监控项页面,菜单 -> 配置 -> 主机 -> 单击相应主机的监控项 -> 创建监控项 (右上角)
配置监控项
名称
- 自定即可,例如:check nginx processes类型
- 根据实际情况选择即可键值
- 客户端上配置的监控项键名,例如:nginx_state- 右侧的选择按钮,有Zabbix内置的监控项
主机接口
- 选择主机,一般默认即可信息类型
- 监控命令返回值的类型单位
- 加在值后面的单位信息,信息类型为数字则会显示该配置,如:个进程更新间隔
- 收集信息的间隔时间自定义时间间隔
- 在指定的时间段,自动调整更新间隔的策略,期间字段的含义为[星期, 时间段]历史数据保留时长
- 收集的信息最长保留时间趋势存储时间
- 趋势图展示存储时长新的应用集/应用集
- 给监控命令进行分类方便日后查询,可自定、也可选择已有的描述
- 添加监控项描述可以防止日后忘记作用- 配置完后单击添加即可
添加并检查
- 菜单 -> 监测 -> 最新数据 -> 根据条件筛选
- 检查新添加的监控项,状态是否为已启用,然后查看最新数据是否能正常变化
# 自定义监控传参方式
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。
- 星号通配符必须使用中括号扩起来
# 配置自定义触发器
触发器是用于在指定监控项值满足一种或多种条件后,触发相应的动作,比如进行告警、执行命令等。
# 创建触发器
- 进入到创建触发器页面,菜单 -> 配置 -> 主机 -> 单击相应主机的触发器 -> 创建触发器 (右上角)
- 配置触发器
名称
- 触发器的名称,例如: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()
- 取一段时间的平均值,比如用来判断负载均衡是否过高
# 配置自定义动作
用于定义触发器被触发时执行的动作,告警或命令等。
- 进入到创建动作页面,菜单 -> 配置 -> 动作 -> 创建动作 (右上角)
# 动作
名称
- 动作的名称,例如:report web state
条件
- 定义动作触发的条件- 如果配置的话,就只会在指定条件被触发时执行动作
- 比如:触发器严重程度等于严重、触发器名称包括Web等
# 操作 - 定义该动作被执行时操作
默认操作步骤持续时间
- 定义从警告到解决的默认操作时间- 如果触发警报后,又过了该时间,问题还是没有解决,就会进行通知升级,会发送邮箱给其他人。
操作
- 动作执行的操作操作类型
- 可以选择告警(发送消息)和执行命令步骤
- 定义该步骤是操作的第几步- 例如:设置了两个操作,其中一个步骤是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服务端前端文件进行修改
# 邮箱信息报警
# 配置邮箱告警媒介
- 菜单 -> 管理 -> 报警媒介类型 -> 创建媒体类型(右上角)
名称
- 报警媒介的名称,比如钉钉告警、邮箱告警等类型
- 告警媒介类型,可以创建Webhook、Email等类型的告警# 邮箱配置项
SMTP服务器
-如QQ邮箱的:smtp.qq.comSMTP服务器端口
- 如QQ邮箱的:465或587SMTP HELO
- 邮箱的域名,如QQ邮箱的:qq.comSMTP电邮
- 发送邮箱的账号信息,如QQ邮箱的:cecilies@qq.com安全链接
- 选择SSL/TLS,并勾选 SSL验证对端、SSL验证主机认证
- 选择用户名和密码用户名称
- 发送邮箱的账号信息,如QQ邮箱的:cecilies@qq.com密码
- 第三方登录邮箱服务的授权码
配置完后单击添加即可
然后测试是否可以正常发送
# 定义用户接收告警的邮箱
- 菜单 -> 用户设置(小人头) -> 报警媒介 -> 添加
# 配置项
类型
- 选择刚刚创建的报警媒介名称收件人
- 收件邮箱当启用时
- 警报发送时间段如果存在严重性则使用
- 定义在什么告警级别下发送- 添加完后,单击更新即可,需要更新才能生效
# 其他告警方式
- 通过Webhook我们还可以调用API的方式来进行告警,比如钉钉、微信、电话等等。
# 配置自定义模板
模板是用来对监控项、触发器和其他对象进行分组的功能,当一个模版链接到一个主机后,主机会继承这个模版中的所有对象,可以方便我们对监控主机进行快捷的配置。
# 创建模板
- 菜单 -> 配置 -> 模板 -> 创建模板(右上角)
模版名称
- 模板的名称群组
- 用于模板分组,可以选择已有分组,也可以输入新的组名进行创建然后保存即可
# 配置模板
- 菜单 -> 配置 -> 模板 -> 搜索新添加的模板,单击进入然后编辑。
- 添加监控项、触发器、图形等即可。
- 然后添加主机时,就可以选择该模板进行绑定了。
# Zabbix常见问题
# 告警信息处理步骤
主要关注红色严重级别的问题,看到问题之后,先定位报警原因。
菜单 -> 监测 -> 问题 -> 单击需要处理的问题 -> 配置
查看报警的触发器信息,获得监控项的键名
通过键名,跟踪报警原因。
找到对应主机,找到对应键名的配置,再根据键名对应的命令排查问题。
# 配置错误导致的"不支持" 修改完成还是不支持
- 解决配置错误问题后,菜单 -> 管理 -> 一般 -> 选择其他
- 修改
刷新不支持的项目的时间
配置调小一点,支持s/m/h - 或者重启服务端Zabbix-server服务
# 监控项报错Cannot evaluate function "last()": item "node01:vm.memory.size[total]" does not exist.
- 一般是主机或模板监控项中没有创建键值为
vm.memory.size[total]
的监控项,创建之后即可正常监控。