娇w兴 发表于 2017-4-20 09:45:21

Nagios监控/报警Java程序(一) 通过Shell监控/报警

         Nagios监控/预警Java程序网上资料貌似不多,只能自己一步步尝试.经过今天一天的尝试,终于搞定.这里贴出来跟大家分享,希望抛砖引玉!
         这里需要两个步骤,一个是安装好Naigos,我之前博客有说明:http://guoyunsky.iteye.com/blog/1399330 ,以及生成Java程序并且Shell可执行:http://guoyunsky.iteye.com/blog/1401757.
     1.Java程序
         由于Nagios规定了四种状态,所以我这里需要修改一下Java程序.四种状态分别为:


[*]OK —退出代码 0—表示服务正常地工作。
[*]WARNING —退出代码 1—表示服务处于警告状态。
[*]CRITICAL —退出代码 2—表示服务处于危险状态。
[*]UNKNOWN —退出代码 3—表示服务处于未知状态.
   
        修改后的Java程序:

package com.guoyun.study.shell;
public class ShellJavaAnt {
public static final int OK=0;
public static final int WARNING=1;
public static final int CRITICAL=2;
public static final int UNKNOWN=3;
/**
* @param args
*/
public static void main(String[] args) {
if(args.length==0){
System.out.println("CRITICAL");
System.exit(CRITICAL);
}else if(args.length==1){
System.out.println("WARNING");
System.exit(WARNING);
}else if(args.length==2){
System.out.println("UNKNOW");
}else if(args.length>2){
System.out.println("OK");
System.exit(OK);
}
}
}

      修改代码后,通过ant package打包.得到该程序的目录,如这里是$PROJECT_HOME
   
    2.配置Nagios
       配置文件一般在你的$NAGIOS_HOME/etc/objects下.默认安装的话一般在/usr/local/nagios/etc/objects.
       我们这里需要修改commands.cfg和localhost.cfg
       commands.cfg是注册我们要执行的命令,这里还需将可执行的命令/插件放入$NAGISO_HOME/libexec目录下,否则会报,Return code of 127 is out of bounds - plugin may be missing 之类的错误,意思就是没有注册插件.
     1)注册插件,新建shell文件:check_nagios_java_test,放到$NAGISO_HOME/libexec目录下.内容如下:

#!/bin/bash
#
/home/guoyun/workspace/shell-run-java-by-ant/dist/shell-run-java-by-ant-0.1/bin/shell-java-ant "a" "b" "c"
     /home/guoyun/workspace/shell-run-java-by-ant/dist/shell-run-java-by-ant-0.1是我通过ant package生成的
  Java程序具体你根据你的路径更改,然后我这里传入三个参数a,b,c.按照之前Java里代码的话,Nagios应该报警OK,并且返回OK(输出是OK).
     2)在commands.cfg注册该命令,添加如下内容:

define command{
command_namecheck_nagios_java_test
command_line$USER1$/check_nagios_java_test
}
     3)在localhost.cfg文件中注册service,添加如下内容:

define service{
uselocal-service
host_namelocalhost
service_descriptionmonitor java_test
check_commandcheck_nagios_java_test
}
   
    4)以上修改完成后,程序部署完成.先通过命令验证配置文件是否正确:
     /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
   
    5)重启Nagios
       sudo /etc/init.d/nagios restart
   
    6)最后通过浏览器进入http://localhost/nagios中查看Services,就可以看到java_test.同时Status是OK,Status Information是OK.或者你可以修改shell-java-ant这个shell文件中的参数,来观察Nagios中java_test状态是否变化.
   
     以上只能针对localhost,也就是Java程序要和Nagios在同一台机器.如果Java程序和Nagios不在同一台机器,不知道是否可以通过SSH远程执行shell脚本执行.具体待下一次测试.不过可以在Java程序中建立Socket,通过TCP来发送请求.正在尝试中...
更多文章、感悟、分享、勾搭,请用微信扫描:
页: [1]
查看完整版本: Nagios监控/报警Java程序(一) 通过Shell监控/报警