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 組件上報數據至觀測雲。
流程
- 應用接入 SkyWalking 探針,並通過 KafkaMQ plugin 進行數據上報至 KafkaMQ Server
- KafkaMQ Server 緩存 Skywalking 數據
- DataKit 啓動 KafkaMQ 採集器,消費 KafkaMQ Server 隊列數據
- 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 監控視圖”,點擊 “確定” 即可添加視圖。