入門OpenTelemetry——部署OpenTelemetry

2025年05月14日22:52:06 科技 1397

OpenTelemetry 部署模式

OpenTelemetry Collector 按部署方式分為 Agent 和Gateway 模式。

Agent 模式

在 Agent 模式下,OpenTelemetry 檢測的應用程序將數據發送到與應用程序一起駐留的(收集器)代理。然後,該代理程序將接管並處理所有來自應用程序的追蹤數據。

收集器可以通過 sidecar 方式部署為代理,sidecar 可以配置為直接將數據發送到存儲後端。

入門OpenTelemetry——部署OpenTelemetry - 天天要聞

Gateway 模式

Gateway 模式則是將數據發送到另一個 OpenTelemetry 收集器,然後從(中心)收集器進一步將數據發送到存儲後端。在這種配置中,我們有一個中心的 OpenTelemetry 收集器,它使用 deployment/statefulset/daemonset 模式部署,具有許多優勢,如自動擴展。

入門OpenTelemetry——部署OpenTelemetry - 天天要聞

發送遙測數據最佳實踐是將數據發送到OpenTelemetry Collector而不是直接發送到後端。Collector可以幫助簡化密鑰管理,將數據導出與應用程序解耦,並允許您在遙測數據中添加其他數據。

部署 OpenTelemetry

建議使用 OpenTelemetry Operator 來部署,因為它可以幫助我們輕鬆部署和管理 OpenTelemetry 收集器,還可以自動檢測應用程序。具體可參考文檔https://opentelemetry.io/docs/platforms/Kubernetes/operator/

部署cert-manager

因為 Operator 使用了 Admission Webhook 通過 HTTP 回調機制對資源進行校驗/修改。Kubernetes 要求 Webhook 服務必須使用 tls,因此 Operator 需要為其 webhook server 簽發證書,所以需要先安裝cert-manager。

# wget https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml
# kubectl apply -f cert-manager.yaml
# kubectl get pod -n cert-manager
NAME                                       READY   STATUS    RESTARTS   AGE
cert-manager-5577849d6c-kwg7f              1/1     Running   0          3m18s
cert-manager-cainjector-5755f77bbb-knlm2   1/1     Running   0          3m18s
cert-manager-webhook-b78d65b96-vpvrn       1/1     Running   0          3m18s

部署Operator

在 Kubernetes 上使用 OpenTelemetry,主要就是部署 OpenTelemetry 收集器。

# wget https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
# kubectl apply -f opentelemetry-operator.yaml
# kubectl get pod -n opentelemetry-operator-system 
NAME                                                         READY   STATUS    RESTARTS   AGE
opentelemetry-operator-controller-manager-6d94c5db75-cz957   2/2     Running   0          74s
# kubectl get crd |grep opentelemetry
instrumentations.opentelemetry.io           2025-04-21T09:48:53Z
opampbridges.opentelemetry.io               2025-04-21T09:48:54Z
opentelemetrycollectors.opentelemetry.io    2025-04-21T09:48:54Z
targetallocators.opentelemetry.io           2025-04-21T09:48:54Z

部署Collector(中心)

接下來我們部署一個精簡版的 OpenTelemetry Collector,用於接收 OTLP 格式的 trace 數據,通過 gRPC 或 HTTP 協議接入,經過內存控制與批處理後,列印到日誌中以供調試使用。

# cat center-collector.yaml              
apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
# 元數據定義部分
metadata:
  name: center        # Collector 的名稱為 center
  namespace: opentelemetry
# 具體的配置內容
spec:
  replicas: 1           # 設置副本數量為1
  config:               # 定義 Collector 配置
    receivers:          # 接收器,用於接收遙測數據(如 trace、metrics、logs)
      otlp:             # 配置 OTLP(OpenTelemetry Protocol)接收器
        protocols:      # 啟用哪些協議來接收數據
          grpc: 
            endpoint: 0.0.0.0:4317      # 啟用 gRPC 協議
          http: 
            endpoint: 0.0.0.0:4318      # 啟用 HTTP 協議

    processors:         # 處理器,用於處理收集到的數據
      batch: {}         # 批處理器,用於將數據分批發送,提高效率

    exporters:          # 導出器,用於將處理後的數據發送到後端系統
      debug: {}         # 使用 debug 導出器,將數據列印到終端(通常用於測試或調試)

    service:            # 服務配置部分
      pipelines:        # 定義處理管道
        traces:         # 定義 trace 類型的管道
          receivers: [otlp]                      # 接收器為 OTLP
          processors: [batch]                    # 使用批處理器
          exporters: [debug]                     # 將數據列印到終端

# kubectl apply -f center-collector.yaml 
opentelemetrycollector.opentelemetry.io/center created
# kubectl get pod -n opentelemetry
NAME                                READY   STATUS    RESTARTS      AGE
center-collector-5c5987f4ff-zwqbk   1/1     Running   0             9s
# kubectl get svc -n opentelemetry  
NAME                          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                       AGE
center-collector              ClusterIP   10.109.226.90    <none>        4317/TCP,4318/TCP             22s
center-collector-headless     ClusterIP   None             <none>        4317/TCP,4318/TCP             22s
center-collector-monitoring   ClusterIP   10.110.106.116   <none>        8888/TCP                      22s

部署Collector(代理)

我們使用 Sidecar 模式部署 OpenTelemetry 代理。該代理會將應用程序的追蹤發送到我們剛剛部署的中心OpenTelemetry 收集器。

# cat sidecar-collector.yaml 
apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector          # 定義資源類型為 OpenTelemetryCollector
metadata:
  name: sidecar                       # Collector 的名稱
  namespace: opentelemetry
spec:
  mode: sidecar                       # 以 sidecar 模式運行(與應用容器同 Pod)
  config:                             # Collector 配置部分(結構化 YAML)
    receivers:
      otlp:                           # 使用 OTLP 協議作為接收器
        protocols:
          grpc: 
            endpoint: 0.0.0.0:4317      # 啟用 gRPC 協議
          http: 
            endpoint: 0.0.0.0:4318      # 啟用 HTTP 協議
    processors:
      batch: {}                       # 使用 batch 處理器將數據批量發送,提高性能

    exporters:
      debug: {}                       # 將數據輸出到 stdout 日誌(用於調試)
      otlp:                           # 添加一個 OTLP 類型導出器,發送到 central collector
        endpoint: "center-collector.opentelemetry.svc:4317"  # 替換為 central collector 的地址
        tls:
          insecure: true              # 不使用 TLS

    service:
      telemetry:
        logs:
          level: "debug"              # 設置 Collector 自身日誌等級為 debug(方便觀察日誌)

      pipelines:
        traces:                       # 定義 trace 數據處理流水線
          receivers: [otlp]           # 從 otlp 接收 trace 數據
          processors: [batch]         # 使用批處理器
          exporters: [debug, otlp]    # 同時導出到 debug(日誌)和 otlp(中心 Collector)
# kubectl apply -f sidecar-collector.yaml                
opentelemetrycollector.opentelemetry.io/sidecar created
# kubectl get opentelemetrycollectors -n opentelemetry   
NAME      MODE         VERSION   READY   AGE   IMAGE                                                                                     MANAGEMENT
center    deployment   0.123.1   1/1     10m   ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector:0.123.1   managed
sidecar   sidecar      0.123.1           11s                                                                                             managed
# kubectl get pod -n opentelemetry                    
NAME                                READY   STATUS    RESTARTS      AGE
center-collector-5c5987f4ff-zwqbk   1/1     Running   0             10m

sidecar 代理依賴於應用程序啟動,因此現在創建後並不會立即啟動,需要我們創建一個應用程序並使用這個 sidecar 模式的 collector。

科技分類資訊推薦

入門OpenTelemetry——部署OpenTelemetry - 天天要聞

入門OpenTelemetry——部署OpenTelemetry

OpenTelemetry 部署模式OpenTelemetry Collector 按部署方式分為 Agent 和Gateway 模式。Agent 模式在 Agent 模式下,OpenTelemetry 檢測的應用程序將數據發送到與應用程序
創維A6F Pro 618重磅來襲:影音發燒友的理想選擇,多項創新技術引領行業革新 - 天天要聞

創維A6F Pro 618重磅來襲:影音發燒友的理想選擇,多項創新技術引領行業革新

在電視行業競爭日益激烈的當下,技術創新已成為品牌突圍的核心動力。作為深耕顯示領域37年的科技企業,創維始終以「技術創維,敢創敢為」為品牌理念,不斷突破行業邊界。5月14日,創維2025年新產品/新技術發布會在深圳南山創維半導體大廈隆重舉行。「為發燒友而生的Mini LED電視」創維A6F Pro,成為首款重磅推介的高端旗艦...
華為Pura80終於曝光,就長這樣 - 天天要聞

華為Pura80終於曝光,就長這樣

昨天機哥還看到,有機友在問 Pura 80 的新消息。吶~今天 Pura 80 的鏡頭膜就曝光啦。不知道機友們怎麼看啊。機哥剛看到這張圖的時候,就感覺一股熟悉的味道撲面而來,雖說還是熟悉的三角排列吧,但和之前的「一大帶兩小」不同。這次三個洞洞,大小都幾乎一毛一樣。就有點像…好傢夥,華子也要搞果味了?當然啊,圖中拿起來...
超250W+7500mAh!今天這新機的價格是TM瘋了吧 - 天天要聞

超250W+7500mAh!今天這新機的價格是TM瘋了吧

發哥和高通,這波是打得有來有回啊。去年年底,聯發科推出了天璣 8400。雖然是中端芯,但用上了全大核架構,跑分能幹到 180W。妥妥的新一代中端神 U。來到 4 月,輪到高通這邊發力了。發布了同樣是中端的驍龍 8s Gen 4。同樣是力大磚飛的全大核架構,性能比天璣 8400 還要強一些,來到 240W 分。你以為這波神仙打架這就完了...
iQOO Pad5 系列平板全系標配 10 大遊戲技術 - 天天要聞

iQOO Pad5 系列平板全系標配 10 大遊戲技術

IT之家 5 月 14 日消息,iQOO Pad5 系列平板已官宣 5 月見(5 月 20 日 19:00 發布即開售),新品號稱「全新 PC 級性能巨幕」。根據官方最新預熱,iQOO Pad5 系列平板全系標配 10 大遊戲技術,IT之家附如下:遊戲超分(10+ 熱門遊戲適配)遊戲超幀(開放世界手游 120FPS 超幀)超分超幀並發光線追蹤技術(自然光影)
「小鋼炮」的動能切換 ID.3 GTX將於6月上市 - 天天要聞

「小鋼炮」的動能切換 ID.3 GTX將於6月上市

「小鋼炮」在國內的風靡,也可歸功於上汽大眾Polo。5月,Polo迎來了重要里程碑——問世50周年,自1975年問世至今,這款經典「小鋼炮」歷經六代進化,全球銷量累計超過了2000多萬,真正成為了一款全球經典名車。而在Polo問世50周年之際,「小鋼炮」也實現了「動能切換」,從傳統燃油走進了純電動時代,被上汽大眾ID.3強勢接...
侮辱雷軍、小米,博主道歉並賠錢!雷軍微博已設置限制評論 - 天天要聞

侮辱雷軍、小米,博主道歉並賠錢!雷軍微博已設置限制評論

5月14日傍晚,@小米法務部 發文:近日,就小米公司與自媒體「民之力」(又名「網路一兵」)網路侵權責任糾紛一案,法院作出一審判決。法院認定被告存在侮辱、誹謗行為,侵害了小米公司的名譽權。判令被告刪除在抖音、頭條、嗶哩嗶哩、西瓜視頻、快手、微信視頻號、微信公眾號平台賬號內發布的侵權內容,發布聲明消除給小米...
華為nova 14系列即將登場:史上最強一代,體驗全面進階 - 天天要聞

華為nova 14系列即將登場:史上最強一代,體驗全面進階

近日,華為終端官方微博持續釋放華為nova 14系列相關預熱信息,不斷為消費者帶來新的驚喜與期待。從官宣當天的懸念視頻,到華為nova全球代言人易烊千璽的平面大片再到產品四色海報的曝光,華為nova 14系列的神秘面紗正被一層層揭開,吸引了市場的廣泛關注。 首先從代言人平面大片及產品四色創拍海報來看,華為nova 14系列在...
從能源裝備嚮應急裝備藍海拓展,川潤股份發布智能綜合防災應急倉 - 天天要聞

從能源裝備嚮應急裝備藍海拓展,川潤股份發布智能綜合防災應急倉

如何應對氣候變化加劇已經是全球共同命題。世界氣象組織數據顯示,近五年全球自然災害造成的經濟損失較前十年增長47%,而我國作為全球自然災害較嚴重的國家之一,應急管理部統計顯示,2024年全國因災直接經濟損失達3287億元。國務院《"十四五"國家應急體系規劃》明確提出,到2025年要形成統一指揮、專常兼備的現代化應急能...
芯馳殺入具身智能市場,推出高性能邊緣AI SoC D9 MAX - 天天要聞

芯馳殺入具身智能市場,推出高性能邊緣AI SoC D9 MAX

2025年5月13日,由芯原股份主辦的以「具身智慧機器人」為主題的創新IC新品推介」「第十五屆松山湖中國IC創新高峰論壇」正式在東莞松山湖召開。在此次論壇上,北京芯馳半導體科技股份有限公司 CTO 孫鳴樂推介了面向具身智能應用的高性能邊緣A