#!/bin/bash
mqpid=`pgrep -f activemq.jar|wc -l`
if [ $mqpid -eq 0 ]
then
echo "start ActiveMQ now..."
export Java_HOME=/usr/jdk1.7.0_79
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar
export PATH=$PATH:$JAVA_HOME/bin
cd /“Activemq的目录地址”/bin
./activemq start
else
echo "ActiveMQ already started"
exit 0
fi
新的知识点!
以往我们获得进程的pid号用的语句是“ps -ef | grep 某进程名 | grep -v 'grep ' | awk '{print $2}'”,更加简便的方法就是“pgrep -f 某进程名”。
以这个storm为例:
把别人二百个字母的事用自己二十个字母说出来,也是一种功力。
命令行监控:
ActiveMQ当然也提供了命令行监控的方式。执行${ACTIVEMQ_HOME}/bin/activemq,会列出命令行的使用帮助。请注意虽然Windows平台也可以使用这个命令行,但是仅仅限于启动ActiveMQ实例,其他命令都不能很好的支持,所以这里所说的命令行方式,都是在Linux平台上的。
限于篇幅,这里只是截取了重要的部分。可以看到命令行提供了16个命令,包括start,stop,restart,console等启动停止实例相关的命令。还有一些控制ActiveMQ Broker的命令,如create,purge等。这里主要介绍几个监控可能用得到的命令
activemq status,显示当前的ActiveMQ是否运行正常,并且能显示pid。
activemq list,列出当前Broker名字。
activemq bstat,显示当前Broker的统计信息。
activemq query,根据筛选条件显示Broker的统计信息。如:activemq query -QQueue=string_queue,是只显示string_queue这个队列的统计信息。更多使用方法可以使用activemq query --help显示帮助。
activemq browse,可以查询当前Broker为被消费的消息,会显示消息的详细信息,如消息头,消息内容,优先级等。类似于数据库的查询功能。有自己的一套查询语法但是不是很复杂,同样可以使用activemq browse --help显示帮助。需要注意的是,只有Queue才可以查询,Topic是不可以的,所以这个功能虽然强大,但是有点鸡肋。
activemq dstat,比较有用的一个功能,可以用来查询队列的关键数值,如队列大小,生产者消费者数量,消息出队入队统计等。还可以支持通过类别查询,如只查询队列或者只查询主题。
个人认为,activemq status和activemq dstat是比较常用的两个监控命令,可以使用shell,然后grep/awk解析。命令行虽然方便,但是明显缺失必要的信息,如硬件使用百分比,订阅者下线信息等。至少目前不能完成监控的全部工作,希望以后可以持续完善功能。
推荐阅读:
Spring+Log4j+ActiveMQ实现远程记录日志——实战+分析
CentOS 6.5启动ActiveMQ报错解决
ActiveMQ部署步骤和后台管理网站Service Unavailable问题解决