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

相关文章
|
1月前
|
关系型数据库 MySQL 数据安全/隐私保护
windows系统bat批处理 mysql 脚本启动关闭
windows系统bat批处理 mysql 脚本启动关闭
86 3
|
1月前
|
Windows
windows系统vbs脚本 恶搞关不掉的窗口 以及解决办法
windows系统vbs脚本 恶搞关不掉的窗口 以及解决办法
30 2
|
1月前
|
Windows
windows系统vbs脚本 恶搞将系统搞崩 死机 以及解决
windows系统vbs脚本 恶搞将系统搞崩 死机 以及解决
24 1
|
1月前
|
Windows
windows系统vbs脚本 提取文件夹中的所有文件名
windows系统vbs脚本 提取文件夹中的所有文件名
24 0
|
1月前
|
应用服务中间件 nginx Windows
windows系统bat批处理 管理nginx启动 nginx脚本管理bat脚本管理生命周期windows一键nginx启动
windows系统bat批处理 管理nginx启动 nginx脚本管理bat脚本管理生命周期windows一键nginx启动
22 0
|
1月前
|
Java Windows
windows bat脚本实现快速配置JDK 环境变量
windows bat脚本实现快速配置JDK 环境变量
27 0
|
1月前
|
Linux 网络安全 Windows
ssh连接缓慢 ssh连接失败问题 Linux 脚本解决ssh连接缓慢问题,windows解决本地ssh连接失败
ssh连接缓慢 ssh连接失败问题 Linux 脚本解决ssh连接缓慢问题,windows解决本地ssh连接失败
40 0
|
5天前
|
弹性计算 持续交付 Docker
阿里云云效产品使用合集之如何部署到阿里云服务器上的 Windows Server 上的 IIS
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
12天前
|
网络协议 Unix 网络安全
FTP服务器怎么搭建?Windows server搭建FPT服务器
FTP服务器是按照FTP协议提供文件传输服务的计算机。它用于在两台计算机间安全地传输文件,支持用户权限管理和跨平台操作。FTP使用控制连接处理命令,数据连接传输文件,有PORT和PASV模式。要搭建FTP服务器,首先在Windows Server 2008 R2上安装IIS,确保选中FTP服务。接着,创建FTP文件夹作为站点根目录,通过IIS管理器添加FTP站点,配置站点信息、身份验证和权限。测试客户端通过telnet和浏览器访问FTP服务器,确认能成功登录及浏览文件。FTP常用于文件共享和管理,可通过专用工具如FlashFXP上传下载文件。
34 0
FTP服务器怎么搭建?Windows server搭建FPT服务器
|
17天前
|
前端开发 JavaScript 应用服务中间件
windows server + iis 部署若伊前端vue项目
5,配置url重写规则(重写后端请求) 注:如果没有Application Request Routing Cachefourcloudbdueclaim和URL重写,则是第二部的那两个插件没装上 打开iis,点击计算机->点击Application Request Routing Cache -> 打开功能
51 0