如何通过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:\ProgramFiles\ZABBIX_AGENT3\bin\win64\zabbix_sender.exe" -s"zabbix-server" -z 192.168.74.128 -k "test" -o "isrunning"
    ) else (
      "C:\ProgramFiles\ZABBIX_AGENT3\bin\win64\zabbix_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:\ProgramFiles\ZABBIX_AGENT3\bin\win64\zabbix_sender.exe" -s"zabbix-server" -z 192.168.74.128 -k "test" -o "isrunning" 这条命令是如果存在指定的进程,就发送is running
    "C:\ProgramFiles\ZABBIX_AGENT3\bin\win64\zabbix_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服务,触发告警

原文地址:https://blog.51cto.com/14483703/2472182

时间: 2024-11-08 22:21:11

如何通过bat脚本与zabbix_sender实时监控应用进程是否正在运行的相关文章

脚本应用之三:实时监控网卡流量

作用:实时监控网卡接收和发送的速率,以及数据总量,并设置报警数值. 测试版本:centos 系列 实现:通过ifconfig指令获取数据,计算后循环同一位置打印信息,一秒一次: tput bel指令报警 不足:一次只能监控一块网卡: 由于7.x 于5.x和6.x,ifconfig获取信息有差异,需要根据系统版本手动指定相关参数, 7.x 请将第一个位置参数设置为 "7",其他版本为"6"(默认,可不指定) 演示: 脚本会自动列出发现的网卡,选择欲监控的网卡时,需要指

关于nagios系统下使用shell脚本自定义监控插件的编写以及没有实时监控图的问题

关于nagios系统下shell自定义监控插件的编写.脚本规范以及没有实时监控图的问题的解决办法 在自已编写监控插件之前我们首先需要对nagios监控原理有一定的了解 Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控.检测功能都是通过各种插件来完成的. 启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列, Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来. N

java利用WatchService实时监控某个目录下的文件变化并按行解析(注:附源代码)

首先说下需求:通过ftp上传约定格式的文件到服务器指定目录下,应用程序能实时监控该目录下文件变化,如果上传的文件格式符合要求,将将按照每一行读取解析再写入到数据库,解析完之后再将文件改名. 一. 一开始的思路 设置一个定时任务,每隔一分钟读取下指定目录下的文件变化,如果有满足格式的文件,就进行解析. 这种方式很繁琐,而且效率低,效率都消耗在了遍历.保存状态.对比状态上了! 而且无法利用OS的很多功能. 二. WatchService介绍 1. 该类的对象就是操作系统原生的文件系统监控器!我们都知

BAT脚本编写教程

windows批处理 (cmd/bat) 编程详解 开始之前先简单说明下cmd文件和bat文件的区别:在本质上两者没有区别,都是简单的文本编码方式,都可以用记事本创建.编辑和查看.两者所用的命令行代码也是共用的,只是cmd文件中允许使用的命令要比bat文件多.cmd文件只有在windows2000以上的系统中才能运行,而bat文件则没有这个限制.从它们的文件描述中也可以看出以上的区别:cmd文件的描述是"windows nt命令脚本", bat文件的描述是"ms dos批处理

监控开发之用python扩展dstat插件自定义实时监控

dstat是一个python开源的实时监控工具,一般是用来做系统性能监控的.咱们这里只是提他的自定义插件开发,用来打造自己的dstat. 有朋友可能还没清楚是啥意思, 咱们查看系统的状体状态有人喜欢用vmstat,也有人喜欢用dstat.相比来说dstat的功能模块更全一点是,这里还只是说查看系统性能方面的 !   如果想一边查看,系统的各方面性能指标,还想看你应用的一些个负载相关,比如某个程序的负载,mongodb的锁lock百分比,mysql连接数...   懂了吧 ! 下面是dstat的插

centos7.x rsync+inotify实时监控备份

#简介 rsync 官方描述 他是一个快速拷贝工具,可以复制到本地或者远程 Rsync is a fast and extraordinarily versatile file  copying  tool.   It can  copy  locally,  to/from  another  host  over  any remote shell, or to/from a remote rsync daemon.  It offers a  large  number  of  opti

Ntopng 网络流量实时监控系统搭建

下面实现Ntopng的rpm包安装 关于使用源码包也很简单,主要是Centos要提前配置EPEL-RELEASE方便依赖包安装, 在编译源码包就OK Ntopng介绍: Ntopng是原ntop下一代版本,网络流量实时监控显示.Ntopng类似于RMON远端网络监控代理,具有内置的Web服务能力,使用redis键值服务按时间序列存储统计信息.你可以在任何指定的监控服务器上安装ntopng,只需使用任一web浏览器,就能实时访问服务器上的流量报告了. ntopng用户可以使用一个网页浏览器浏览的N

nagios 实时监控 iptables 状态

实时监控Iptables,防止人为关闭后,忘了开启,或者监控规则是否有增删. 在客户端(被监控端): # cd /usr/local/nagios/etc # vim nrpe.cfg 增加如下内容: command[check_iptables]=/usr/local/nagios/libexec/check_iptables.sh # cd /usr/local/nagios/libexec # touch check_iptables.sh # chmod 755 check_iptabl

使用python和批处理bat脚本ping检测主机连通性

今天因为工作需求,要在报盘机器上(windows系统)检测与上手连接的网络可用性,使用zabbix自身的功能并不能解决这个问题.所以一开始考虑使用python脚本调系统的ping命令来检测 然后再使用zabbix来监控就可完成任务. 网上查了下,发现使用subprocess和shlex可以完成检测,于是参考着整了个小脚本 #!/usr/bin/env python # -*- coding: utf-8 -*- #author:qingmiao import subprocess import