grafana 地图_Kafka、Elasticsearch、Grafana搭建业务监控系统(一)技术选择

一、背景

为了更好的对埋点数据进行可视化分析,项目组决定开发一套自己的监控系统

二、技术选择

Kafka or mq?

Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache定级项目。Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。

RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。

各自的优劣势很明显,其中Kafka的吞吐量远远大于RabbitMQ,但是没有事务。

由于线上埋点数据量很大,并且我们对于监控数据的精确性没有非常严格的要求,所以毫无疑问,Kafka是该项目的首选。(另外大数据方提供的埋点数据就是存储在Kafka的,我们还能用其他的吗 哈哈 )

Mysql or Elasticsearch?

分析一下我们的业务场景:

- 对于埋点数据来说,有太多太多的格式,并且随时可能水平扩展。不适合关系型数据库

- 无事务要求

- 海量数据,并且需要对多字段模糊查询

很明显,这种场景下用mysql简直是自寻死路,elasticsearch可以当做nosql使用,并且如果有特定的查询需求还可以使用es的分词插件。

Kibana or Grafana?

Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。

Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data driven culture.

0af3643b46f149baa1558768b6c6cf7e.png
a4f52ffb06c9b1588be0ada09f8b8d9f.png

其中Kibana 是和Es配套的(ELK),由于项目组采用的都是Grafana,所以这里我并没有对比两者优劣。不过对于喜欢科技风格的我来说,Grafana还是大爱啊!

三、架构图

技术框架选择好后就是搭建项目了,java项目由spring-kafka监听(多线程),spring-es写入,中间穿插spring定时任务(创建索引、删除索引),具体见下图:

3966e04ec245a01c33790045e0dc722b.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值