vlambda博客
学习文章列表

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶


一、如何在 Zabbix 执行远程主机的脚本或指令?


场景需求:

1、我们可以通过zabbix_server的web界面的脚本功能实现对已经安装了zabbix_agent主机实现远程关机而不用手动登陆然后输入关机指令

2、我们可以通过zabbix_server的web界面的脚本功能实现某个服务的启动关闭和重启

实验配置过程:

1、创建脚本 打开zabbix_server的web配置界面,选择管理,接着选择蓝色导航条中的脚本选项,最后点击创建脚本。

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

脚本名称:自定义

类型:如果是window或者linux主机类型都是选择脚本。IPMI类型(暂且不讨论)

执行在:有三种类型,

(1)zabbix客户端,说明创建的脚本会在安装了zabbix客户端的主机上运行。

(2) zabbix_server(代理),说明脚本会在zabbix代理上执行。

(3)zabbix服务器,说明脚本会在服务器上面执行。

命令:可以填系统命令,或者某个脚本的绝对路径

要求的主机权限:选择默认就好了

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

创建一个显示主机ip的脚本

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

重要:脚本创建完成后,必须到zabbix_agent的配置文件中开启允许zabbix客户端执行远程命令

把默认的EnableRemoteCommands=0改成EnableRemoteCommands=1

重启zabbix客户端,使配置生效

脚本创建完成后,我们去到zabbix_server的web界面中的监测,然后找到蓝色导航条中的最新数据,找一台已经已经安装了zabbix客户端的window主机执行。因为ifconfig是Linux主机的系统命令,所以测试只能找安装了zabbix客户端的Linux主机测试。

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

然后在主机列中,鼠标左键一下主机名,就会出现一些我们自定义和内置的脚本。显示IP的脚本就是我们刚才创建的。

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

执行结果:

正常的显示出安装了zabbix客户端的linux主机的ip

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶


二、用 Zabbix 监控网站的访问量



需求:监控网站pv和uv的总量和5分钟内的pv和uv的增量

1. PV、UV是什么?

UV:独立访客,每个独立上网电脑视为一位访客,一天之内网站的访客数量

PV:访问量,页面浏览量或者点击量,用户每访问一次记录一次

2. 根据的访问日志统计网站PV 和UV总量

[root@server-web scripts]# cd /usr/local/zabbix/scripts/

[root@server-web scripts]# cat pvuv_number.sh

/bin/bash

desc: used nginx pv and uv

uv_number(){

cat /usr/local/nginx/logs/access.log |awk '{print $1}'|sort|uniq|wc -l

}

pv_number(){

cat /usr/local/nginx/logs/access.log |awk '{print $7}'|wc -l

}

case $1 in

uv|UV)

uv_number;

;;

pv|PV)

pv_number;

;;

esac

exit 0

[root@server-web scripts]# chmod 755 pvuv_number.sh

[root@server-web scripts]# chown zabbix:zabbix pvuv_number.sh

[root@server-web scripts]# chown zabbix:zabbix pvuv_number.sh

[root@server-web scripts]# vim /usr/local/zabbix/etc/zabbix_agentd/nginx.conf

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

[root@server-web scripts]# chmod 755 /usr/local/zabbix/etc/zabbix_agentd/nginx.conf

[root@server-web scripts]# chown zabbix: /usr/local/zabbix/etc/zabbix_agentd/nginx.conf

3. 制作模板

3.1 添加PV的总量

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

3.2 添加5分钟内访问量 #时间选择5分钟,然后在根据zabbix的简单更改的功能获取5分钟内的增量。

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

3.3 UV根据PV的类似

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

4. 实现效果

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶


三、Zabbix触发器配置指定生效星期



分析:希望在星期一时某一监控阈值在固定较高的位子,其余时间则默认该监控阈值处在一个较低的固定位置。

下面以监控某一台主机的CPU使用率为例:

1、去到某一主机的触发器配置里面,找到原有的CPU使用率告警触发器。如图1.1.

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶
图1.1

2、进行入下图2.1配置。

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

图2.1

3、进行下图3.1、3.2配置。

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶
图3.1
学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶
图3.2

4、调整完毕,点击“更新”如图4.1。

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶
图4.1

框内的表达式表示“CPU总使用率持续3分钟大于95%且为周一时” 触发严重告警。

5、另外,还要配置多一条针对该监控项的触发器,重新打开该触发器,点击“克隆”,如图5.1、图5.2. 

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

图5.1 

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

图5.2

图5.2中的表达式书写方法与前面差不多,只是运算符号由原来的“=”,改为”<>”,表示不等于,即是非周一。结合全段表达的内容为“在非周一时段,CPU使用率持续三分钟大于65%”。

之后直接点击添加,即完成配置。


四、如何通过bat脚本与zabbix_sender实时监控应用进程是否正在运行?


为什么要使用zabbix_sender?

zabbix获取数据有超时时间,如果一些数据需要执行比较长的时间才能获取的话,那么zabbix会出现异常,考虑到这种情况,zabbix增加了Trapper功能,客户端自己提交数据给zabbix,这个通道便是trapper。

思路解析:在window主机上,编写一个每隔5秒就会执行tasklist查看进程的bat脚本,如果该脚本找到了指定的进程就通过zabbix_sender发送“is running”到zabbix_server服务器,此时对应的zabbix_trapper(zabbix采集器)监控项就会获取到“is running”这个最新的数据。如果找不到进程的话,就通过zabbix_sender发送“not running”到zabbix_server服务器,此时zabbix_trapper(zabbix采集器)监控项就会获取到“not running”这个最新的数据。最后还要给这个监控应用进程的服务器设置一个触发器,如果触发器的值等于not running就触发告警。

1. 首先我们要准备一个监控应用进程的批处理脚本(bat脚本)

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

@echo off
if "%1" == "h" gotobegin
mshtavbscript:createobject("wscript.shell").run("%~nx0h",0)(window.close)&&exit
:begin
:start
ping -n 5 127.0.0.1>nul
tasklist|findstr "chrome.exe"
if %errorlevel% == 0 (
    "C:ProgramFilesZABBIX_AGENT3binwin64zabbix_sender.exe" -s"zabbix-server" -z 192.168.74.128 -k "test" -o "isrunning"
) else (
    "C:ProgramFilesZABBIX_AGENT3binwin64zabbix_sender.exe" -s"zabbix-server" -z 192.168.74.128 -k "test" -o "notrunning"
)
goto start

脚本解析:

@echo off 作用是关闭回显功能。如果没有此代码,第三行的ping –n 5 127.0.0.1>nul这个命令就会显示到cmd控制台。

if "%1" == "h" gotobegin
mshtavbscript:createobject("wscript.shell").run("%~nx0h",0)(window.close)&&exit
:begin

这段代码的作用是把bat脚本放到后台运行

Tasklist|findstr “chrome.exe”这句代码的作用是列出当前运行的进程,然后通过findstr工具查看chrome.exe程序有没有运行

%ERRORLEVEL% 是批处理脚本的全局变量,返回上一条命令的结果,如果上一条命令执行成功就会返回0,否则返回1.

Goto start 作用是跳转到start函数块执行函数里的命令。函数块前面要以冒号开头,第二行的start前面要加冒号

(安装window版本的zabbix_agent就会附带zabbix_sender)

zabbix_sender用法

zabbix_sender –s “zabbix_server的主机名”-z “zabbix_server的IP”-k “键值名”-o “自定义发送的消息”

"C:ProgramFilesZABBIX_AGENT3binwin64zabbix_sender.exe" -s"zabbix-server" -z 192.168.74.128 -k "test" -o "isrunning" 这条命令是如果存在指定的进程,就发送is running

"C:ProgramFilesZABBIX_AGENT3binwin64zabbix_sender.exe" -s "zabbix-server"-z 192.168.74.128 -k "test" -o "not running" 这条命令是如果不存在指定的进程,就发送not running

(特别注意:为了获取到最新数据,所以这两个命令的键值必须使用相同名称的键值“test”)

2.在zabbix_server界面创建trapper监控项

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

测试效果:

Chorme.exe程序运行,chorme.exe运行状态监控项获取到“is running”

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

Chorme.exe程序没有运行,chorme.exe运行状态监控项获取到“not running”

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

3.配置触发器,如果chorme.exe服务没有运行就要告警

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

实际效果,手动关闭chorme.exe服务,触发告警

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

如有任何问题, 社区正在进行“Zabbix、Prometheus等主流监控工具日常应用在线答疑”,点击文末阅读原文即可参加,同行交流,高手在线解答
觉得本文有用,请转发或点击“在看”,让更多同行看到


 资料/文章推荐:

  • Zabbix教程:从入门到精通

    http://www.talkwithtrend.com/Document/detail/tid/179485


http://www.talkwithtrend.com/Topic/3937


下载 twt 社区客户端 APP

学习四个小案例,让 Zabbix 应用技能更上层楼 | 运维进阶

或到应用商店搜索“twt”