在公網(wǎng)環(huán)境中作為Input接入
云消息隊(duì)列 Kafka 版可以作為Input接入Filebeat。本文說(shuō)明如何在公網(wǎng)環(huán)境下通過(guò)Filebeat從云消息隊(duì)列 Kafka 版消費(fèi)消息。
背景信息
在開(kāi)始本教程前,請(qǐng)確保您已完成以下操作:
購(gòu)買(mǎi)并部署云消息隊(duì)列 Kafka 版實(shí)例。具體操作,請(qǐng)參見(jiàn)公網(wǎng)和VPC接入。
下載并安裝Filebeat。具體操作,請(qǐng)參見(jiàn)Download Filebeat。
下載并安裝JDK 8。具體操作,請(qǐng)參見(jiàn)Download JDK 8。
步驟一:獲取接入點(diǎn)
Filebeat通過(guò)云消息隊(duì)列 Kafka 版的接入點(diǎn)與云消息隊(duì)列 Kafka 版建立連接。
在概覽頁(yè)面的資源分布區(qū)域,選擇地域。
在實(shí)例列表頁(yè)面,單擊作為Input接入Filebeat的實(shí)例名稱。
在實(shí)例詳情頁(yè)面的接入點(diǎn)信息區(qū)域,獲取實(shí)例的接入點(diǎn)。在配置信息區(qū)域,獲取用戶名與密碼。
說(shuō)明不同接入點(diǎn)的差異,請(qǐng)參見(jiàn)接入點(diǎn)對(duì)比。
步驟二:創(chuàng)建Topic
創(chuàng)建用于存儲(chǔ)消息的Topic。
在概覽頁(yè)面的資源分布區(qū)域,選擇地域。
重要Topic需要在應(yīng)用程序所在的地域(即所部署的ECS的所在地域)進(jìn)行創(chuàng)建。Topic不能跨地域使用。例如Topic創(chuàng)建在華北2(北京)這個(gè)地域,那么消息生產(chǎn)端和消費(fèi)端也必須運(yùn)行在華北2(北京)的ECS。
在實(shí)例列表頁(yè)面,單擊目標(biāo)實(shí)例名稱。
在左側(cè)導(dǎo)航欄,單擊Topic 管理。
在Topic 管理頁(yè)面,單擊創(chuàng)建 Topic。
在創(chuàng)建 Topic面板,設(shè)置Topic屬性,然后單擊確定。
參數(shù)
說(shuō)明
示例
名稱
Topic名稱。
demo
描述
Topic的簡(jiǎn)單描述。
demo test
分區(qū)數(shù)
Topic的分區(qū)數(shù)量。
12
存儲(chǔ)引擎
說(shuō)明當(dāng)前僅專業(yè)版實(shí)例支持選擇存儲(chǔ)引擎類型,標(biāo)準(zhǔn)版暫不支持,默認(rèn)選擇為云存儲(chǔ)類型。
Topic消息的存儲(chǔ)引擎。
云消息隊(duì)列 Kafka 版支持以下兩種存儲(chǔ)引擎。
云存儲(chǔ):底層接入阿里云云盤(pán),具有低時(shí)延、高性能、持久性、高可靠等特點(diǎn),采用分布式3副本機(jī)制。實(shí)例的規(guī)格類型為標(biāo)準(zhǔn)版(高寫(xiě)版)時(shí),存儲(chǔ)引擎只能為云存儲(chǔ)。
Local 存儲(chǔ):使用原生Kafka的ISR復(fù)制算法,采用分布式3副本機(jī)制。
云存儲(chǔ)
消息類型
Topic消息的類型。
普通消息:默認(rèn)情況下,保證相同Key的消息分布在同一個(gè)分區(qū)中,且分區(qū)內(nèi)消息按照發(fā)送順序存儲(chǔ)。集群中出現(xiàn)機(jī)器宕機(jī)時(shí),可能會(huì)造成消息亂序。當(dāng)存儲(chǔ)引擎選擇云存儲(chǔ)時(shí),默認(rèn)選擇普通消息。
分區(qū)順序消息:默認(rèn)情況下,保證相同Key的消息分布在同一個(gè)分區(qū)中,且分區(qū)內(nèi)消息按照發(fā)送順序存儲(chǔ)。集群中出現(xiàn)機(jī)器宕機(jī)時(shí),仍然保證分區(qū)內(nèi)按照發(fā)送順序存儲(chǔ)。但是會(huì)出現(xiàn)部分分區(qū)發(fā)送消息失敗,等到分區(qū)恢復(fù)后即可恢復(fù)正常。當(dāng)存儲(chǔ)引擎選擇Local 存儲(chǔ)時(shí),默認(rèn)選擇分區(qū)順序消息。
普通消息
日志清理策略
Topic日志的清理策略。
當(dāng)存儲(chǔ)引擎選擇Local 存儲(chǔ)(當(dāng)前僅專業(yè)版實(shí)例支持選擇存儲(chǔ)引擎類型為L(zhǎng)ocal存儲(chǔ),標(biāo)準(zhǔn)版暫不支持)時(shí),需要配置日志清理策略。
云消息隊(duì)列 Kafka 版支持以下兩種日志清理策略。
Delete:默認(rèn)的消息清理策略。在磁盤(pán)容量充足的情況下,保留在最長(zhǎng)保留時(shí)間范圍內(nèi)的消息;在磁盤(pán)容量不足時(shí)(一般磁盤(pán)使用率超過(guò)85%視為不足),將提前刪除舊消息,以保證服務(wù)可用性。
Compact:使用Kafka Log Compaction日志清理策略。Log Compaction清理策略保證相同Key的消息,最新的value值一定會(huì)被保留。主要適用于系統(tǒng)宕機(jī)后恢復(fù)狀態(tài),系統(tǒng)重啟后重新加載緩存等場(chǎng)景。例如,在使用Kafka Connect或Confluent Schema Registry時(shí),需要使用Kafka Compact Topic存儲(chǔ)系統(tǒng)狀態(tài)信息或配置信息。
重要Compact Topic一般只用在某些生態(tài)組件中,例如Kafka Connect或Confluent Schema Registry,其他情況的消息收發(fā)請(qǐng)勿為T(mén)opic設(shè)置該屬性。具體信息,請(qǐng)參見(jiàn)云消息隊(duì)列 Kafka 版Demo庫(kù)。
Compact
標(biāo)簽
Topic的標(biāo)簽。
demo
創(chuàng)建完成后,在Topic 管理頁(yè)面的列表中顯示已創(chuàng)建的Topic。
步驟三:發(fā)送消息
向創(chuàng)建的Topic發(fā)送消息。
在概覽頁(yè)面的資源分布區(qū)域,選擇地域。
在實(shí)例列表頁(yè)面,單擊目標(biāo)實(shí)例名稱。
在左側(cè)導(dǎo)航欄,單擊Topic 管理。
在Topic 管理頁(yè)面,單擊目標(biāo)Topic名稱進(jìn)入Topic 詳情頁(yè)面,然后單擊體驗(yàn)發(fā)送消息。
在快速體驗(yàn)消息收發(fā)面板,發(fā)送測(cè)試消息。
發(fā)送方式選擇控制臺(tái)。
在消息 Key文本框中輸入消息的Key值,例如demo。
在消息內(nèi)容文本框輸入測(cè)試的消息內(nèi)容,例如 {"key": "test"}。
設(shè)置發(fā)送到指定分區(qū),選擇是否指定分區(qū)。
單擊是,在分區(qū) ID文本框中輸入分區(qū)的ID,例如0。如果您需查詢分區(qū)的ID,請(qǐng)參見(jiàn)查看分區(qū)狀態(tài)。
單擊否,不指定分區(qū)。
根據(jù)界面提示信息,通過(guò)SDK訂閱消息,或者執(zhí)行Docker命令訂閱消息。
發(fā)送方式選擇Docker,運(yùn)行Docker容器。
執(zhí)行運(yùn)行 Docker 容器生產(chǎn)示例消息區(qū)域的Docker命令,發(fā)送消息。
執(zhí)行發(fā)送后如何消費(fèi)消息?區(qū)域的Docker命令,訂閱消息。
發(fā)送方式選擇SDK,根據(jù)您的業(yè)務(wù)需求,選擇需要的語(yǔ)言或者框架的SDK以及接入方式,通過(guò)SDK體驗(yàn)消息收發(fā)。
步驟四:創(chuàng)建Group
創(chuàng)建Filebeat所屬的Group。
在概覽頁(yè)面的資源分布區(qū)域,選擇地域。
在實(shí)例列表頁(yè)面,單擊目標(biāo)實(shí)例名稱。
在左側(cè)導(dǎo)航欄,單擊Group 管理。
在Group 管理頁(yè)面,單擊創(chuàng)建 Group。
在創(chuàng)建 Group面板的Group ID文本框輸入Group的名稱,在描述文本框簡(jiǎn)要描述Group,并給Group添加標(biāo)簽,單擊確定。
創(chuàng)建完成后,在Group 管理頁(yè)面的列表中顯示已創(chuàng)建的Group。
步驟五:Filebeat消費(fèi)消息
在安裝了Filebeat的機(jī)器上啟動(dòng)Filebeat,從創(chuàng)建的Topic中消費(fèi)消息。
執(zhí)行cd命令切換到Filebeat的安裝目錄。
執(zhí)行以下命令下載CA證書(shū)文件。
wget https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20220826/ytsw/only-4096-ca-cert
創(chuàng)建input.yml配置文件。
執(zhí)行命令
vim input.yml
創(chuàng)建空的配置文件。按i鍵進(jìn)入插入模式。
輸入以下內(nèi)容。
filebeat.inputs: - type: kafka hosts: - alikafka-pre-cn-zv**********-1.alikafka.aliyuncs.com:9093 - alikafka-pre-cn-zv**********-2.alikafka.aliyuncs.com:9093 - alikafka-pre-cn-zv**********-3.alikafka.aliyuncs.com:9093 username: "alikafka_pre-cn-v641e1dt***" password: "aeN3WLRoMPRXmAP2jvJuGk84Kuuo***" topics: ["filebeat_test"] group_id: "filebeat_group" ssl.certificate_authorities: ["/home/admin/filebeat/filebeat-7.7.0-linux-x86_64/ca-cert"] ssl.verification_mode: none output.console: pretty: true
參數(shù)
描述
示例值
hosts
云消息隊(duì)列 Kafka 版提供的公網(wǎng)接入點(diǎn)為SSL接入點(diǎn)。
- alikafka-pre-cn-zv**********-1.alikafka.aliyuncs.com:9093 - alikafka-pre-cn-zv**********-2.alikafka.aliyuncs.com:9093 - alikafka-pre-cn-zv**********-3.alikafka.aliyuncs.com:9093
username
公網(wǎng)/VPC實(shí)例的用戶名。
alikafka_pre-cn-v641e1d***
password
公網(wǎng)/VPC實(shí)例的密碼。
aeN3WLRoMPRXmAP2jvJuGk84Kuuo***
topics
Topic的名稱。
filebeat_test
group_id
Group的名稱。
filebeat_group
ssl.certificate_authorities
CA證書(shū)所在位置。
/home/admin/filebeat/filebeat-7.7.0-linux-x86_64/ca-cert
ssl.verification_mode
認(rèn)證模式。
none
更多參數(shù)設(shè)置,請(qǐng)參見(jiàn)Kafka input plugin。
按Esc鍵回到命令行模式。
按:鍵進(jìn)入底行模式,輸入wq,然后按回車(chē)鍵保存文件并退出。
執(zhí)行以下命令消費(fèi)消息。
./filebeat -c ./input.yml