kafka tool 查看指定group下topic的堆積數量_ELK架構下利用Kafka Group實現Logstash的高可用...

系統運維的過程中,每一個細節都值得我們關注

下圖為我們的基本日志處理架構

a98c9a6c436f12d9612a72b347c05c33.png

所有日志由Rsyslog或者Filebeat收集,然后傳輸給Kafka,Logstash作為Consumer消費Kafka里邊的數據,分別寫入Elasticsearch和Hadoop,最后使用Kibana輸出到web端供相關人員查看,或者是由Spark接手進入更深層次的分析。

在以上整個架構中,核心的幾個組件Kafka、Elasticsearch、Hadoop天生支持高可用,唯獨Logstash是不支持的,用單個Logstash去處理日志,不僅存在處理瓶頸更重要的是在整個系統中存在單點的問題,如果Logstash宕機則將會導致整個集群的不可用,后果可想而知

如何解決Logstash的單點問題呢?我們可以借助Kafka的Consumer Group來實現

Kafka Consumer Group

578a360030ea8f6971030eb99d2baccf.png

為了便于理解,我么先介紹一下Kafka里邊幾個重要的角色:

Broker:一臺kafka服務器就是一個broker,一個kafka集群由多個broker組成,上圖中的kafka集群有3臺kafka服務器組成,也就是有3個broker,一個broker上可以有多個topic。

79f5ac2806956fd9893f3262993a4444.png

Topic:是個邏輯上的概念,用來區分不同的消息類別,類似于數據庫中的表,可以將一組相同的數據發送給一個Topic,在日志處理中通常會將不同類型的日志寫入不同的Topic,例如nginx日志寫入名字為 nginx_log 的topic,tomcat日志寫入名字為 tomcat_log 的topic,topic上圖中沒有標出,我們可以理解為圖上的三個partition構成了一個topic

33860718ecac4123d1b1aa3ab57b699e.png

Partition:是kafka數據存儲的基本物理單元,同一個Topic的數據可以被存儲在一個或多個partition中,例如上圖中的一個topic數據被存儲在了partition1,partition2,partition3中,通常我們設置一個topic下partition的數量為broker的整數倍,這樣一來數據能夠均勻分布,二來可以同時利用集群下的所有服務器資源

Producer:生產者,向kafka寫數據的服務,例如filebeat

Consumer:消費者,去kafka取數據的服務,例如logstash

Consumer Group:也是個邏輯上的概念,為一組consumer的集合,同一個topic的數據會廣播給不同的group,同一個group中只有一個consumer能拿到這個數據

也就是說對于同一個topic, 每個group都可以拿到同樣的所有數據,但是數據進入group后只能被其中的一個consumer消費 ,基于這一點我們只需要啟動多個logstsh,并將這些logstash分配在同一個組里邊就可以實現logstash的高可用了

input { kafka { bootstrap_servers => "10.8.9.2:9092,10.8.9.3:9092,10.8.9.4:9092" topics => ["ops_coffee_cn"] group_id => "groupA" codec => "json" }}

以上為logstash消費kafka集群的配置,其中加入了 group_id 參數, group_id 是一個的字符串,唯一標識一個group,具有相同 group_id 的consumer構成了一個consumer group,這樣啟動多個logstash進程,只需要保證 group_id 一致就能達到logstash高可用的目的,一個logstash掛掉同一Group內的logstash可以繼續消費

除了高可用外同一Group內的多個Logstash可以同時消費kafka內topic的數據,從而提高logstash的處理能力,但需要注意的是消費kafka數據時,每個consumer最多只能使用一個partition,當一個Group內consumer的數量大于partition的數量時, 只有等于partition個數的consumer能同時消費 ,其他的consumer處于等待狀態。

2813b8941185dc722080186e8f4edd06.png

例如一個topic下有3個partition,那么在一個有5個consumer的group中只有3個consumer在同時消費topic的數據,而另外兩個consumer處于等待狀態,所以想要增加logstash的消費性能,可以適當的增加topic的partition數量,但kafka中partition數量過多也會導致kafka集群故障恢復時間過長,消耗更多的文件句柄與客戶端內存等問題,也并不是partition配置越多越好,需要在使用中找到一個平衡

kafka partition

kafka中partition數量可以在創建topic時指定:

# bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --create --topic ops_coffee --partitions 3Created topic "ops_coffee".

--partitions:指定分區數,如果不指定默認會使用配置文件中 num.partitions 配置的數量

也可以手動修改partition的數量:

# bin/kafka-topics.sh --alter --zookeeper 127.0.0.1:2181 --partitions 5 --topic ops_coffeeAdding partitions succeeded!

注意partition的數量只能增加不能減少

如果想要知道topic的partition信息,可以通過以下命令查看topic詳情:

# bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --describe --topic ops_coffeeTopic:ops_coffee PartitionCount:3 ReplicationFactor:2 Configs: Topic: ops_coffee Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2 Topic: ops_coffee Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3 Topic: ops_coffee Partition: 2 Leader: 3 Replicas: 3,1 Isr: 3,1

至此對kafka consumer group有了更深入的了解,可以在具體的使用中游刃有余。

end:如果你覺得本文對你有幫助的話,記得關注點贊轉發,你的支持就是我更新動力。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/453683.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453683.shtml
英文地址,請注明出處:http://en.pswp.cn/news/453683.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jquery flot pie畫餅圖

具體效果如下&#xff1a; 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> 5 <title>Insert title here</title> 6 <script language"javas…

研發管理:產品研發團隊的早會

百度百科定義:研發管理就是在研發體系結構設計和各種管理理論基礎之上&#xff0c;借助信息平臺對研發過程中進行的團隊建設、流程設計、績效管理、風險管理、成本管理、項目管理和知識管理等的一系列協調活動。[詳細] 產品研發團隊在履行各種產品研發過程中&#xff0c;從大的…

mysql fetch rows_差異mysql_fetch_array()和mysql_fetch_rows()函數_mysql

區別mysql_fetch_array()和mysql_fetch_rows()函數form:http://www.uphtm.com/php/254.html如果我們不仔細看會發現象mysql_fetch_array()和mysql_fetch_rows()函數沒有什么區別&#xff0c;但是細細的看你會發現它們區別還是蠻大了&#xff0c;如果各位對于此函數的區別不了解…

Linux 狀態命令之網絡狀態 iftop - 查看實時帶寬流量

簡介 Linux 中查看網卡流量工具有 iptraf、iftop 以及 nethogs 等&#xff0c;iftop 可以用來監控網卡的實時流量(可以指定網段)、反向解析IP、顯示端口信息等。 安裝 CentOS yum 方式 # 安裝依賴 yum install flex byacc libpcap ncurses ncurses-devel libpcap-develyum …

Spring Boot 使用常見問題

Json格式化時間&#xff0c;時區設置 spring.jackson.time-zoneGMT8 spring.jackson.date-formatyyyy-MM-dd HH:mm:ss json數據無法序列化到RequestBody對象中 SpringMVC restful 注解之RequestBody進行json與object轉換 轉載于:https://www.cnblogs.com/tonyq/p/7890497.html

Angular15 利用ng2-file-upload實現文件上傳

待更新 轉載于:https://www.cnblogs.com/NeverCtrl-C/p/8279246.html

解讀設計模式----簡單工廠模式(SimpleFactory Pattern),你要什么我就給你什么

本文首發于博客園,地址:http://www.cnblogs.com/beniao/archive/2008/08/09/1263318.html 一、模式概述 從設計模式的類型上來說&#xff0c;簡單工廠模式是屬于創建型模式&#xff0c;又叫做靜態工廠方法&#xff08;Static Factory Method&#xff09;模式&#xff0c;但不屬…

Memcached常用操作

memcached是一個高性能的、分布式內存對象緩存系統&#xff0c;應用廣泛。 通過緩存數據庫查詢結果&#xff0c;減少數據庫訪問次數&#xff0c;以提高動態Web應用的速度、 提高可擴展性。 它可以應對任意多個連接&#xff0c;使用非阻塞的網絡IO。由于它的工作機制是在內存中開…

android自定義金額輸入鍵盤_Android 自定義控件 - 仿支付寶數字鍵盤

原標題&#xff1a;Android 自定義控件 - 仿支付寶數字鍵盤簡介在一些帶有支付功能的 App 中&#xff0c;輸入的密碼一般只能是純數字&#xff0c;雖然我們可以指定 EditText 輸入框只能輸入數字&#xff0c;但是為了提供用戶的使用體驗&#xff0c;我們往往更傾向于使用自定義…

博客目錄(python相關)

python 相關 文件格式相關系列 Python 第三方模塊之 beautifulsoup&#xff08;bs4&#xff09;- 解析 HTML Python 第三方模塊之 ElementTree&#xff08;ET&#xff09;- 解析XML文件 Python 第三方模塊之 lxml - 解析 HTML 和 XML 文件 python 第三方模塊 yaml - 處理 …

項目主體思索

1&#xff1a;分布式定義; 2&#xff1a;SSO集成方式 3&#xff1a;menu動態菜單的添加 4&#xff1a;tag頁面展示; 5&#xff1a;tiles的jsp復用&#xff1b; 暫時就想到這些了&#xff0c;以后繼續補充。轉載于:https://www.cnblogs.com/siyan/p/8286738.html

centos mysql pid_centos7 mysql The server quit without updating PID file(錯誤解決)

1 問題[rootlocalhost mysql]# /etc/rc.d/init.d/mysql statusMySQL is not running, but lock file (/var/lock/subsys/mysql[FAILED][rootlocalhost mysql]# /etc/rc.d/init.d/mysql startStarting MySQL...The server quit without updating PID file (/usr/local/mysql/dat…

tfs文件系統之NS配置管理

NameServer簡稱NS 充當著客戶與DS的交互橋梁 1.NS配置文件修改&#xff1a; [public] #log file size default 1GB log_size1073741824 #log file num default 64 log_num 64 #log file level default debug log_leveldebug #main queue size default 10240 task_max_queue_…

插件式架構設計實踐:插件式系統架構設計簡介

本系列博文將使用微軟RIA技術解決方案Silverlight以及擴展性管理框架Managed Extensibility Framework&#xff08;MEF&#xff09;&#xff0c;以插件式架構設計為導線&#xff0c;分享本人在從事基于微軟Silverlight技術構建的RIA系統中實施插件式系統架構設計的相關技術和經…

第十章 動態選路協議

RIP 缺陷&#xff1a; Routing Information Protocol RIP沒有子網的概念在路由器或鏈路發生故障后&#xff0c;需要很長的一段時間才能穩定下來采用跳數作為路由度量忽略了其他一些應該考慮的因素度量最大值為15則限制了可以使用RIP的網絡的大小OSPF Open Shortest Path First …

五種方式讓你在java中讀取properties文件內容不再是難題

2019獨角獸企業重金招聘Python工程師標準>>> 方式1.通過context:property-placeholder加載配置文件jdbc.properties中的內容 <context:property-placeholder location"classpath:jdbc.properties" ignore-unresolvable"true"/> 上面的配置…

hive metastore mysql_Hive MetaStore的結構

本篇主要是介紹Hive在MySQL中存儲的源數據的表結構。Hive MetaStore 數據庫表結構圖test.pngTBLS記錄數據表的信息字段解釋TBL_ID在hive中創建表的時候自動生成的一個id&#xff0c;用來表示&#xff0c;主鍵CREATE_TIME創建的數據表的時間&#xff0c;使用的是時間戳DBS_ID這個…

修煉一名程序員的職業水準

程序就是一系列按步驟進行的操作序列&#xff0c;它有好多種級別&#xff0c;比如最低級的微程序、次低級的匯編程序、高級的各種編程語言程序、最高級的腳本語言程序&#xff0c;也許我列的不對&#xff0c;但沒關系&#xff0c;我要說的是不管是那個級別的程序&#xff0c;其…

Rails開發細節《一》

常用命令 rails new new_app cd new_app rake db:create rails server rails generate controller Blog action1 action2 rails generate scaffold Product title:string description:textrails generate model Comment commenter:string body:text post:references rake db…

latex中怎樣使公式居中_LaTeX_多行公式對齊居中的同時選擇性的加編號

標簽: 【轉載請注明出處】http://www.cnblogs.com/mashiqi 2016/10/20 一年多沒寫博文了。今天寫一個短的,記錄一下使用LaTeX的一些經驗。 如何居中多行的公式呢?我試過很多種方法后,覺得下面這個最好用: 1 \begin{flalign*}2 % In this way (this arrange of &), the…