博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nagios经check_http监视web申请书server多个tomcat维修
阅读量:6970 次
发布时间:2019-06-27

本文共 16043 字,大约阅读时间需要 53 分钟。

怎么样nagios显示器tomcat,它是一个相对简单的和复杂的事情。简单是因为,只有监控的假设web应用服务器tomcat无论是服务正常进行,很简单。假设你要监视tomcat其他例子,例如连接数jvm内存使用等更复杂,google没有合适的监控脚本;假设你要监视web上述多个应用程序tomcat服务器,并且非常多tomcat服务都是跳转式的。那就须要多做非常多事情。

 

一般通常都使用tcp tomcatport的方式,只是这有一个bug就是tomcat假死的情况下,tcp port是OK的,可是tomcat里面部署的web应用事实上已经不能正常訪问,这个时候须要使用http方式来监控tomcat的状态。

 

所以本文就记录了怎样採用http方式来监控一台web服务器上多个tomcat应用服务器。

 

1在tomcat web服务器上安装nrpe客户端:

Rpm包下载地址为:

1.1。rpm方式安装nrpe客户端

[root@localhost nagios]# ll总计 768-rw-r--r-- 1 root root 713389 12-16 12:08 nagios-plugins-1.4.11-1.x86_64.rpm-rw-r--r-- 1 root root  32706 12-16 12:09 nrpe-2.12-1.x86_64.rpm-rw-r--r-- 1 root root  18997 12-16 12:08 nrpe-plugin-2.12-1.x86_64.rpm [root@localhost nagios]# rpm -ivh *.rpm --nodeps  --forcePreparing...                ########################################### [100%]   1:nagios-plugins         ########################################### [ 33%]id: nagios:无此用户   2:nrpe                   ########################################### [ 67%]   3:nrpe-plugin            ########################################### [100%][root@cache-1 ~]#

1.2 在配置文件最末尾,加入配置信息以及监控主机服务器ip地址

[root@ localhost nagios]# vim /etc/nagios/nrpe.cfg# add by tim on 2014-06-11command[check_users]=/usr/local/nagios/libexec/check_users -w 8 -c 15command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sdacommand[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z#command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 50 -c 80command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 750 -c 800command[check-host-alive]=/usr/local/nagios/libexec/check_ping -H 10.xx.xx.10 -w 3000.0,80% -c 5000.0,100% -p 5allowed_hosts = 127.0.0.1,10.xx.xxx.xx1

check下命令是否生效:

[root@webserver nrpe-2.15]# /usr/local/nagios/libexec/check_users -w 8 -c 15USERS OK - 2 users currently logged in |users=2;8;15;0[root@webserver nrpe-2.15]#

看到已经USERS OK -….命令已经生效。

 

1.3 启动nrpe报错例如以下:

[root@webserver ~]# service nrpe restartShutting down nrpe:                                        [失败]Starting nrpe: /usr/sbin/nrpe: error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory                                                           [失败][root@webserver ~]#[root@db-m2-slave-1 nagios_client]# service nrpe startStarting nrpe: /usr/sbin/nrpe: error while loading shared libraries: libssl.so.6: cannot open shared object file: No such file or directory                                                           [失败][root@db-m2-slave-1 nagios_client]#

建立软连接

[root@db-m2-slave-1 nagios_client]# ln -s /usr/lib64/libssl.so /usr/lib64/libssl.so.6

 (假设没有libssl.so,就採用别的libssl.so.10来做软连接,ln -s /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.6)

[root@db-m2-slave-1 nagios_client]#

再又一次启动例如以下:

[root@webserver nagios_client]# service nrpe startStarting nrpe: /usr/sbin/nrpe: error while loading shared libraries: libcrypto.so.6: cannot open shared object file: No such file or directory                                                           [失败][root@web-10 ~]# ll /usr/lib64/libcrypto.solrwxrwxrwx. 1 root root 18 10月 13 2013 /usr/lib64/libcrypto.so -> libcrypto.so.1.0.0[root@webserver nagios_client]#

再建软链接:

[root@webserver nagios_client]# ln -s /usr/lib64/libcrypto.so /usr/lib64/libcrypto.so.6(或者假设没有libcrypto.so,就採用libcrypto.so.10做软连接。 ln -s /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.6)[root@webserver nagios_client]# service nrpe startStarting nrpe:                                             [确定][root@webserver nagios_client]#

1.4 检測下nrpe是否正常执行:

去nagios服务器端check下

[root@cache-2 ~]#  /usr/local/nagios/libexec/check_nrpe -H 10.xx.xx.10NRPE v2.12[root@cache-2 ~]#

看到返回NRPE v2.15表示已经连接成功。

 

1.5 在web应用下加入检測jsp文件

(1) 建立測试文件

vim ./webapps/nagios_test_0611/nagios_test_0611.jsp<%@ page language="java" contentType="text/html; charset=gb2312"pageEncoding="gb2312"%>
nagios test here
Now time is: <%=new java.util.Date()%>

(2) check下check_http命令

[root@webserver~]# /usr/local/nagios/libexec/check_http -I 10.xx.xx.10 -p 8300 -u /nagios_test_0611/nagios_test_0611.jsp -e 200HTTP CRITICAL - Invalid HTTP response received from host on port 8300: HTTP/1.1 404 Not Found

须要重新启动一下tomcat,使新加入的jsp生效能打开,执行例如以下stop start命令:

/usr/local/app/apache-tomcat-6.0.37_8300/bin/shutdown.sh

/usr/local/app/apache-tomcat-6.0.37_8300/bin/startup.sh

 再执行check_http命令

[root@webserver~]# /usr/local/nagios/libexec/check_http -I 10.xx.xx.10 -p 8300 -u /nagios_test_0611/nagios_test_0611.jsp -e 200HTTP OK: Status line output matched "200" - 571 bytes in 0.882 second response time |time=0.882479s;;;0.000000 size=571B;;;0[root@ webserver ~]#

 

1.6查看NRPE的监控命令

[root@webserver nrpe-2.15]#  cat /etc/nagios/nrpe.cfg |grep -v "^#"|grep -v "^$"log_facility=daemonpid_file=/var/run/nrpe.pidserver_port=5666nrpe_user=nagiosnrpe_group=nagios dont_blame_nrpe=0debug=0command_timeout=60connection_timeout=300command[check_users]=/usr/local/nagios/libexec/check_users -w 8 -c 15command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20command[check_sda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sdacommand[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Zcommand[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 750 -c 800command[check-host-alive]=/usr/local/nagios/libexec/check_ping -H 10.xx.xx.10 -w 3000.0,80% -c 5000.0,100% -p 5allowed_hosts=127.0.0.1,10.xx.xxx.xx1[root@webserver nrpe-2.15]#

2。去nagios服务器端加入host等监控信息。

2.1 在hosts.cfg里面加入主机信息

define host{        use                     linux-server        host_name               webserver        alias                   webserver        address                 10.xx.xx.10        check_command           check-host-alive        max_check_attempts              5        check_period                    24x7        contact_groups                  ops        notification_interval           60        notification_period             24x7        notification_options            d,u,r        }

2.2 在service.cfg里面加入web机器监控的命令信息

# No.007 webserver#  service definitiondefine service{        host_name               webserver        service_description     check_load        check_command           check_nrpe!check_load        max_check_attempts      5        normal_check_interval   3        retry_check_interval    2        check_period            24x7        notification_interval   10        notification_period     24x7        notification_options    w,u,c,r        contact_groups          opsweb        } define service{        host_name               webserver        service_description     check-host-alive        check_command           check-host-alive        max_check_attempts      5        normal_check_interval   3        retry_check_interval    2        check_period            24x7        notification_interval   10        notification_period     24x7        notification_options    w,u,c,r        contact_groups          opsweb        } define service{        host_name               webserver        service_description     Check Disk sda1        check_command           check_nrpe!check_sda1        max_check_attempts      5        normal_check_interval   3        retry_check_interval    2        check_period            24x7        notification_interval   10        notification_period     24x7        notification_options    w,u,c,r        contact_groups          opsweb        } define service{        host_name               webserver        service_description     Total Processes        check_command           check_nrpe!check_total_procs        max_check_attempts      5        normal_check_interval   3        retry_check_interval    2        check_period            24x7        notification_interval   10        notification_period     24x7        notification_options    w,u,c,r        contact_groups          opsweb        } define service{        host_name               webserver        service_description     Current Users        check_command           check_nrpe!check_users        max_check_attempts      5        normal_check_interval   3        retry_check_interval    2        check_period            24x7        notification_interval   10        notification_period     24x7        notification_options    w,u,c,r        contact_groups          opsweb        }define service{        host_name               webserver        service_description     Check Zombie Procs        check_command           check_nrpe!check_zombie_procs        max_check_attempts      5        normal_check_interval   3        retry_check_interval    2        check_period            24x7        notification_interval   10        notification_period     24x7        notification_options    w,u,c,r        contact_groups          opsweb        } define service{        host_name               webserver        service_description     Check Tomcat 9300 Status        check_command           check_nrpe!check_tomcat_9300_status        max_check_attempts      5        normal_check_interval   3        retry_check_interval    2        check_period            24x7        notification_interval   10        notification_period     24x7        notification_options    w,u,c,r        contact_groups          opsweb        }

2.3 在vim contacts.cfg加入新的opsweb邮件组信息

define contactgroup{        contactgroup_name       opsweb        alias                   pl ops team        members                 tim,mch,nagiosadmin        }

2.4 加入新的监控tomcat的命令,check_tomcat_9300_status

这里不採用check_tcp!8080port的方式。是由于在实际中tomcat服务假死之后。jsp的网页都是打不开的,可是这个监控port8080都是正常的。不会报警出来。所以採用check_http的方式。新建立一个通用的/nagios_test_0611/nagios_test_0611.jsp文件。来检測这个jsp的訪问情况。例如以下所看到的:

vim commands.cfg# add by tim on 20140611define command{        command_name    check_tomcat_9300_status        command_line    $USER1$/check_http -I $HOSTADDRESS$ -p $PORT$ -u $URL$ -e $N200$ -w $Warning$ -c$Cri$        }

Jsp文件内容例如以下:

[root@webserver webapps]# vim . /nagios_test_0611/nagios_test_0611.jsp<%@ page language="java" contentType="text/html; charset=gb2312"pageEncoding="gb2312"%>
nagios test here
Now time is: <%=new java.util.Date()%>

2.5 在被监控客户端的nrpe.cfg配置文件中面加入tomcatport配置信息:

command[check_tomcat_9300_status]=/usr/local/nagios/libexec/check_http -I 10.xx.xx.10 -p 9444 -u /nagios_test_0611/nagios_test_0611.jsp -e 200 -w 5 -c 10command[check_tomcat_8300_status]=/usr/local/nagios/libexec/check_http -I 10.xx.xx.10 -p 8300 -u /nagios_test_0611/nagios_test_0611.jsp -e 200 -w 5 -c 10

2.6 測试报错

[root@cache-2 objects]# /usr/local/nagios/libexec/check_nrpe -H 10.xx.xx.10  -c check_loadNRPE: Unable to read output[root@cache-2 objects]#

已经加入了tomcat930port,如今再加入一个tomcat8300port

 

去服务器端shell命令行里面check下

/usr/local/nagios/libexec/check_nrpe -H 192.168.15.178 -c check_mysql_myisam_lock[root@cache-2 etc]# /usr/local/nagios/libexec/check_nrpe -H 10.xx.xx.10  -c check_loadNRPE: Unable to read output[root@cache-2 etc]#

相同报错,那么可能就是nagios被监控端的问题。

终于检查是nrpe.cfg里面路径有误,源代码安装默认路径是:/usr/local/nagios/libexec/check_http,rpm安装默认路径是:/usr/lib/nagios/plugins/。这里是rpm安装。所以nrpe.cfg配置文件中面用后面rpm的路径/usr/lib/nagios/plugins/,替换下service nrpe restart之后,问题解决。例如以下图所看到的:

3 tomcat多port监控报警

已经加入了tomcat930port。如今再加入一个tomcat8300port

3.1 客户端的nrpe.cfg里面加入配置

[root@webserver root]# vim /etc/nagios/nrpe.cfgcommand[check_tomcat_8300_status]=/usr/lib/nagios/plugins/check_http -I 10.xx.xx.10 -p 8300 -u /xx_xx_xx/index.html -e 200 -w 5 -c 10

3.2 nagios服务器端

加入command命令

[root@cache-2 etc]# vim ./objects/commands.cfgdefine command{        command_name    check_tomcat_8300_status        command_line     $USER1$/check_http -I $HOSTADDRESS$ -p $PORT$ -u $URL$ -e $N200$ -w $Warning$ -c$Cri$        }

加入service服务

define service{        host_name               webserver        service_description     Tomcat_8300_Status        check_command           check_nrpe!check_tomcat_8300_status        max_check_attempts      5        normal_check_interval   3        retry_check_interval    2        check_period            24x7        notification_interval   10        notification_period     24x7        notification_options    w,u,c,r        contact_groups          opsweb        }

3.3 在nagios服务器上check下新加入的命令是否生效

[root@cache-2 etc]# /usr/local/nagios/libexec/check_nrpe -H 10.xx.xx.10  -c check_tomcat_8300_statusHTTP OK HTTP/1.1 200 OK - 611 bytes in 0.003 seconds |time=0.003152s;5.000000;10.000000;0.000000 size=611B;;;0[root@cache-2 etc]#

看到命令已经生效。

 

3.4 重新启动nagios服务器,查看结果

[root@cache-2 etc]# service nagios reloadRunning configuration check...Reloading nagios configuration...done[root@cache-2 etc]#

重新启动后,过3分钟,新的tomcat8300已经监控起来了,例如以下图所看到的:

为了验证tomcat的监控效果。在web服务器客户端,停掉tomcat的9300port,一会就会收到报警email,也会在nagios页面看到红色报警提示。例如以下所看到的:

这标示2个nagios选项监控的是2个port,一个9300。一个8300;

 

4  加入新port8200检測-e 200报错问题解决

[root@webserver OCC_MANAGER_Web]#  /usr/lib/nagios/plugins/check_http -I 10.xx.xx.10 -p 8200 -u /OCC_REPORT_Web/index.html -e 200 -w 5 -c 10HTTP CRITICAL - Invalid HTTP response received from host on port 8200[root@webserver OCC_MANAGER_Web]#

4.1 直接訪问tomcat服务以及indexhtml

http://10.xx.xx.10:8200/OCC_REPORT_Web/index.html是能够訪问的,可是会跳转到

的页面。证明web应用都是正常的,仅仅是已经被跳转到别的域名页面而已。

 

4.2 –v具体分析

这个时候tomcat服务器是正常running的。并且web应用也是正常返回的,仅仅是执行 看到这里大概意思是从8200port获取无效的HTTP响应。由于这条命令最重要的是监控/OCC_REPORT_Web/index.html获取http信息并通过-e 200来推断http正常响应的OK状态,所以去掉报警的-w 5 –c 10參数。去掉-e 200的字符比对信息。看下check的返回信息。

[root@webserver OCC_MANAGER_Web]# /usr/lib/nagios/plugins/check_http -I 10.xx.xx.10 -p 8200 -u /OCC_REPORT_Web/index.htmlHTTP OK - HTTP/1.1 302 Found - 0.003 second response time |time=0.003367s;;;0.000000 size=317B;;;0

看到返回的是HTTP/1.1 302 Found 查看Tomcat错误代码知道是产生了新的URL信息

……

301  Moved Permanently  客户请求的文档在其它地方。新的URL在Location头中给出,浏览器应该自己主动地訪问新的URL。

302  Found  相似于301。但新的URL应该被视为暂时性的替代。而不是永久性的。注意,在HTTP1.0中相应的状态信息是“Moved Temporatily”。

……

最后加入-v參数调试看具体的获取信息:

[root@webserver OCC_MANAGER_Web]# /usr/lib/nagios/plugins/check_http -H www.xxxx.com -I 10.xx.xx.10 -p 8200 -u /OCC_REPORT_Web/index.html -vGET /OCC_REPORT_Web/index.html HTTP/1.0User-Agent: check_http/v1861 (nagios-plugins 1.4.11)Connection: closeHost: www.xxxx.com http://10.xx.xx.10:8200/OCC_REPORT_Web/index.html is 323 charactersSTATUS: HTTP/1.1 302 Found**** HEADER ****Server: Apache-Coyote/1.1Set-Cookie: ploccSessionId=45CD9C9921A5B89C59FCB2E34FE52734; Path=/Location: http://www.xxx.com/OCC_SSO_Web/login.htm?

redirect=http%3A%2F%2Fwww.xxx.com%2FOCC_REPORT_Web%2Findex.html Content-Length: 0 Date: Thu, 12 Jun 2014 02:52:45 GMT Connection: close **** CONTENT **** HTTP OK - HTTP/1.1 302 Found - 0.003 second response time |time=0.003268s;;;0.000000 size=323B;;;0

看到页面重定向到域名系统,tomcat服务器是正常执行的。所以302 Found也能够表示tomca服务器正常运转无误,由于架构是用的lvs负载均衡。所以假设动用跳转后的公用域名来推断的话,就不能确定是否是这个主机的tomcat,由于公用域名每次仅仅相应当中一个tomcat服务,由于这里是监控具体的一台web服务器的tomcat,所以去监控302port也是一个不错的办法,这里能够去改动客户端nrpe.cfg里面的8200port的监控命令。改成监控tomcat的302状态值:

Vim /etc/nagios/nrpe.cfg/usr/lib/nagios/plugins/check_http -I 10.xx.xx.10 -p 8200 -u /OCC_REPORT_Web/index.html  -e 302 -w 3 -c 10

报错记录(一): NRPE: Unable to read output

[1402557345] SERVICE ALERT: webserver;Tomcat_6100_OCC_SSO_Service_Status;UNKNOWN;SOFT;3;NRPE: Unable to read output

 解决:通常是nrpe路径不正确。

 

报错记录(二):CHECK_NRPE: Error - Could not complete SSL handshake.

[root@cache-2 etc]# /usr/local/nagios/libexec/check_http -I 10.xx.3.xx -p 8100 -u /tradeAdmin/index.html

HTTP OK: HTTP/1.1 302 Found - 319 bytes in 0.064 second response time |time=0.064033s;;;0.000000 size=319B;;;0

[root@cache-2 etc]#

[root@cache-2 etc]# /usr/local/nagios/libexec/check_nrpe -H 10.xx.3.xx -c check_load

CHECK_NRPE: Error - Could not complete SSL handshake.

[root@cache-2 etc]#

解决:/etc/nagios/nrpe.cfg里面没有加入nagios服务器主机ip地址

Vim /etc/nagios/nrpe.cfg

allowed_hosts=127.0.0.1,10.xx.xxx.xx1

之后重新启动nrpeservice nrpe restart;再去nagios服务器上验证OK:

[root@cache-2 etc]# /usr/local/nagios/libexec/check_nrpe -H 10.xxx.3.xx -c check_loadOK - load average: 0.43, 0.17, 0.06|load1=0.430;15.000;30.000;0; load5=0.170;10.000;25.000;0; load15=0.060;5.000;20.000;0;[root@cache-2 etc]#

 

版权声明:本文博主原创文章。博客,未经同意不得转载。

你可能感兴趣的文章
Java计算文件的SHA码和MD5码
查看>>
Tomcat7基于Redis的Session共享实战一
查看>>
Linux下使用ps命令来查看Oracle相关的进程
查看>>
使用两个路由器扩展家庭无线网络
查看>>
Spark metrics on wordcount example
查看>>
【SQL Sever】SQL Sever数据库重命名
查看>>
Javascript数组中shift()和push(),unshift()和pop()操作方法使用
查看>>
Linux搭建一个FTP服务器
查看>>
Quick Touch – 在 iOS 设备运行的 “Touch Bar”
查看>>
Post with HttpClient
查看>>
仰视源代码,实现strcpy
查看>>
【Bootstrap Method】Evaluating The Accuracy of a Classifier
查看>>
让 Python 带你进入开源的世界——Git 从入门到与他人协作开发
查看>>
解决Flask局域网内访问不了的问题
查看>>
PHP获取今天、昨天、明天的日期
查看>>
[转载]DLL劫持生成器 源码开放(纯WINDOWS SDK)+ 实例分析
查看>>
在eclipse上Checkstyle的安装和使用
查看>>
控制流程完整性:给大家介绍一种“另类”的Javascript反分析技术
查看>>
vertica系列:数据的导入导出
查看>>
centos7如何添加开机启动服务/脚本
查看>>