系列目录

使用Kafka、Elasticsearch、Grafana搭建业务监控系统(一)技术选择
使用Kafka、Elasticsearch、Grafana搭建业务监控系统(二)Kafka
使用Kafka、Elasticsearch、Grafana搭建业务监控系统(三)Elasticsearch
使用Kafka、Elasticsearch、Grafana搭建业务监控系统(四)Grafana(填坑ing)

一、背景

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

二、技术选择

  1. Kafka or mq?

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

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

各自的优劣势很明显,其中Kafka的吞吐量远远大于RabbitMQ,但是没有事务。
由于线上埋点数据量很大,并且我们对于监控数据的精确性没有非常严格的要求,所以毫无疑问,Kafka是该项目的首选。(另外大数据方提供的埋点数据就是存储在Kafka的,我们还能用其他的吗 哈哈

  1. Mysql or Elasticsearch?
    分析一下我们的业务场景:
    - 对于埋点数据来说,有太多太多的格式,并且随时可能水平扩展。不适合关系型数据库
    - 无事务要求
    - 海量数据,并且需要对多字段模糊查询

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

  1. 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.

在这里插入图片描述

在这里插入图片描述

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

三、架构图

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

四、结语

业务监控的技术选择就介绍到这里,下面将介绍第一步:生产/消费Kafka数据
使用Kafka、Elasticsearch、Grafana搭建业务监控系统(二)Kafka

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐