0 0

ssh如何开发服务监控程序5

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

4个答案 按时间排序 按投票排序

0 0

采纳的答案

你的意思应该就是在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,如果定时频率高,且耗时长,推荐第三种。

2013年4月25日 09:19
0 0

建议LZ参照一下这个软件——ManageEngine Applications Manager,它支持对各种软硬件资源的监控,包括。

可以把软件下来,是商业软件,但是可以免费使用,有使用限制,开发当中够用了,LZ可以参照它监控了哪些数据和指标,甚至可以反编译看它的源码(俺就不厚道地这么干过)。

2013年4月25日 09:13
0 0

如果你是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!";
fi

tomcatForumPid=`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!";
fi

tomcatV1Pid=`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!";
fi

jamesPid=`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!";
fi

mysqlPid=`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!";
fi

wget 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!";
fi

wget 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!";
fi

wget 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!";   
	fi
done;


#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 "$cpu
echo "disk "$disk
echo "mem "$mem
echo "nic "$final_flow
if [ $cpu -le 30 ]
then
    echo "ssonline alert-cpu unused $cpu warn!";
    sendMail "ssonline alert-cpu unused $cpu warn!";   
fi

if [ $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可以通过javamail
4、发短信需要第三方提供 这个之前公司 有自己的一套东西

如果监控多服务器
snmp等

第三方现成的
munin(我目前有这个 只监控)
nagios(这个比较强大 能报警)

2013年4月25日 09:10
0 0

这里的ssh是什么意思?
你是要监控数据库的什么呢?
你是要监控数据库发现状态异常或指标超标即将有状态异常时,想IT运维管理员发送警告(邮件、短信、消息)吗?

2013年4月25日 09:07

相关推荐

    SSH开发的基本jar包

    SSH(Struts2、Spring、Hibernate)是JavaEE开发中常用的一个开源框架组合,用于构建高效、可维护的Web应用程序。这些框架各自负责不同的职责,Struts2处理表现层,Spring提供依赖注入和面向切面编程,Hibernate则...

    myeclipse开发的ssh程序

    在MyEclipse中开发SSH程序,指的是使用MyEclipse这款强大的集成开发环境(IDE)来构建基于Spring、Struts和Hibernate这三大开源框架的Java Web应用。这三个框架组合在一起,通常被称为SSH框架,它们分别负责控制层、...

    ssh服务软件包

    4. **X11转发**:对于Linux和Unix用户,SSH客户端可以转发X11会话,使得远程服务器上的图形界面应用程序可以在本地显示。 5. **命令执行**:用户可以通过SSH客户端在远程服务器上执行命令,无需实际登录到服务器。 ...

    基于SSH的WEB开发

    在现代Web开发中,SSH(Struts + Hibernate + Spring)是一种常见的开发框架组合,它提供了强大的功能和灵活性,用于构建高效、可维护的Web应用程序。下面我们将深入探讨SSH的各个组成部分,以及它们如何协同工作来...

    ssh2开发jar包

    在Java开发中,SSH2通常指的是通过Java实现的SSH2库,允许开发者构建支持SSH2协议的应用程序,例如进行远程系统管理、文件传输等。"ssh2开发jar包"是指一组用于Java SSH2开发的库文件,这些jar包包含了实现SSH2功能...

    c# asp.net ssh连接到服务器进行命令交互

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用、Web应用以及游戏等领域。ASP.NET是微软公司推出的用于构建Web应用程序的框架,它基于C#和其他.NET兼容的语言。SSH(Secure Shell)是一种网络...

    这是一个基于SSH框架的JAVA EE开发程序

    这个“基于SSH框架的JAVA EE开发程序”是一个典型的电子商务网站项目,主要涉及用户浏览、商品购买等一系列购物功能。 1. **Spring框架**:Spring是核心的依赖注入(DI)和面向切面编程(AOP)框架,它提供了全面的...

    SSHmon是一个用于管理和监控ssh连接的程序

    SSHmon是一款专为管理和监控SSH(Secure Shell)连接设计的应用程序。SSH是一种网络协议,用于在不安全的网络环境中提供安全的远程登录和其他服务。它通过加密技术保护数据传输,确保用户的身份验证和数据完整性,...

    ssh集成 ssh集成

    4. **日志监控**:监控SSH登录日志,及时发现并处理异常登录尝试。 **总结** SSH集成是现代IT基础设施中的重要组成部分,它提供了安全的远程访问和自动化操作手段。理解和掌握SSH集成,对于提升工作效率和系统安全...

    开发SSH2的完整jar包

    2. **Apache MINA**:MINA是一个为高性能、异步网络应用程序提供的框架,它可以支持SSH协议。在SSH2开发中,MINA作为底层通信库,提供高效的I/O处理能力。 3. **Apache SSHD**:SSHD是Apache软件基金会的一个项目,...

    java监控开发示例

    在Java编程领域,远程监控是一项重要的任务,它允许开发者或管理员实时查看和管理运行在不同操作系统上的应用程序状态,如Windows和Linux。这个“java监控开发示例”旨在提供一种方法来实现这一目标,通过Java代码...

    ssh webapp 先方方

    标题中的“ssh webapp 先方方”似乎是一个简化的表述,它可能指的是在Web应用程序开发中使用SSH(Secure Shell)进行远程管理或部署的过程。SSH通常用于安全地访问远程服务器,执行命令,传输文件等。Webapp则代表...

    【精品小工具】php实现ssh远程连接服务器并操作服务器

    在IT行业中,SSH(Secure Shell)是一种用于在网络之间安全地...这使得在Web应用中集成远程系统管理功能成为可能,例如自动化部署、远程日志监控等。通过深入理解和实践这些技术,你可以在PHP项目中实现更强大的功能。

    调用winscp,通过ssh方式升级tomcat程序

    它也提供了C#的DLL库,使得开发人员能够方便地在自己的应用程序中集成文件传输功能。WinSCP的DLL库包括了连接、上传、下载、断点续传等功能,非常适合用于自动化部署场景。 要实现"调用winscp,通过ssh方式升级...

    battery(电池)监控程序.rar

    电池监控程序是计算机系统尤其是移动设备(如笔记本电脑、平板电脑和智能手机)中不可或缺的一部分。它允许用户跟踪电池状态,包括充电水平、健康状况、电源消耗模式等,从而优化设备性能并延长电池寿命。在...

    ssh开发的辅助jar包

    SSH开发的辅助jar包是Java Web开发中常用的一组库,它们主要服务于Struts、Hibernate和Spring这三大框架的集成应用。这些jar包为开发者提供了强大的功能,包括但不限于模型-视图-控制器(MVC)架构支持、对象关系...

    SSH开发jar包

    SSH开发jar包是一种常见的Java开发框架组合,由Struts2、Spring和Hibernate三个开源框架组成。这个组合在企业级Web应用开发中广泛使用,提供了一种高效、灵活且可扩展的解决方案。 Struts2是MVC(Model-View-...

    SSH服务端 Apache SSHD

    Apache SSHD使得开发人员能够在Java平台上创建SSH服务器应用程序,这在运维、自动化、云计算等领域具有广泛的应用。 SSH协议的主要优点是它提供了加密的数据传输,包括身份验证和数据完整性检查,确保了在网络中...

    完整的SSH框架开发的系统源码包含数据库设计等

    SSH框架的整合提供了模型-视图-控制器(MVC)的设计模式,使得开发者能够更高效地构建可维护、可扩展的Web应用程序。 1. **Spring框架**:Spring是核心的依赖注入(DI)和面向切面编程(AOP)框架。它管理应用对象...

    go-watchdoge:SSH-through 监控服务器

    创建此应用程序是为了通过 SSH 连接观看远程主机上的进程。 现在你只能看到 /proc/ pid /status 了,但是很快就会添加许多很棒的功能...... 配置 首先创建一个配置文件。 配置文件 port: 8080 redis: localhost:...

Global site tag (gtag.js) - Google Analytics