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 ,如需转载请自行联系原作者

目录
打赏
0
0
0
0
143
分享
相关文章
PowerShell 脚本编写 :自动化Windows 开发工作流程
PowerShell 脚本编写 :自动化Windows 开发工作流程
168 0
|
4月前
|
.NET 隐藏/自定义windows系统光标
【10月更文挑战第20天】在.NET中,可以使用`Cursor`类来控制光标。要隐藏光标,可将光标设置为`Cursors.None`。此外,还可以通过从文件或资源加载自定义光标来更改光标的样式。例如,在表单加载时设置`this.Cursor = Cursors.None`隐藏光标,或使用`Cursor.FromFile`方法加载自定义光标文件,也可以将光标文件添加到项目资源中并通过资源管理器加载。这些方法适用于整个表单或特定控件。
记windows自定义bat脚本自启动
【8月更文挑战第27天】在Windows系统中,可让自定义bat脚本自启动的方法有两种:一是利用“启动”文件夹,通过创建bat脚本的快捷方式并将其放置于该文件夹;二是使用任务计划程序,创建一个启动时触发的任务来运行bat脚本。需确保脚本正确安全,避免对系统产生不良影响。
468 0
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
【Azure 应用服务】App Service for Windows 环境中为Tomcat自定义4xx/5xx页面
【Azure 应用服务】App Service for Windows 环境中为Tomcat自定义4xx/5xx页面
|
8月前
|
windows系统vbs脚本 提取文件夹中的所有文件名
windows系统vbs脚本 提取文件夹中的所有文件名
59 0
监控Windows操作 记录系统动作
http://softbbs.pconline.com.cn/10096274.html
595 0