开发者社区> 技术小甜> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Nagios 利用NSClient++的check_nrpe方式使用自定义脚本监控windows

简介:
+关注继续查看

如果在windows下用nagios实现资源监控,则需要用到NSClient++,这里分享一个NSClient++自定义脚本,有需要的朋友参考下。


实现:
windows环境下nagios监控程序的进程关闭后自动启动。

首先,编辑NSClient配置文件NSC.ini,去掉以下几行前面的“;”号(去掉注释,使其生效):
 

NRPEListener.dll
script_dir=scripts\
CheckExternalScripts.dll

在NSClient安装目录下的scripts文件夹下,新建一个check_run.bat批处理文件,如下:
 

代码示例:

@echo off
tasklist |find "%1" >NUL
IF ERRORLEVEL 1 GOTO err
IF ERRORLEVEL 0 GOTO ok

:err
echo CRITICAL: Process does not exist
start "" "%2\%1"
exit /B 2


:ok
echo OK: The process of normal
exit /B 0

在NSC.ini文件中[External Scripts]下面添加如下行:
 

代码示例:

check_run=scripts\check_run.bat   Process.exe    pro/path

重启NSClient服务。

在nagios监控主机中,添加如下服务信息:
 

代码示例:

define service{
        use                   generic-service
        host_name             servername
        service_description   check_processname
        check_command         check_nrpe!check_run
        }
 

重启nagios服务,使配置生效。



监控windows上tcp连接数:


@echo off

netstat -an | find /C "TCP" > d:\tcpcount.txt

for /f %%i in (d:\tcpcount.txt) do (

set tcpc=%%i

)


if %tcpc% GTR 5000 ( 

echo  criting: tcp connection count %tcpc%

exit /B 2

)

 

if not %tcpc% GTR 5000 if  %tcpc% GTR 3000 (

echo  warning: tcp connection count %tcpc%

exit /B 1

)  


if not %tcpc% GTR 3000 ( 

echo  ok: tcp connection count %tcpc%

exit /B 0

)


监控windows文件中关键词出现次数:

@echo off

set FILE=D:\dcsLogs\logback\pxylist\common\common-all.log

set ERROR=OutOfMemoryError

for /f "delims=" %%a in ('type %FILE%^|find /C "%ERROR%"') do set myvar=%%a


if %myvar% NEQ 0 ( 

echo CRITICAL:error count %myvar%

exit /B 2

)


if %myvar% EQU 0 ( 

echo OK:error count %myvar%

exit /B 0

)



监控windows文件中关键词出现次数(增加判断文件是否存在):

@echo off

set FILE=D:\dcsLogs\logback\pxylist\common\common-all.log

set ERROR=OutOfMemoryError


setlocal EnableDelayedExpansion

if EXIST %FILE% (

for /f "delims=" %%a in ('type %FILE%^|find /C /I "%ERROR%"') do set myvar=%%a

if !myvar! NEQ 0 ( 

echo CRITICAL:error count !myvar!-OutOfMemory,Please restart pxylist

exit /B 2

)else ( 

echo OK:error count !myvar!

exit /B 0

)

)else (

echo CRITICAL:%FILE% is not exist

exit /B 2

)


监控windows上多个进程名各自是否只跑了一个进程:

@echo off

SET PROCESS1=telegraph.exe
SET PROCESS2=WindowsApplication1.exe

for /f "delims=" %%a in ('tasklist /v /nh /fo csv /fi "IMAGENAME eq %PROCESS1%"^|find /c "%PROCESS1%"') do set myvar=%%a

if %myvar% NEQ 1 (
echo CRITICAL: %PROCESS1% running %myvar% process
exit /B 2
)

for /f "delims=" %%a in ('tasklist /v /nh /fo csv /fi "IMAGENAME eq %PROCESS2%"^|find /c "%PROCESS2%"') do set myvar=%%a

if %myvar% NEQ 1 (
echo CRITICAL: %PROCESS2% running %myvar% process
exit /B 2
)

for /f "delims=" %%a in ('tasklist /nh ^|findstr "%PROCESS1% %PROCESS2%"^|find /v /c "::"') do set myvar=%%a

if %myvar% EQU 2 (
echo OK: %PROCESS1% %PROCESS2% all running 1 process
exit /B 0
)


----------------------------------------------------------------------------------


Exit

退出当前批处理脚本或 Cmd.exe 程序(即,命令解释程序)并返回到曾启动 Cmd.exe 的程序或返回到“程序管理器”。

语法

exit [/b] [ExitCode]

参数

  • /b

  • 退出当前批处理脚本。

  • ExitCode

  • 指定数字编号。

  • /?

  • 在命令提示符显示帮助。

注释

  • 如果在批处理脚本之外使用 /b,就会退出 Cmd.exe。

  • 如果使用 /b,Cmd.exe 将 ERRORLEVEL 设置为指定的 ExitCode。如果退出 Cmd.exe,Cmd.exe 则使用指定的 ExitCode 设置进程退出代码。


关于 exit /b [ExitCode]的详解:

 

功能: Cmd.exe 将 ERRORLEVEL 设置为指定的 ExitCode。如果退出 Cmd.exe,Cmd.exe 则使用指定的 ExitCode 设置进程退出代码。

 

示例:leo.bat。

 

@echo off
echo 命令
exit /b 30194447

 

然后,我们在 CMD 命令提示符下进行操作:


执行:leo.bat


执行:Echo %errorlevel%

30194447
















本文转自leonardos51CTO博客,原文链接:http://blog.51cto.com/leomars/1894581 ,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
GNURadio For Windows编译安装脚本v1.1.1发布
GNURadio也能在Windows上运行了,安装GNURadio时,会自动化下载一系列powershell脚本,在源里进行build。然后它依赖为64位原生二进制文件,使用Visual Studio 2015打包成.msi。
1511 0
【镜像更新】Windows Server 2019 数据中心版
信息摘要: Windows Server 2019 数据中心版镜像更新适用客户: 使用Windows Server的用户版本/规格功能: 镜像ID: win2019_64_dtc_1809_zh-cn_40G_alibase_20190318.
4676 0
Windows server2003配置ftp服务
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/45010139 前言:如果你已经非常清楚的掌握了Windows server 2003的安全机制,那么你可以通过开启Windows自带的ftp服务进行使用,不过很多情况下,这不安全,但是我会告诉你方法,这需要你的Windows安装目录下有对应的ftp安装包。
705 0
+关注
10136
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载