12月 282018
 

介绍

最近学习使用go语言写了一个zabbix监控ActiveMQ的小工具,有如下特点:
1.使用Zabbix Agent Trapper方式(主动发送采集数据到zabbix server,类似active模式)监控Activemq状态
2.支持对密码加密,避免配置文件里出现明文密码
3.支持ActiveMQ基本状态/Queues/Topics状态监控
4.支持自定义采集周期
5.LLD(自动发现)添加Queues/Topics状态监控
工具通过访问ActimveMQ管理页面,登录之后抓取页面数据,进行采集

模版下载:https://dl.cactifans.com/zabbix/zabbix_template_activemq.tar.gz
脚本下载:https://dl.cactifans.com/zabbix/mqmon-0.0.1_linux_amd64.tar.gz

导入模版

2
3

在zabbix Server上导入导入模版,解压之前下载的模版。
导入模版文件:zbx_templates_activemq.xml

导入之后可以看到名为Template App ActiveMQ的模版,表示导入成功

Activemq作为中间件可以挂载到任何在zabbix server里的host上!!!监控脚本不一定部署在真实的Activemq服务器之上,只要脚本通过远程方式能连接到activemq管理页面即可。关联模版到需要挂载ActiveMQ监控的的host上即可。

配置插件

下载并解压插件

mkdir -p  /opt/mqmon<br>wget https://dl.cactifans.com/zabbix/mqmon-0.0.1_linux_amd64.tar.gz tar zxvf mqmon-0.0.1_linux_amd64.tar.gz -C /opt/mymon

文件目录结构
├── control //启动脚本
├── mqmon //二进制程序
└── mqmon.json //配置文件
把密码写在明文的文件里不被推荐的,因此脚本提供了一个使用AES加密算法加密管理员密码的工具,保证管理员密码的安全。使用以下命令加密密码明文,将yourpassword替换为你的密码

/opt/mqmon/mqmon enc yourpassword

执行之后会看到进过加密后的密码密文。记录下来

/opt/mqmon/mqmon enc admin
sXcEQ2FTGk4WsWSxyT6fuBnjZ3v43pc0

修改配置文件mqmon.json

{
“debug”: true,
“interval”:{
“status”: 300,
“discovery”: 300,
“metic”: 60
},
“activemq”: {
“username”: “admin”,
“password”: “j1wqc+QGX2+7n/KOlEmNPZQsaWhmkqGQ”,
“host”: “172.16.66.16”,
“port”: 8161
},
“zabbix”:{
“server”: “zabbix.cactifans.com”,
“port”: 10051,
“hostname”: “host135”
}
}

配置文件说明
interval 采集周期配置,单位为秒

status ativemq 基本信息采集周期,默认为300秒
discovery queues和topics自动发现周期,默认为300秒
metic queues和topics具体指标采集周期,默认为60秒

需要监控的Activemq信息配置

username activemq管理账号
passoword activemq用户密码加密后的密文
host activemq的主机
port activemq管理页面端口,默认为8161

zabbix信息配置

server 为zabbix server的地址,如通过zabbix proxy 需要设置为zabbix proxy的地址
port zabbix server端口默认为10051
hostname为之前关联模版的主机名一致

4

使用

配置需要监控的activemq的管理页面地址/端口/用户账号/密码信息之后,
可以启动插件,使用以下命令进行测试activemq是否能够连通

cd /opt/mqmon
./mqmon ping

可以看到使用的配置文件,如返回OK,表示配置信息正确,如其他表示连接异常,请检查配置文件及网络。

2018/08/20 12:58:44 ping.go:37: Using config file: /opt/mqmon.json  successfully!
OK

测试成功之后可以使用以下命令启动即可

./control start

常用操作

./control start    //启动应用<br>./control stop     //停止应用<br>./control restart  //重启应用<br>./control tail     //查看日志

效果

5
6
7
8

扩展

自动发现数据结构

Queue自动发现规则数据(activemq.queues.discovery的数据)Demo

{<br>     "data": [<br>     {"{#QUEUENAME}": "demoRequest"}, <br>     {"{#QUEUENAME}": "demoResponse"}<br>     ]<br> }

Topic自动发现规则数据(activemq.topics.discovery的数据)Demo

{<br>     "data": [<br>         {"{#TOPICNAME}": "12312312"}, <br>         {"{#TOPICNAME}": "12312"}, <br>         {"{#TOPICNAME}": "23121"}<br>         ]<br> }

添加阈值

6

如需要对特定的Queue或topic添加阈值,可以根据以下方式配置
例子:假如要为demoRequest和demoResponse 2个Queue添加二个阈值,规则如下
1.demoRequest的Number Of Pending Messages 大于10告警
2.demoResponse的Number Of Pending Messages 大于5告警
3.其他queue 大于2告警
可进行如下配置:
在模版里添加如下规则

注意是在模版Discovery rules里的Trigger prototypes里添加如下触发器原型
标题

Queue {#QUEUENAME} PM > {$QUEUE_PM_LIMIT:"{#QUEUENAME}"}

表达式

{Template App ActiveMQ:activemq.queues.pm[{#QUEUENAME}].last()}>{$QUEUE_PM_LIMIT:"{#QUEUENAME}"}

创建之后,在关联的hosts上配置如下宏。宏可以配置在模版里,为了灵活性需要,建议配置到具体的主机上,可做到精确匹配

{$QUEUE_PM_LIMIT:demoRequest}     =>  10<br>{$QUEUE_PM_LIMIT:demoResponse}    =>  5<br>{$QUEUE_PM_LIMIT}                 =>  2
10

如图

即可完成为不同queue配置不同的阈值的需求。

{#QUEUENAME}为Queue自动发现的数据,topic设置为{#TOPICNAME}
{$QUEUE_PM_LIMIT} 为自定义的宏,可以随意起名
11


关于具体的说明,可以看官方这里的列子:
https://www.zabbix.com/documentation/3.4/manual/discovery/low_level_discovery

命令行工具

工具内置几个命令行工具及基本使用,可以使用mqmon -h 查看帮助

[root@localhost activemq-mymon]# ./mqmon<br> Zabbix activemq monitoring tool. For example:<br> mqmon daemon --config=./mqmon.json<br> Usage:<br>   mqmon [command]<br> Available Commands:<br>   daemon      Running as a daemon<br>   enc         Encrypt passwords in AES mode<br>   help        Help about any command<br>   ping        Connected line checker<br>   version     Version<br> Flags:<br>       --config string   config file (default is /.mqmon.json)<br>   -h, --help            help for mqmon<br> Use "mqmon [command] --help" for more information about a command.

注意事项

1.trapper方式默认允许任何主机发送数据到zabbix server,建议通过设置宏的方式,在模版里配置allowed hosts配置权限
2.采集指标建议采用默认采集周期,缩短采集周期会对activemq页面产生一定压力

微信

如果觉得我的文章对您有用,请关注我的公众号,有更多技术干货!

打赏
 Posted by at 下午 9:44

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)