如何通过Zabbix获取监控数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过Zabbix获取监控数据相关的知识,希望对你有一定的参考价值。

参考技术A   做过Zabbix的同学都知道,Zabbix通过专用的Agent或者SNMP收集相关的监控数据,然后存储到数据库里面实时在前台展示。Zabbix监控数据主要分为以下两类:
  历史数据:history相关表,从history_uint表里面可以查询到设备监控项目的最大,最小和平均值,即存储监控数据的原始数据。
  趋势数据:trends相关表,趋势数据是经过Zabbix计算的数据,数据是从history_uint里面汇总的,从trends_uint可以查看到监控数据每小时最大,最小和平均值,即存储监控数据的汇总数据。
  Zabbix可以通过两种方式获取历史数据:
  1.通过Zabbix前台获取历史数据
  通过Zabbix前台查看历史数据非常简单,可以通过Monitoring->Lastest data的方式查看。也可以点击右上角的As plain test按钮保存成文本文件。
  2.通过前台获取的数据进行处理和二次查询有很多限制,因此可以通过SQL语句直接从后台DB查询数据。本回答被提问者和网友采纳

如何通过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脚本)
    技术图片
    @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:ProgramFilesABBIX_AGENT3inwin64zabbix_sender.exe" -s"zabbix-server" -z 192.168.74.128 -k "test" -o "isrunning"
    ) else (
      "C:ProgramFilesABBIX_AGENT3inwin64zabbix_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脚本放到后台运行
    Ping –n 5 127.0.0.1>nul 这句代码的意思是ping本地地址,有5条显示记录(如果要每隔十秒或者几十秒执行脚本,可以修改-n后面的参数ping -n 后面的数字越大,脚本执行的间隔越长),然后把ping的结果重定向到nul就是不会输出内容到cmd控制台,
    (Ping –n 5127.0.0.1>nul与goto start这句语句结合,实现每5秒执行一次这个脚本。)
    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:ProgramFilesABBIX_AGENT3inwin64zabbix_sender.exe" -s"zabbix-server" -z 192.168.74.128 -k "test" -o "isrunning" 这条命令是如果存在指定的进程,就发送is running
    "C:ProgramFilesABBIX_AGENT3inwin64zabbix_sender.exe" -s "zabbix-server"-z 192.168.74.128 -k "test" -o "not running" 这条命令是如果不存在指定的进程,就发送not running
    (特别注意:为了获取到最新数据,所以这两个命令的键值必须使用相同名称的键值“test”

2.在zabbix_server界面创建trapper监控项
技术图片
测试效果:
Chorme.exe程序运行,chorme.exe运行状态监控项获取到“is running”
技术图片
Chorme.exe程序没有运行,chorme.exe运行状态监控项获取到“not running”
技术图片
3.配置触发器,如果chorme.exe服务没有运行就要告警
技术图片
实际效果,手动关闭chorme.exe服务,触发告警
技术图片

以上是关于如何通过Zabbix获取监控数据的主要内容,如果未能解决你的问题,请参考以下文章

如何通过Zabbix获取监控数据

如何从Zabbix数据库中获取监控数据

如何通过Zabbix获取监控数据

如何通过Zabbix获取监控数据

如何通过Zabbix获取监控数据

如何通过zabbix 获取监控数据