ssh如何开发服务监控程序

问题描述

如何在tomcat服务器启动后就监控数据库,用来定时发送邮件、短信、消息等,这个监控服务应该如何实现或给我点提示?

解决方案

你的意思应该就是在tomcat启动后监控数据库某个表,然后定时发送邮件、短信、消息?如果是这个意思,那么有以下几个办法:1.使用java ee中的Listener,具体方式,就是实现ServletContextListener接口,并且在实现类中,使用jdk的Timer、TimerTask完成定时任务。具体可参考:http://blog.csdn.net/jinchun1234/article/details/4205358这种方式的缺点:使用jdk的timer,不满足精确度很高的定时任务,而且某个任务出现问题,会导致timer死掉,不再执行。2.你的项目使用了spring,可以通过spring集成timer来完成定时任务,可参考:http://blog.csdn.net/qingzhizhu888/article/details/4500922但是我更建议使用quartz这个定时任务框架。1.2方式都是依赖于tomcat应用,即tomcat挂掉,那么定时任务的线程也随之消失。3.使用独立的定时任务应用监控数据库某个表,由于你需要定时发送邮件、短信、消息,会出现线程执行比较久的情况,那么在独立的定时任务的应用中完成,对tomcat跑的应用无任何影响。简单点,使用1方式。如果定时要求比较高,就使用spring+quartz,如果定时频率高,且耗时长,推荐第三种。
解决方案二:
建议LZ参照一下这个软件——ManageEngine Applications Manager,它支持对各种软硬件资源的监控,包括。可以把软件下来,是商业软件,但是可以免费使用,有使用限制,开发当中够用了,LZ可以参照它监控了哪些数据和指标,甚至可以反编译看它的源码(俺就不厚道地这么干过)。
解决方案三:
如果你是linux服务器 且需要报警 可以参考我的#!/bin/sh mailAddresses=(13466789569@139.com);function sendMail() { for address in ${mailAddresses[*]}; do echo $1 | mutt -s $1 13466789569@139.com $address; done; }#服务不可用监控tomcatSSonlinePid=`ps aux | grep tomcat-ssonline | grep -v grep | grep -v retomcat | awk '{print $2}'` ;echo "tomcat ssonline pid=" $tomcatSSonlinePid;if [ -z "$tomcatSSonlinePid" ]then sh /usr/program/scripts/startSsonline.sh & sendMail "ssonline alert-server tomcat-ssonline not start,starting!";fitomcatForumPid=`ps aux | grep tomcat-forum | grep -v grep | grep -v tail | grep -v retomcat | awk '{print $2}'` ;echo "tomcat forum pid=" $tomcatForumPid;if [ -z "$tomcatForumPid" ]then sh /usr/program/scripts/startForum.sh & sendMail "ssonline alert-server tomcat-forum not start,starting!";fitomcatV1Pid=`ps aux | grep tomcat-v1 | grep -v grep | grep -v tail | grep -v tail | grep -v retomcat | awk '{print $2}'` ;echo "tomcat v1 pid=" $tomcatV1Pid;if [ -z "$tomcatV1Pid" ]then sh /usr/program/scripts/startV1.sh & sendMail "ssonline alert-server tomcat-v1 not start,starting!";fijamesPid=`ps aux | grep james | grep -v grep | grep -v tail | grep -v retomcat | awk '{print $2}'` ;echo "james pid=" $jamesPid;if [ -z "$jamesPid" ]then sh /usr/program/scripts/startJames.sh & sendMail "ssonline alert-server tomcat-james not start,starting!";fimysqlPid=`ps aux | grep libexec/mysqld | grep -v grep | grep -v tail | grep -v retomcat | awk '{print $2}'` ;echo "mysql pid=" $mysqlPid;if [ -z "$mysqlPid" ]then /usr/local/mysql/bin/mysqld_safe & sendMail "ssonline alert-mysql not start,starting!";fi#服务异常监控wget http://localhost:8080/monitor/jvm/status.jsp -O status;ssonlineStatus=` cat ./status | tr 'n' ' ' | tr 'r' ' ' | awk 'gsub(/^ *| *$/,"")'`;echo "ssonline status";echo $ssonlineStatus;if [ -n v1Status -a "200" = "$ssonlineStatus" ]then echo "ssonline ok";else sendMail "ssonline alert-tomcat-ssonline status warn!";fiwget http://localhost:9080/forum/monitor/jvm/status.jsp -O status;forumStatus=` cat ./status | tr 'n' ' ' | tr 'r' ' ' | awk 'gsub(/^ *| *$/,"")'`;echo "forum status";echo $forumStatus;if [ -n v1Status -a "200" = "$forumStatus" ]then echo "forum ok";else sendMail "ssonline alert-tomcat-forum status warn!";fiwget http://localhost:10080/v1/monitor/jvm/status.jsp -O status;v1Status=` cat ./status | tr 'n' ' ' | tr 'r' ' ' | awk 'gsub(/^ *| *$/,"")'`;echo "v1 status";echo $v1Status;if [ -n v1Status -a "200" = "$v1Status" ]then echo "v1 ok";else sendMail "ssonline alert-tomcat-v1 status warn!";fiwget http://localhost/monitor/status_db.jsp -O status;dbStatus=` cat ./status | tr 'n' ' ' | tr 'r' ' ' | awk 'gsub(/^ *| *$/,"")'`;echo "mysql status";echo $dbStatus;if [ -n v1Status -a "200" = "$dbStatus" ]then echo "mysql ok";else sendMail "ssonline alert-mysql status warn!";fi#端口异常监控ports=(80 8080 9080 10080 25 110 11211 3306);for port in ${ports[*]}; do status=`netstat -ntlp | grep :$port`; echo "check port " $port " " $status; if [ -z "$status" ]then echo "ssonline alert-port$port warn!"; sendMail "ssonline alert-port$port warn!"; fidone;#cpu 磁盘 内存异常eth="eth0 eth1 "function get_eth_info(){ name=$1 cat /proc/net/dev | awk -F ':' '{if(NR>2)print $1" "$2" "$9" "$10}' | awk '{print$1" "$2" "$3" "$5}' | while read line do# echo $line data=`echo $name" "$line | awk '{if($1==$2)print $3" "$4" "$5}'` if ! [ -z "$data" ] then echo $data fi done}function sum_eth(){ rm -fr 12321.txt for name in $eth do ret=`get_eth_info $name` #echo $ret | awk '{bps+=$0;pps+$1;dps+=$2;print bps" "pps" "dps}' echo $ret >> 12321.txt done cat 12321.txt | awk 'BEGIN{bps=0;pps=0;dps=0}{bps+=$1;pps+=$2;dps+=$3}END{print bps" "pps" "dps}'}flow=`sum_eth`disk=`df | awk 'BEGIN{total=0;avl=0;used=0;}NR > 1{total+=$2;used+=$3;avl+=$4;}END{printf"%d", avl/total*100}'`#top -b -n 1 | grep -w Mem | awk '{print"tot_mem: "$2" used_mem: " $4 " free_mem: "$6" left:"$6/$2"%"}'mem=`top -b -n 1 | grep -w Mem | awk '{printf"%d",$6/$2*100}'` #top -b -n 1 | grep -w Cpu | awk '{print"cpu: "$5}' | awk -F '%' {print$1} cpu=`top -b -n 1 | grep -w Cpu | awk '{print$5}' | awk -F '%' '{printf"%d",$1}'` tm=`date +%s` if ! [ -f "flow.txt" ] then echo $tm" "$flow >flow.txt sleep 1 tm=`date +%s` flow=`sum_eth` fi old_flow=`cat flow.txt` new_flow=`echo $tm $flow` echo $new_flow >flow.txt #echo $old_flow #echo $new_flow final_flow=`echo $old_flow $new_flow | awk '{dif_tm=$5-$1;dif_byte=$6-$2;dif_pkt=$7-$3;dif_dpkt=$8-$4;printf"%d %d %d",dif_byte*8/dif_tm, dif_pkt/dif_tm, dif_dpkt/dif_tm}'` #final_flow=`echo $old_flow $new_flow | awk '{print$0}'`echo "cpu "$cpuecho "disk "$diskecho "mem "$memecho "nic "$final_flowif [ $cpu -le 30 ]then echo "ssonline alert-cpu unused $cpu warn!"; sendMail "ssonline alert-cpu unused $cpu warn!"; fiif [ $disk -le 30 ]then echo "ssonline alert-disk unused $disk warn!"; sendMail "ssonline alert-disk unused $disk warn!"; fi#if [ $mem -le 0 ]#then# echo "ssonline alert-mem unused $mem warn!";# sendMail "ssonline alert-mem unused $mem warn!"; #fi 如果你要纯走java 单机 可以考虑1、jmx获取服务器的一些信息 如堆内存等 可以使用sigar收集单机信息2、数据库 可以查看通过数据库api获取连接数等3、发email可以通过javamail4、发短信需要第三方提供 这个之前公司 有自己的一套东西如果监控多服务器snmp等第三方现成的munin(我目前有这个 只监控)nagios(这个比较强大 能报警)
解决方案四:
这里的ssh是什么意思?你是要监控数据库的什么呢?你是要监控数据库发现状态异常或指标超标即将有状态异常时,想IT运维管理员发送警告(邮件、短信、消息)吗?

时间: 2024-09-23 05:16:53

ssh如何开发服务监控程序的相关文章

《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》样章下载

本文为原创,如需转载,请注明作者和出处,谢谢! 第1章:开发梦缘起开心网 第5章:开心桌面:完全模拟Windows桌面的开心网 第15章:移动电子相册:捕捉精彩瞬间 书中实例截图     前言      互联网的发展,就是一个不断上演奇迹的过程.10年前就开始在Internet上流行的Web应用,在见证了一个个奇迹之后,依然作为最主流的应用而雄霸 互联网.近几年,一个由国外风靡至国内的Web应用--SNS,再一次为举国上下的互联网普及大潮推波助澜.或许SNS听起来还有点陌生,但如果你连炙手 可热

xml-在用SSH框架开发项目中的XML配置

问题描述 在用SSH框架开发项目中的XML配置 对于我现在已经在项目开发中用到了SSH的框架,但是在项目开发过程中遇到的XML配置的问题,在XML配置文件中里面有太多的配置标签,有时会用到自己从来就没有见过的标签,又不知道它们该如何用,为什么要用?用了有啥好处?为了解决这个问题,我现在想请那位大神给我说一下,请把在SSH框架中以及SpringMVC的配置文件的总结的所有的属性以及属性值给我说一下.我好积累下来.以备以后工作中使用.谢谢! 解决方案 你这是想走捷径啊,自己慢慢积累吧.这东西 谁会给

Java ssh框架开发的网站想每隔一段时间自动调用一段代码要怎么实现?

问题描述 Java ssh框架开发的网站想每隔一段时间自动调用一段代码要怎么实现? 用Java ssh框架写一个酒店管理系统,其中有一个预定客房模块,我希望过一天就查一下预定客房记录表如果某个客房这天已经被预定了就更新它的状态,这要怎么实现? 解决方案 可以使用quartz,具体用法google下. 解决方案二: 一个简单但是不好的方法,在js中设置个定时器(setinterval()),每隔多少时间异步调用查询预订客房记录 解决方案三: 使用Spring中的定时器把 解决方案四: 使用spri

SSH组合开发中,Hibernate中,主表与从表数据更新

问题描述 SSH组合开发中,Hibernate中,主表与从表数据更新 在Hibernate中,我需要更新一条主表的数据,但同时更新多条从表的数据!我最初的构思是,用主表PO类中的Set从表集合,与从jsp中获取的更新从表数据相对比,相同的删除,不相同的添加,同时,把Set集合中的数据相同的留下,不相同的删除. 这是代码: /* * 先查询一条商品属性表的信息 * 将Vo转换为Po * 根据vo类中的ProductCategoryid字段查询需要查询一个商品类型表(CyProductCategor

SSH 远程连接服务慢的解决方案

SSH 远程连接服务慢的解决方案 连接慢的主要原因是DNS解析导致 解决方法: 1.在ssh服务端上更改/etc/ssh/sshd_config文件中的配置为如下内容: UseDNS no # GSSAPI options GSSAPIAuthentication no 然后,执行/etc/init.d/sshd restart重启sshd进程使上述配置生效,在连接一般就不慢了. 2.如果还慢的话,检查ssh服务端上/etc/hosts文件中,127.0.0.1对应的主机名是否和 uname -

服务器-ssh框架开发的下载在浏览器显示已经下载文件大小有异常

问题描述 ssh框架开发的下载在浏览器显示已经下载文件大小有异常 采用ssh框架下载,部署在亚马逊服务器上的项目,下载文件时不能准确显示已经下载文件大小,最大显示为1M左右,但是下载还是在继续,只是显示不在增加.下载方式为边加压缩边下载及流的方式下载 解决方案 http://bbs.csdn.net/topics/391908424

云端软件开发服务平台 CODING推出企业版

1月12日消息,一站式云端软件开发服务平台 CODING发布企业版Coding Enterprise. CODING CEO 张海龙 Coding Enterprise 是Coding开发者工具的企业级 SaaS 服务,提供针对中小型企业的公有云版本和针对大型企业的私有云版本,可以方便企业用户更好的管理企业内的项目和成员,实时掌控企业开发的整体情况,帮助企业开发协作更高效便捷. 据介绍,与部署非云计算平台相比,Coding Enterprise 在硬件.软件的安装和系统测试等工作中能节约10%-

谷歌收购应用开发服务Firebase 加强云平台

TNW中文站 10月22日报道 谷歌周二宣布,基于云计算的Web和移动应用http://www.aliyun.com/zixun/aggregation/13472.html">开发服务Firebase将加入谷歌的的云平台. Firebase成立于大约三年前,创始人是安德鲁·李(Andrew Lee)和詹姆斯·坦普林(James Tamplin).通过这个平台开发的应用可以在移动与Web版本之间自动实现数据同步,而且可以用于开发离线应用.这个平台目前有超过1.1万名用户(即开发人员). 谷

《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》销售排名第4,发篇ExtJS的文章(拖放树结点)庆祝下

    <人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS>一书上架短短几天,就进入了互动网计算机类销售总排名第4的好成绩(见下图).现发篇Ext JS的技术文章庆祝下. 拖放树结点 在本文将介绍TreePanel组件非常有意思的一个功能:结点拖放.要使TreePanel组件的结点可以拖放非常简单,只需要将TreePanel类的enableDD选项参数设为true即可.当然,要想实现更复杂的功能,还需要配合其他的参数和事件. 一.结点拖放的位置 拖放结点包含了两个