分享好友 最新动态首页 最新动态分类 切换频道
4.2.9 Kafka集群与运维, 应用场景, 集群搭建, 集群监控JMX(度量指标, JConsole, 编程获取, Kafka Eagle)
2024-12-27 01:10

目录

3.1 集群应用场景

1 消息传递

2 网站活动路由

3 监控指标

4 日志汇总

5 流处理

6 活动采集

7 提交日志

总结

3.2 集群搭建

3.2.1 Zookeeper集群搭建

3.2.2 Kafka集群搭建

3.3 集群监控

3.3.1 监控度量指标

3.3.1.1 JMX

3.3.1.2 使用JConsole链接JMX端口

3.3.1.3 编程手段来获取监控指标

3.3.2 监控工具 Kafka Eagle


 

 

1 消息传递

Kafka可以很好地替代传统邮件代理。消息代理的使用有多种原因(将处理与数据生产者分离,缓冲未处理的消息等)。与大多数邮件系统相比,Kafka具有更好的吞吐量,内置的分区,复制和容错功能,这使其成为大规模邮件处理应用程序的理想解决方案。

根据经验,消息传递的使用通常吞吐量较低,但是可能需要较低的端到端延迟,并且通常取决于Kafka提供的强大的持久性保证。

在这个领域,Kafka与ActiveMQ或 RabbitMQ等传统消息传递系统相当。

 

2 网站活动路由

Kafka最初的用例是能够将用户活动跟踪管道重建为一组实时的发布-订阅。这意味着将网站活动(页面浏览,搜索或用户可能采取的其他操作)发布到中心主题,每种活动类型只有一个主题。这些提要可用于一系列用例的订阅,包括实时处理,实时监控,以及加载到Hadoop或脱机数据仓库系统中以进行脱机处理和报告。

活动跟踪通常量很大,因为每个用户页面视图都会生成许多活动消息。

 

3 监控指标

Kafka通常用于操作监控数据。这涉及汇总来自分布式应用程序的统计信息,以生成操作数据的集中。

 

4 日志汇总

许多人使用Kafka代替日志聚合解决方案。日志聚合通常从服务器收集物理日志文件,并将它们放在中央位置(也许是文件服务器或HDFS)以进行处理。Kafka提取文件的详细信息,并以日志流的形式

更清晰地抽象日志或事件数据。这允许较低延迟的处理,并更容易支持多个数据源和分布式数据消耗。与以日志为中心的系统(例如Scribe或Flume)相比,Kafka具有同样出色的性能,由于复制而提供的更强的耐用性保证以及更低的端到端延迟。

 

5 流处理

Kafka的许多用户在由多个阶段组成的处理管道中处理数据,其中原始输入数据从Kafka主题中使用,然后进行汇总,充实或以其他方式转换为新主题,以供进一步使用或后续处理。例如,用于推荐新闻文章的处理管道可能会从RSS提要中检索文章内容,并将其发布到“文章”主题中。进一步的处理可能会使该内容规范化或重复数据删除,并将清洗后的文章内容发布到新主题中;最后的处理阶段可能会尝试向用户推荐此内容。这样的处理管道基于各个主题创建实时数据流的图形。从0.10.0.0开始,一个轻量但功能强大的流处理库称为Kafka Streams 可以在Apache Kafka中使用来执行上述数据处理。除了Kafka Streams以外,其他开源流处理工具还包括Apache Storm和 Apache Samza。

 

6 活动采集

事件源是一种应用程序,其中状态更改以时间顺序记录记录。Kafka对大量存储的日志数据的支持使其成为以这种样式构建的应用程序的绝佳后端。

 

7 提交日志

Kafka可以用作分布式系统的一种外部提交日志。该日志有助于在节点之间复制数据,并充当故障节点恢复其数据的重新同步机制。Kafka中的日志压缩功能有助于支持此用法。在这种用法中,Kafka类似于Apache BookKeeper项目。

 

  • 横向扩展,提高Kafka的处理能力
  •  镜像,副本,提供高可用。

 

 

 

1. 搭建设计

2. 分配三台Linux,用于安装拥有三个节点的Kafka集群。

node2(192.168.100.102)
node3(192.168.100.103)
node4(192.168.100.104)
以上三台主机的/etc/hosts配置

192.168.100.101 node1
192.168.100.102 node2
192.168.100.103 node3
192.168.100.104 node4

 

 

1. Linux安装JDK,三台Linux都安装。

# 使用rpm安装JDK
rpm -ivh jdk-8u261-linux-x64.rpm

 

# 默认的安装路径是/usr/java/jdk1.8.0_261-amd64
# 配置JAVA_HOME
vim /etc/profile

 

# 文件最后添加两行
export JAVA_HOME=/usr/java/jdk1.8.0_261-amd64
export PATH=$PATH:$JAVA_HOME/bin

 

# 退出vim,使配置生效
source /etc/profile

上传JDK到linux
安装并配置JDK

java -version 

查看JDK是否正确安装

 

 

2. Linux 安装Zookeeper,三台Linux都安装,以搭建Zookeeper集群

上传zookeeper-3.4.14.tar.gz到Linux
解压并配置zookeeper

node2配置

# 解压到/opt目录
tar -zxf zookeeper-3.4.14.tar.gz -C /opt

 

# 配置
cd /opt/zookeeper-3.4.14/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg

 

# 设置
dataDir=/var/lagou/zookeeper/data

 

# 添加
server.1=node2:2881:3881
server.2=node3:2881:3881
server.3=node4:2881:3881

 

# 退出vim
mkdir -p /var/lagou/zookeeper/data
echo 1 > /var/lagou/zookeeper/data/myid

 

# 配置环境变量
vim /etc/profile

 

# 添加
export ZOOKEEPER_PREFIX=/opt/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_PREFIX/bin
export ZOO_LOG_DIR=/var/lagou/zookeeper/log

 

# 退出vim,让配置生效
source /etc/profile

 

# 将/opt/zookeeper-3.4.14拷贝到node3,node4
scp -r /opt/zookeeper-3.4.14/ node3:/opt
scp -r /opt/zookeeper-3.4.14/ node4:/opt

node3配置

# 配置环境变量
vim /etc/profile

 

# 在配置JDK环境变量基础上,添加内容
export ZOOKEEPER_PREFIX=/opt/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_PREFIX/bin
export ZOO_LOG_DIR=/var/lagou/zookeeper/log

 

# 退出vim,让配置生效
source /etc/profile
mkdir -p /var/lagou/zookeeper/data
echo 2 > /var/lagou/zookeeper/data/myid

node4配置

# 配置环境变量
vim /etc/profile

 

# 在配置JDK环境变量基础上,添加内容
export ZOOKEEPER_PREFIX=/opt/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_PREFIX/bin
export ZOO_LOG_DIR=/var/lagou/zookeeper/log

 

# 退出vim,让配置生效
source /etc/profile
mkdir -p /var/lagou/zookeeper/data
echo 3 > /var/lagou/zookeeper/data/myid

启动zookeeper

# 在三台Linux上启动Zookeeper
[root@node2 ~]# zkServer.sh start
[root@node3 ~]# zkServer.sh start
[root@node4 ~]# zkServer.sh start

 

# 在三台Linux上查看Zookeeper的状态

[root@node2 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.14/bin/https://blog.csdn.net/chengh1993/article/conf/zoo.cfg
Mode: follower

[root@node3 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.14/bin/https://blog.csdn.net/chengh1993/article/conf/zoo.cfg
Mode: leader

[root@node4 ~]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.14/bin/https://blog.csdn.net/chengh1993/article/conf/zoo.cfg
Mode: follower

 

 

1. 安装Kafka
上传并解压Kafka到/opt

# 解压到/opt
tar -zxf kafka_2.12-1.0.2.tgz -C /opt

 

# 拷贝到node3和node4
scp -r /opt/kafka_2.12-1.0.2/ node3:/opt
scp -r /opt/kafka_2.12-1.0.2/ node4:/opt

配置Kafka

# 配置环境变量,三台Linux都要配置
vim /etc/profile

 

# 添加以下内容
export KAFKA_HOME=/opt/kafka_2.12-1.0.2
export PATH=$PATH:$KAFKA_HOME/bin

 

# 让配置生效
source /etc/profile

 

# node2配置
vim /opt/kafka_2.12-1.0.2/config/server.properties
broker.id=0
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://node2:9092
log.dirs=/var/lagou/kafka/kafka-logs
zookeeper.connect=node2:2181,node3:2181,node4:2181/myKafka
# 其他使用默认配置

 

# node3配置
vim /opt/kafka_2.12-1.0.2/config/server.properties
broker.id=1
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://node3:9092
log.dirs=/var/lagou/kafka/kafka-logs
zookeeper.connect=node2:2181,node3:2181,node4:2181/myKafka
# 其他使用默认配置

 

# node4配置
vim /opt/kafka_2.12-1.0.2/config/server.properties
broker.id=2

listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://node4:9092
log.dirs=/var/lagou/kafka/kafka-logs
zookeeper.connect=node2:2181,node3:2181,node4:2181/myKafka
# 其他使用默认配置

启动Kafka

[root@node2 ~]# kafka-server-start.sh /opt/kafka_2.12-1.0.2/config/server.properties
[root@node3 ~]# kafka-server-start.sh /opt/kafka_2.12-1.0.2/config/server.properties
[root@node4 ~]# kafka-server-start.sh /opt/kafka_2.12-1.0.2/config/server.properties

 

验证Kafka

node2节点的Cluster Id

node3节点的Cluster Id

node4节点的Cluster Id

1. Cluster Id是一个唯一的不可变的标志符,用于唯一标志一个Kafka集群。
2. 该Id最多可以有22个字符组成,字符对应于URL-safe Base64。
3. Kafka 0.10.1版本及之后的版本中,在集群第一次启动的时候,Broker从Zookeeper的<Kafka_ROOT>/cluster/id节点获取。如果该Id不存在,就自动生成一个新的。

zkCli.sh
# 查看每个Broker的信息
get /myKafka/brokers/ids/0

 

get /myKafka/brokers/ids/1

 

get /myKafka/brokers/ids/2

 

 

Kafka使用Yammer Metrics在服务器和Scala客户端中报告指标。Java客户端使用Kafka Metrics,它是一个内置的度量标准注册表,可最大程度地减少拉入客户端应用程序的传递依赖项。两者都通过JMX公开指标,并且可以配置为使用可插拔的统计报告器报告统计信息,以连接到您的监视系统。
具体的监控指标可以查看官方文档。

3.3.1.1 JMX

Kafka开启Jmx端口

[root@node4 bin]# vim /opt/kafka_2.12-1.0.2/bin/kafka-server-start.sh 

所有kafka机器添加一个 JMX_PORT ,并重启kafka

 

验证JMX开启

首先打印9581端口占用的进程信息,然后使用进程编号对应到Kafka的进程号,搞定。

ss -nelp | grep 9581

也可以查看Kafka启动日志,确定启动参数  -Dcom.sun.management.jmxremote.port=9581 存在即可

 

 

3.3.1.2 使用JConsole链接JMX端口

1. win/mac,找到jconsole工具并打开, 在 ${JAVA_HOEM}/bin/

Mac电脑可以直接命令行输入jconsole

 

 

 

 

 

详细的监控指标

相见官方文档:http://kafka.apache.org/10/documentation.html#monitoring

 

这里列出常用的

OS监控项

 

 

broker指标

 

producer以及topic指标

 

consumer指标

 

 

 

3.3.1.3 编程手段来获取监控指标

查看要监控哪个指标

代码实现

 

 

 

可以使用Kafka-eagle管理Kafka集群

核心模块

  • 面板可视化
  • 主题管理,包含创建主题、删除主题、主题列举、主题配置、主题查询等
  • 消费者应用:对不同消费者应用进行监控,包含Kafka API、Flink API、Spark API、Storm API、Flume API、LogStash API等
  • 集群管理:包含对Kafka集群和Zookeeper集群的详情展示,其内容包含Kafka启动时间、 Kafka端口号、Zookeeper Leader角色等。同时,还有多集群切换管理,Zookeeper Client操作入口
  • 集群监控:包含对Broker、Kafka核心指标、Zookeeper核心指标进行监控,并绘制历史趋势图
  • 告警功能:对消费者应用数据积压情况进行告警,以及对Kafka和Zookeeper监控度进行告警。同时,支持邮件、微信、钉钉告警通知
  • 系统管理:包含用户创建、用户角色分配、资源访问进行管理

 

架构

  • 可视化:负责展示主题列表、集群健康、消费者应用等
  • 采集器:数据采集的来源包含Zookeeper、Kafka JMX & 内部Topic、Kafka API(Kafka 2.x以后版本
  • 数据存储:目前Kafka Eagle存储采用MySQL或SQLite,数据库和表的创建均是自动完成的,按照官方文档进行配置好,启动Kafka Eagle就会自动创建,用来存储元数据和监控数据
  • 监控:负责见消费者应用消费情况、集群健康状态
  • 告警:对监控到的异常进行告警通知,支持邮件、微信、钉钉等方式
  • 权限管理:对访问用户进行权限管理,对于管理员、开发者、访问者等不同角色的用户,分配不用的访问权限

 

需要Kafka节点开启JMX。前面讲过了。

# 下载编译好的包
wget http://pkgs-linux.cvimer.com/kafka-eagle.zip

# 配置kafka-eagle
unzip kafka-eagle.zip
cd kafka-eagle/kafka-eagle-web/target
mkdir -p test
cp kafka-eagle-web-2.0.1-bin.tar.gz test/
tar xf kafka-eagle-web-2.0.1-bin.tar.gz
cd kafka-eagle-web-2.0.1

需要配置环境变量
KE_HOME=/opt/lagou/software/kafka-eagle/kafka-eagle-web/target/test/kafka-eagle-web-2.0.1
PATH=$PATH:$KE_HOME/bin

 

conf下的配置文件:system-config.properties

 

 

也可以自行编译, https://github.com/smartloli/kafka-eagle 创建Eagel的存储目录:mkdir -p /hadoop/kafka-eagle

# 启动kafka-eagle
https://blog.csdn.net/chengh1993/article/details/bin/ke.sh start

会提示登陆地址和账号密码

最新文章
搜狗搜索优化策略,如何提升网站搜狗搜索引擎排名?
在这个信息爆炸的时代,每一个网站都渴望在搜索引擎中脱颖而出,吸引更多的目光和流量。而我,作为一名在SEO领域摸爬滚打多年的从业者,深知搜狗搜索引擎优化的重要性。搜狗搜索,凭借其强大的自然语言处理和机器学习能力,不断优化搜索算
跳转微信链接转化率高达80%的引流工具
据不完全数据统计,截止近些年,智能手机逐渐走入了千家万户,覆盖了全国超过90%以上的用户,成为绝大多数人士在工作上或者生活中不可或缺的一个部分。随着互联网社交技术的更新换代,微信的平台功能模块日趋健全,服务于更加广阔的商家和
桌面虚拟化 免费云桌面系统 云电脑租用 YL135 禹龙 办公云终端服务器
桌面虚拟化 免费云桌面系统 云电脑租用 云终端解决方案 虚拟化服务商一、云桌面介绍云桌面是完全符合云计算特征的一种云形态,也是云计算最主要的落地方式之一。桌面云的定义是:“可以通过瘦客户端或者其他任何与网络相连的设备(普通PC、
英文网站建设有什么需要注意
随着经济全球化影响范围的扩大和趋势的蔓延,国际间的交流合作加强,制作一个符合国际化标准的英文网站成为国际企业之间交流的主要平台。英文网站建设对企业之间的市场开拓具有重要的意义,那么英文网站建设有什么需要注意的呢?1.网站风格
谷歌关键词规划师使用详细教程
谷歌关键词规划师(Google Keyword Planner)是一个强大的工具,主要用于帮助用户研究和规划他们的广告活动中的关键词。以下是使用谷歌关键词规划师的基本步骤和方法:1. 访问关键词规划师登录谷歌 Ads 帐户:首先,您需要拥有谷歌 Ads 帐
超级菜菜鸟全程架站攻略(Mysql+Apche+PHP+Phpmyadmin+Zend,含本机安装)
——本文是我5月份刚学PW一个来月时写的攻略,因自己对语言一窍不通,只好自己琢磨+摸索,用了1个通宵研究出来的。今日有朋友问我架设方法,才想起俺写过这么个东西,一直没拿出来发表,今日赶紧补上:)不是超级菜鸟的可以不往下看了哈,
香港资料大全正版资料2024年免费,最佳精选解释落实_LE版6.822
  在这个信息爆炸的时代,数据和知识的获取看似随手可得,但实际上并非所有信息都是准确和权威的。“香港资料大全正版资料2024年免费,最佳精选解释落实_LE版6.822”应运而生,旨在为需要深入了解香港且追求高品质的读者提供一个官方、免
用AI绘画生成超逼真美女写真,零基础也能掌握!
DALL-E:这个工具是由OpenAI推出的强大AI图像生成器,可以将文字描述转化为生动的图片。用户只需通过自然语言描述自己想要的美女形象,DALL-E便能生动还原。优点是能生成非常富有创意和细节的图像,缺点则是对于中文的识别和生成效果相对较
跨境电商独立站没有流量?站外快速引流方法全介绍
现在是互联网时代,很多大佬开始做跨境电商的独立站,毕竟独立站赚钱也多一些,利润高一点。但是苦恼的就是跨境电商独立站建设容易,推广难,很久都没见到任何流量,没有流量意味着没有收入,有什么办法可以快速引流呢?其实跨境电商独立站
炼神丹!御神兽!废材大小姐竟是绝世帝女
简介:  【团宠+双强+驭兽+空间+帝女传承】夜染音,21世纪令人闻风丧胆的第一佣兵“夜神”!一朝穿越,成了边境小城被唾弃的废柴!未婚夫家上门退婚?家族把她当弃子?下一瞬,她被迎回帝都,成了国公府唯一的娇小姐!从此,展露逆天天赋
相关文章
推荐文章
发表评论
0评