#!/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为例:

wKiom1g2Y2KD9DSlAAAtzFHLmv4531.png

把别人二百个字母的事用自己二十个字母说出来,也是一种功力。





命令行监控:

ActiveMQ当然也提供了命令行监控的方式。执行${ACTIVEMQ_HOME}/bin/activemq,会列出命令行的使用帮助。请注意虽然Windows平台也可以使用这个命令行,但是仅仅限于启动ActiveMQ实例,其他命令都不能很好的支持,所以这里所说的命令行方式,都是在Linux平台上的。

Ynm6Bb.png!web

限于篇幅,这里只是截取了重要的部分。可以看到命令行提供了16个命令,包括start,stop,restart,console等启动停止实例相关的命令。还有一些控制ActiveMQ Broker的命令,如create,purge等。这里主要介绍几个监控可能用得到的命令

activemq status,显示当前的ActiveMQ是否运行正常,并且能显示pid。

ryMZNv6.png!web

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,比较有用的一个功能,可以用来查询队列的关键数值,如队列大小,生产者消费者数量,消息出队入队统计等。还可以支持通过类别查询,如只查询队列或者只查询主题。

3EnaUzE.png!web

个人认为,activemq status和activemq dstat是比较常用的两个监控命令,可以使用shell,然后grep/awk解析。命令行虽然方便,但是明显缺失必要的信息,如硬件使用百分比,订阅者下线信息等。至少目前不能完成监控的全部工作,希望以后可以持续完善功能。