zabbix5.0基本使用教程


zabbix5.0基本使用教程

一、zabbix简介

一、介绍 Zabbix是一款开源免费的,自动化发现服务与网络设备的分布式监控,可以监视应用层服务并以web前端页面集中管理并展示。

二、Zabbix构成 Zabbix主要由以下5个组件构成:

1、server zabbix server是zabbix的核心组件,server内部存储了所有的配置信息、统计信息和操作信息。zabbix agent会向zabbix server报告可用性、完整性及其他统计信息。

2、web页面 web页面也是zabbix的一部分,通常和zabbix server位于一台物理设备上,但是在特殊情况下也可以分开配置。web页面主要提供了直观的监控信息,以方便运维人员监控管理。

3、数据库 zabbix数据库内存储了配置信息,统计信息等zabbix相关内容。

4、proxy zabbix proxy可以根据具体生产环境进行采用或者放弃。如果使用了zabbix proxy,则其会替代zabbix server采集数据信息,可以很好的分担zabbix server的负载。zabbix proxy通常运用与架构过大、zabbix server负载过重,或者是企业设备跨机房、跨网段、zabbix server无法与zabbix agent直接通信的场景。

5、agent zabbix agent通常部署再被监控目标上,用于主动监控本地资源和应用程序,并讲监控的数据发送给zabbix server

二、更改界面为中文

在这里插入图片描述

三、解决zabbix乱码的问题,这是中文编码不匹配导致的。

#在服务器端安装中文文泉仪字体,并替换原有字体
[root@zabbix /]# yum -y install wqy-microhei-fonts
[root@zabbix /]# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf

四、添加主机

在zabbix服务端需要装一个工具,验证与客户端的连通性

[root@zabbix ~] yum install zabbix-get -y
[root@zabbix ~] zabbix_get -s '你的客户端IP' -p 10050 -k 'system.hostname'
[root@zabbix ~] zabbix_get -s '172.16.68.164' -p 10050 -k 'system.hostname'

其中“system.hostname” 返回该客户端的主机名

然后在页面上操作添加主机

在菜单栏选择“配置-主机-创建主机” 在这里插入图片描述

在主机页面填入以下信息

  • 主机名称,需要与客户端的主机名称一致

  • 可见名称,方便识别该主机,可自由取名

  • 群组,由于我的客户端是linux服务器,所以归为linux servers群组

  • 客户端IP地址,填客户端的IP地址

  • DNS名称,由于我的客户端不需要域名解析,不需要填,若有,则可填 在这里插入图片描述

  • 在第二项模板里,搜索linux选择使用Template OS Linux by Zabbix agent的模板,并添加 在这里插入图片描述 约几十秒后,主机的ZBX绿色亮起,说明添加成功了 在这里插入图片描述

五、问题的处理

如图,客户端报了一个问题,zabbix客户端与zabbix服务器端时间差距超过60秒。 原因是我仅将客户端与NTP同步了,未将服务端与NTP同步,所以时间差距过大。 所以去处理好问题之后,点击确认的“不”这里,提交问题处理的信息进行确认。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

六、自定义监控项和触发器

例如自定义一个监控MySQL进程的监控项

首先需要在Zabbix agent配置文件中定义一个新的键来获取MySQL进程数量。编辑/etc/zabbix/zabbix_agentd.conf文件,按G快速到最后一行添加以下内容:

UserParameter=mysql.process,pgrep -c mysqld

image-20240624115034488

这将创建一个名为mysql.process的自定义键,它将返回MySQL进程的数量。保存文件并重新启动Zabbix agent以应用更改:

systemctl restart zabbix-agent

最后,到ZabbixWeb界面上选择主机进行添加监控项:

image-20240624134531601

其中,"类型" 选择zabbix客户端 , “键值” 要与zabbix_agentd.conf文件中添加的值对应: mysql.process ,“新的应用集” 意思就是新的类型,方便后续过滤查找。剩下其它选项可自定义设置。最后添加即可。image-20240624114804339

添加成功后,在该主机的监控项中可以查看到,后面已启用表示添加成功了。

image-20240624115732165

可以在 “最新数据” 中查看该项最新的返回值

image-20240624125932713

可以给MySQL进程监控项添加一个触发器来实现告警提醒:

选择主机点击触发器,然后创建新的触发器,

点击 添加 一个表达式,选择监控项,就是新添加的“MySQL进程监控”,然后设置“功能”条件,这里是取值,因为MySQL进程监控返回的是数值。然后设置“结果”等于多少时触发,这里是设置为0时触发。意思就是当 MySQL监控项返回0值时(也就说明MySQL进程不在线)触发预警。其它选项自定义设置,比如 该触发器 “严重性”。

image-20240624130307262

image-20240624130841342

确认好点击“添加”即可。

image-20240624130939557

以上状态显示“已启用” 说明添加成功了。

模拟一下"MySQL进程触发器“ 告警:关闭服务器中MySQL进程,看系统会不会触发告警。

image-20240624131324417

当关闭主机的MySQL时,系统已经出现问题告警,说明设置成功生效了

image-20240624131301885

如果人工不处理该告警,那么当再次开启MySQL时,系统自动处理触发器告警。显示状态:已解决。

image-20240624131507924

image-20240624131528798

自定义监控项还可以在agent执行某个脚本并且可以传参数,比如: 写个通用的进程监控脚本check_process.sh,脚本内容如下:

#!/bin/bash

if [ "$#" -ne 1 ]; then
    echo "Usage: $0 process_name"
    exit 1
fi

process_name=$1
pgrep -x "$process_name" > /dev/null

if [ $? -eq 0 ]; then
    echo 1
else
    echo 0
fi

check_process.sh mysqld --监测MySQL进程,返回1表示在线,0表示不在线 check_process.sh mongod --监测MongoDB进程是否在线

然后编辑/etc/zabbix/zabbix_agentd.conf文件,按G快速到最后一行再添加一行自定义键值项,键值名为custom.process.check[*]带参数的,脚本文件check_process.sh位置和参数名,以下内容:

UserParameter=custom.process.check[*],/etc/zabbix/zabbix_agent2.d/check_process.sh $1

然后保存后重启zabbix-agent服务

systemctl restart zabbix-agent

再去zabbix页面上添加自定义监控项:

image-20240624133900676

可以点击下方“测试” 看是否能执行成功返回值。

还可以直接 “克隆” 来复制一个 添加MongoDB的监控项:

image-20240624133958715

最后也可以去添加相应的触发器。步骤一样。

表达式可以设置触发器在某个时间段触发,比如:以下就是08:30-15:00和20:30-23:00这两个时间段执行的监测mykline进程的触发器,使用的是time()功能。

image-20240626110215157

总结:

​ 1.创建自定义监控项时,都要在/etc/zabbix/zabbix_agentd.conf配置文件中添加一行键值,然后再去web界面上创建此监控项。

​ 2.键值可以是个命令,或者运行某个脚本,可以带参数。

image-20240626110702737

七、邮件告警配置

1、选择报警媒介类型(这里以qq邮箱为例)

img

img

授权码去相应邮箱设置里获取。

测试一下

img

2、创建一个触发器
img
3、给触发器创建一个动作

img

img img

出现告警发送一次邮件、告警恢复也发送一次邮件

img

然后设置用户的收件邮箱信息

img

此时我们将nginx服务停止,就会给我们发送一个告警邮件:

img

教程