java中的接口是类吗
314
2022-11-02
自定义Zabbix监控项,实现故障邮件通知
Zabbix虽然自带了很多服务的监控模板,里面包含众多监控项,但并不一定能符合企业生产的需求,为此我们需要自定义监控项,通过脚本来采集监控项的数据,再由Zabbix agent来获取这些监控项的数据。
此篇主要看一下企业生产中常用的一些服务如何自定义监控项,以及监控项出现故障后,如何实现邮件通知。
常用服务自定义监控项
1.1 自定义Linux tcp连接监控项
关于tcp的概念、三次握手与四次握手,以及连接状态,笔者在运维第五周作业(链接:自定义监控脚本
自定义脚本可以使用shell或者Python等语言去写,笔者使用的是shell脚本,内容如下:
脚本内容说明:
①首先是利用awk命令获取当前tcp连接中11种状态及其连接数,并保存到指定文件中;
②从已保存tcp各状态和连接数的指定文件中获取对应状态的连接数值;
③由于某些状态可能没有连接数,当获取不到这些状态时,就强制给这些状态加上0的连接数;
④如果能获取到对应状态,就打印出对应状态的连接数值。
1.1.2 Zabbix agent调用脚本
1.1.2.1 自定义监控项添加位置
添加自定义监控项,可以放在Zabbix agent主配置文件中,也可以放在Include指定的目录下,类似于Nginx和HAProxy的子配置文件形式。
1.1.2.2 调用脚本
无论是在主配置文件中,还是指定子配置文件中,都要遵循调用监控项的格式,并且shell命令最好写全路径。
以tcp连接数监控脚本为例,需要设置两个参数,一个用于流程判断,一个用于传递状态值,则键值部分要加上[*],表示可以传递任意个参数。添加完毕,需重启Zabbix agent。
1.1.3 Zabbix server端测试
在添加监控项至web界面之前,建议先在Zabbix server端测试能否获得对应监控项数据。
1.1.4 web界面配置
1.1.4.1 创建模板
web界面可以直接在单台主机上添加自定义的监控项,但主机数量较多时工作量会很大,可以先创建模板,再将模板导入到各个主机。
注意事项:带星号必填,其它可省去,模板名称不能为中文
1.1.4.2 完善模板
在“模板”中找到自己创建的模板,各项内容都是空的,需要逐个完善。
1.1.4.2.1 创建应用集
1.1.4.2.2 创建监控项
监控项部分主要是设置监控项的名称和键值,如果设置了应用集,也可选择应用集,此外“类型”建议改为主动模式。
其它状态重复此操作或克隆监控项添加,笔者在实验中就只添加3项。
1.1.4.2.3 创建触发器
1.1.4.2.4 创建图形
创建图形部分主要是名称和监控项,其它内容可不做变动。名称可自定义,如果不是特别重要的监控项,建议将多个监控项合并到同一个图形中。
1.1.4.3 主机关联模板
主机关联模板部分与关联Zabbix自带模板操作相同,进入对应主机页面,在“模板”—“链接指示器”中通过关键字筛选添加即可。
1.1.5 验证监控数据
在“监测”—“图形”中选择已关联模板的主机,即可选择自定义监控项,并查看监控项的数据。
1.2 自定义memcached监控项
1.2.1 部署memcached服务器
1.2.1.1 安装memcached
笔者直接在从节点数据库服务器上安装memcached,如果是另准备服务器,同样先得安装Zabbix agent,为了避免server端获取数据失败,需要将agent服务的用户改为root来运行。
1.2.1.2 修改监听地址
memcached默认监听在本机,需在配置文件中进行修改。
1.2.1.3 安装ncat工具
memcached不像Redis或MySQL可以直接通过命令行进行非交互式操作就可查看要筛选的信息,而是要通过Telnet进行连接以查看状态信息等。
要想通过非交互式操作获得对应的状态信息,需要安装ncat工具,该工具在Ubuntu系统中需安装nmap包。
此时就可以通过管道以命令行的形式直接显示memcached状态信息。
1.2.2 memcached自定义监控项脚本
利用ncat,配合文本处理工具如awk和grep等可以筛选出对应状态的值。基于这种思路,我们可以创建自定义监控脚本,设置3个变量,分别用于流程判断、传递端口号和查看具体监控项。脚本内容如下:
1.2.3 Zabbix agent调用脚本
memcached服务器在Zabbix agent配置文件中调用脚本,并重启Zabbix agent服务。
1.2.4 Zabbix server端测试
Zabbix server端测试能否通过对应的键值来获取监控项数据。
1.2.5 web界面配置
1.2.5.1 创建及完善模板
memcached自定义监控项的模板及其完善与监控tcp连接数部分操作相同,笔者就直接上图。
1.2.5.2 主机关联模板
在“配置”—“主机”中找到要关联模板的主机,进行模板关联。
1.2.6 验证自定义监控项数据
使用已关联memcached模板的主机查看图形时,可以选择自定义监控项,并能获取对应监控项的数据。
1.3 自定义Redis监控项
Redis服务器的监控与memcached服务器监控基本相同。
1.3.1 部署Redis服务器
1.3.1.1 安装Redis
笔者在之前安装过Zabbix agent服务的real-server1上演示,先通过apt或者其它方式安装Redis。
1.3.1.2 修改监听地址
Redis默认监听在本机,需在配置文件中进行修改。
1.3.2 监控Redis状态脚本
Redis可以直接使用redis-cli命令进行非交互式操作,笔者就不在该服务器安装ncat工具了,脚本内容如下:
1.3.3 Zabbix agent调用脚本
由于之前的监控tcp连接部分已创建过子配置文件,笔者就直接在里面添加调用Redis监控脚本,添加完毕重启Zabbix agent服务。
1.3.4 Zabbix server端测试
在Zabbix server端测试能否通过自定义监控项获取监控数据。
1.3.5 web界面配置
模板的创建及与主机关联部分如下图所示。
1.3.6 验证自定义监控项数据
以上操作完成后,在“监测”—“图形”中选择对应主机,可以通过已设置的自定义监控项来获取数据。
1.4 自定义Nginx监控项
Nginx是企业常用的一种服务,对Nginx的监控主要是活动连接和当前状态这块。
1.4.1 部署Nginx服务器
1.4.1.1 下载并解压源码包
Nginx服务器要想被Zabbix server端监控到数据,建议通过源码编译方式安装服务,在执行configure脚本环节加上指定参数,不然修改起来太麻烦。笔者下载的1.18版本,下载完毕进行解压。
1.4.1.2 执行configure脚本
由于是实验中演示,笔者就不多加参数,只指定安装路径,但是得添加--with-server端监控到。
1.4.1.3 编译安装
执行configure脚本完毕,进行编译安装操作。
1.4.1.4 编辑Nginx配置文件
memcached和Redis可以通过非交互式命令直接获取监控项数据,但Nginx无法直接获取,需在配置文件中配置url显示客户端连接状态,以便于后期通过curl命令来获取客户端连接状态页数据并进行筛选。
1.4.1.5 访问连接状态页
通过浏览器或者在Linux主机使用curl命令即可访问已配置的客户端连接状态页。
1.4.2 Nginx状态监控脚本
Nginx状态监控脚本如下,主要是使用文本处理工具来筛选出不同Nginx客户端连接的状态值。
1.4.3 Zabbix agent调用脚本
Nginx服务器在Zabbix agent配置文件添加调用监控项的脚本,并重启agent服务。
1.4.4 Zabbix server端测试
Zabbix server端测试能否通过Nginx服务器的自定义监控获取数据。
1.4.5 验证自定义监控数据
模板的制作与关联与以上实验中的基本相同,该部分就不上图了。为了看效果,笔者在模板中添加accepts、handled和requests这3个监控项,生产中还是以active和reading等重要的监控项为主。
实现故障邮件通知
在使用Zabbix对服务器的某些监控项进行监控时,可能会有部分监控项超出了触发器设置的大小,而相关工作人员可能不会时刻盯着web界面,为了减少故障带来的负面影响,需要设置邮件、短信或其它方式的通知去及时处理,此篇主要看一下如何实现故障时的邮件通知。
2.1 获取邮箱授权码
实现邮件通知需要获取邮箱授权码,此部分内容可参考《实现keepalived监控与通知》(链接:创建邮件报警媒介类型
web界面在“管理”—“报警媒介类型”中选择要使用的类型,笔者这边演示的是邮件通知,可以通过右上角的“创建媒介类型”来设置,也可以直接修改默认Email名称电子邮件。
创建报警媒介类型部分需要根据使用的是哪家邮箱来进行配置,此外要设置“安全链接”,通过用户名和密码进行认证。
2.3 用户添加报警媒介
在“管理”—“用户”部分找到要进行邮件通知的用户,笔者就不额外创建用户,直接使用Admin。
进入选定用户页面后选择“报警媒介”—“添加”,主要是设置收件人的邮箱,也可设置报警通知的时间和级别。
2.4 创建动作
2.4.1 添加动作
动作部分可选择多个触发条件,另外要注意计算方式部分尽量不要选择“和”。
2.4.2 添加操作
操作部分为故障出现后邮件通知的频率、标题及内容,以及收件人的设置。
2.4.3 添加恢复操作
恢复操作部分为问题解决后的邮件通知,也需要设置收件人。
2.5 验证邮件报警通知
2.5.1 故障邮件通知
笔者将之前监控memcached当前连接数的触发器数值改为3,当超过3个连接时,已设置的收件邮箱可以正常收到通知,并且每60秒收到一次。
2.5.2 故障解除邮件通知
当memcached当前连接数将至触发器设定值以下时,又会自动收到一次故障解除通知。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~