背景
上一章节已经详细描述了日志采集的实现,采集的日志信息通过rocketmq的sink,将日志的增量信息以消息的方式推送到rocketmq的服务端。那对应日志收集的实现就是要部署一个rocketmq的server。
我这里将以docker的方式来部署rocketmq,传统的方式也就可以参照docker镜像的build文件及启动指令来对应配置的。
部署rocketmq
我将rocketmq以最简单的方式进行部署,就是一个nameserver,一个broker,一个console。
具体的部署请参照rocketmq部署的专题文章
如果是生产部署也可以参照我的rocketmq高可用部署方式的文章。
配置rocketmq
关于rocketmq的配置,这里面要特别注意的是broker注册到namesever的IP信息。
因为rokcetmq都运行在docker下,需要默认情况nameserver记录的是broker的docker自定义网络中的IP地址。
这个地址只有docker内的应用才可以访问得到,如果想要非docker环境访问,需要将broker注册到nameserver的地址修改为局域网的IP地址,具体配置为:
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
brokerIP1=10.209.8.126 #<--这个设置为局域网的IP地址
在运行broker的镜像时,指定一下配置文件就可以了。
部署完成以后,访问console,创建一个消息主题。这个主题应该写flume-resource-conf.properties中配置的topic一致。
rocketmq-createtopic.png
监控rocketmq
当flume-agent正常运行的情况下,通过console的消息菜单就可以查询到flume收集到的日志流信息了。
rocketmq-topic-message.png说明
可能有人会有疑问,大多数的监控平台的技术选型都是flume+kafka+storm,而且flume及storm都默认对kafka支持的,为什么要使用rockatmq呢。其实原因很简单,就是自己比较熟悉rocketmq,本身rocketmq也是基于kafka演化过来的,有一定的相似度。并且rocketmq也有分支项目支持flume和storm,那使用rocketmq会比使用kafka使用需要的学习成本更低一些,所以选择了rocketmq。
网友评论