Stories

Detail Return Return

通過 KafkaMQ 接入Skywalking 數據最佳實踐 - Stories Detail

Skywalking

SkyWalking 是一個開源的分佈式追蹤系統,主要用於監控和分析分佈式系統的性能和行為。它支持多種語言和框架,能夠實時收集和分析服務間的調用鏈路數據、性能指標和日誌信息,幫助開發者快速定位系統瓶頸和問題。

SkyWalking Java Agent 是 SkyWalking 提供的針對 Java 應用的自動追蹤工具。它通過字節碼增強技術,在不修改應用代碼的情況下,自動注入追蹤代碼,實現對 Java 應用的性能監控和調用鏈追蹤。Java Agent 可以與 SkyWalking OAP Server 配合,將採集到的指標、日誌和調用鏈數據上報到後端進行分析和可視化展示,幫助開發和運維團隊更好地管理和優化分佈式系統。

SkyWalking KafkaMQ

SkyWalking KafkaMQ 是 SkyWalking 項目中的一個插件,用於將 SkyWalking 採集的指標、日誌和調用鏈數據通過 Kafka 消息隊列上報到 SkyWalking OAP Server。它允許 SkyWalking Java Agent 將數據發送到 Kafka 集羣,再由 Kafka 消費者將數據轉發到 SkyWalking OAP Server,從而實現數據的異步傳輸和解耦,提高系統的可擴展性和可靠性。這種架構特別適用於大規模分佈式系統,能夠有效減輕 OAP Server 的壓力,同時確保數據的高效傳輸和處理。

觀測雲

觀測雲是一款專為 IT 工程師打造的全鏈路可觀測產品,它集成了基礎設施監控、應用程序性能監控和日誌管理,為整個技術棧提供實時可觀察性。這款產品能夠幫助工程師全面瞭解端到端的用户體驗追蹤,瞭解應用內函數的每一次調用,以及全面監控雲時代的基礎設施。此外,觀測雲還具備快速發現系統安全風險的能力,為數字化時代提供安全保障。

觀測雲兼容 SkyWalking 的數據,可以將 SkyWalking 的數據直接推送至觀測雲,或者使用 KafkaMQ 的方式消費 SkyWalking 數據上報至觀測雲。

實踐

實踐主題:SpringBoot 應用接入 SkyWalking ,並激活 SkyWalking KafkaMQ 組件上報數據至觀測雲。

流程

圖片

  1. 應用接入 SkyWalking 探針,並通過 KafkaMQ plugin 進行數據上報至 KafkaMQ Server
  2. KafkaMQ Server 緩存 Skywalking 數據
  3. DataKit 啓動 KafkaMQ 採集器,消費 KafkaMQ Server 隊列數據
  4. DataKit 啓動 Skywalking 採集器, KafkaMQ 採集器消費到的數據使用 SkyWalking 採集器進行解析並推送至觀測雲

應用

當前主要是以 JAVA 應用為主,新增 skywalking-agent 進行自動化埋點,啓動命令如下:

java -javaagent:/home/liurui/agent/skywalking-agent-8.15/skywalking-agent.jar \
-Dskywalking.agent.service_name=demo-app  \
-DSW_KAFKA_BOOTSTRAP_SERVERS=localhost:9092 \
-DSW_KAFKA_NAMESPACE=dev  \
-jar demo-app.jar
  • -Dskywalking.agent.service_name: 服務名稱
  • -DSW_KAFKA_BOOTSTRAP_SERVERS: kafkamq server
  • -DSW_KAFKA_NAMESPACE: topic 的 namespace,配置後,會影響默認的隊列名稱。將當前 namespace 作為前綴追加到默認隊列名稱上。

如需 Skywalking Kafka 插件生效,需要將 optional-reporter-plugins/kafka-reporter-plugin-xxx.jar 文件複製到 plugins 目錄下,Skywalking 自動激活 Kafka 插件,並使默認的配置 collector.backend_service 失效。

訪問應用產生鏈路信息,後續採集會用到。

採集器

DataKit 採集器目錄為 /usr/local/datakit/conf.d

  • 開啓 KafkaMQ 採集器
cd kafkamq
cp kafkamq.conf.sample kafkamq.conf

調整 kafkamq.conf,內容如下:

# {"version": "1.72.0", "desc": "do NOT edit this line"}

[[inputs.kafkamq]]
  addrs = ["localhost:9092"]
  # your kafka version:0.8.2 ~ 3.2.0
  kafka_version = "2.0.0"
  group_id = "datakit-group"
  # consumer group partition assignment strategy (range, roundrobin, sticky)
  assignor = "roundrobin"

  offsets=-1

  ## skywalking custom
  [inputs.kafkamq.skywalking]
  ## Required: send to datakit skywalking input.
    dk_endpoint="http://localhost:9529"
    thread = 8 
    topics = [
      "skywalking-metrics",
      "skywalking-profilings",
      "skywalking-segments",
      "skywalking-managements",
      "skywalking-meters",
      "skywalking-logs",
    ]
    # 需要跟應用配置的kafka namespace 保持一致
    namespace = "dev"
  • 開啓 Skywalking 採集器
cd skywalking
cp skywalking.conf.sample skywalking.conf

內容不需要調整。

  • 重啓 DataKit
datakit service -R

效果

登錄觀測雲控制枱,點擊「應用性能監測」 -「鏈路」,即可查看服務調用鏈情況。

圖片

點擊列表數據可以查看到每一個 trace 的 span 信息。

圖片

點擊「場景」 -「新建儀表板」,輸入 “JVM Skywalking”, 選擇 “JVM Skywalking 監控視圖”,點擊 “確定” 即可添加視圖。

圖片

Add a new Comments

Some HTML is okay.