入門OpenTelemetry——部署OpenTelemetry

OpenTelemetry 部署模式

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

Agent 模式

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

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

Gateway 模式

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

發送遙測數據最佳實踐是將數據發送到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 的名稱為 centernamespace: opentelemetry
# 具體的配置內容
spec:replicas: 1           # 設置副本數量為1config:               # 定義 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]                      # 接收器為 OTLPprocessors: [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 collectorendpoint: "center-collector.opentelemetry.svc:4317"  # 替換為 central collector 的地址tls:insecure: true              # 不使用 TLSservice: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。

查看更多

崔亮的博客-專注devops自動化運維,傳播優秀it運維技術文章。更多原創運維開發相關文章,歡迎訪問https://www.cuiliangblog.cn

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

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

相關文章

Windows 上安裝下載并配置 Apache Maven

1. 下載 Maven 訪問官網&#xff1a; 打開 Apache Maven 下載頁面。 選擇版本&#xff1a; 下載最新的 Binary zip archive&#xff08;例如 apache-maven-3.9.9-bin.zip&#xff09;。 注意&#xff1a;不要下載 -src 版本&#xff08;那是源碼包&#xff09;。 2. 解壓 Mave…

摩方 12 代 N200 迷你主機(Ubuntu 系統)WiFi 抓包環境配置教程

摩方12代N200迷你主機標配 Intel AX201無線網卡&#xff0c;支持 WiFi 6 協議&#xff08;802.11ax&#xff09;及藍牙5.2。此網卡兼容主流抓包工具&#xff0c;但需注意&#xff1a; 驅動兼容性&#xff1a;Ubuntu 20.04及以上內核版本&#xff08;5.4&#xff09;默認支持AX2…

輕量、優雅、高擴展的事件驅動框架——Hibiscus-Signal

在現代企業級應用中&#xff0c;事件驅動架構&#xff08;EDA&#xff09;已成為解耦系統、提升擴展性的利器。今天給大家推薦一個非常優秀的國產輕量級事件驅動框架 —— Hibiscus Signal&#xff0c;它不僅天然整合 Spring Boot&#xff0c;還提供完整的事件生命周期支持&…

集合-進階

Collection collection的遍歷方式 迭代器遍歷 不依賴索引 import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;public class mycollection {public static void main(String[] args) {//1.創建集合并添加元素Collection<String> co…

【八股戰神篇】Java集合高頻面試題

專欄簡介 八股戰神篇專欄是基于各平臺共上千篇面經&#xff0c;上萬道面試題&#xff0c;進行綜合排序提煉出排序前百的高頻面試題&#xff0c;并對這些高頻八股進行關聯分析&#xff0c;將每個高頻面試題可能進行延伸的題目再次進行排序選出高頻延伸八股題。面試官都是以點破…

Android之橫向滑動列表

文章目錄 前言一、效果圖二、使用步驟1.xml布局2.代碼3.HomeHxBean3.adapter4.item布局5.兩個drawable 總結 前言 橫向滑動列表有多種實現方式&#xff0c;也可以用tablayout&#xff0c;也可以用recyclerview&#xff0c;今天主要介紹recyclerview。 一、效果圖 二、使用步驟…

關于物聯網的基礎知識(二)——物聯網體系結構分層

成長路上不孤單&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///計算機愛好者&#x1f60a;///持續分享所學&#x1f60a;///如有需要歡迎收藏轉發///&#x1f60a;】 今日分享關于物聯網的基礎知識&#xff08;二&a…

【機器人】復現 WMNav 具身導航 | 將VLM集成到世界模型中

WMNav 是由VLM視覺語言模型驅動的&#xff0c;基于世界模型的對象目標導航框架。 設計一種預測環境狀態的記憶策略&#xff0c;采用在線好奇心價值圖來量化存儲&#xff0c;目標在世界模型預測的各種場景中出現的可能性。 本文分享WMNav復現和模型推理的過程&#xff5e; 下…

英語學習5.17

attract &#x1f449; 前綴&#xff1a;at-&#xff08;朝向&#xff09; &#x1f449; 含義&#xff1a;吸引&#xff08;朝某處拉&#xff09; 例句&#xff1a;The flowers attract bees. &#xff08;花吸引蜜蜂。&#xff09; distract &#x1f449; 前綴&#xff…

【軟考 McCabe度量法】

McCabe度量法&#xff08;McCabe’s Cyclomatic Complexity&#xff09;是由Thomas McCabe提出的一種用于衡量程序模塊環路復雜性的軟件度量方法。它通過分析代碼的控制流結構來評估程序的復雜度&#xff0c;幫助開發者識別難以維護或測試風險較高的代碼區域。 一、McCabe度量法…

解讀 TypeScript 枚舉Enum

TypeScript 枚舉通過命名常量、類型安全和結構化組織&#xff0c;顯著提升代碼質量。使用時需根據場景選擇合適的類型&#xff08;數字、字符串或常量枚舉&#xff09;&#xff0c;并權衡性能與動態訪問需求。掌握其特性和使用的場景&#xff0c;能在復雜項目中有效提升代碼的可…

MODBUS RTU通信協議詳解與調試指南

一、MODBUS RTU簡介 MODBUS RTU&#xff08;Remote Terminal Unit&#xff09;是一種基于串行通信&#xff08;RS-485/RS-232&#xff09;的工業標準協議&#xff0c;采用二進制數據格式&#xff0c;具有高效、可靠的特點&#xff0c;廣泛應用于PLC、傳感器、變頻器等工業設備…

TCP/UDP協議原理和區別 筆記

從簡單到難吧 區別就是TCP一般用于安全穩定的需求&#xff0c;UDP一般用于不那么需要完全數據的需求&#xff0c;比如說直播&#xff0c;視頻等。 再然后就是TPC性能慢于UDP。 再然后我們看TCP的原理&#xff08;三次握手&#xff0c;數據傳輸&#xff0c;四次揮手&#xff0…

Jackson使用詳解

JSON Jackson是java提供處理json數據序列化和反序列的工具類&#xff0c;在使用Jackson處理json前&#xff0c;我們得先掌握json。 JSON數據類型 類型示例說明字符串&#xff08;String&#xff09;"hello"雙引號包裹&#xff0c;支持轉義字符&#xff08;如 \n&a…

C語言| 指針變量的定義

C語言| 指針的優點-CSDN博客 * 表示“指向”&#xff0c;為了說明指針變量和它所指向的變量之間的聯系。 int * i&#xff1b;//表示指針變量i里面存放的地址&#xff0c;所指向的存儲單元里的【數據】。 【指針變量的定義】 C語言規定所有變量&#xff0c;在使用前必須先定…

Java 快速轉 C# 教程

以下是一個針對 Java 開發者快速轉向 C# 的簡明教程&#xff0c;重點對比 Java 與 C# 的異同&#xff0c;幫助你快速上手。 項目結構&#xff1a; .sln &#xff1a;解決方案文件&#xff0c;管理多個項目之間的依賴關系。.csproj &#xff1a;項目文件&#xff0c;定義目標框…

EasyExcel詳解

文章目錄 一、easyExcel1.什么是easyExcel2.easyExcel示例demo3.easyExcel read的底層邏輯~~4.easyExcel write的底層邏輯~~ 二、FastExcel1.為什么更換為fastExcel2.fastExcel新功能 一、easyExcel 1.什么是easyExcel 內容摘自官方&#xff1a;Java解析、生成Excel比較有名的…

jvm安全點(三)openjdk17 c++源碼垃圾回收之安全點結束,喚醒線程

1. VMThread::inner_execute() - 觸發安全點?? cpp 復制 void VMThread::inner_execute(VM_Operation* op) { if (op->evaluate_at_safepoint()) { SafepointSynchronize::begin(); // 進入安全點&#xff0c;阻塞所有線程 // ...執行GC等操作... SafepointSynchronize::…

102. 二叉樹的層序遍歷遞歸法:深度優先搜索的巧妙應用

二叉樹的層序遍歷是一種經典的遍歷方式&#xff0c;它要求按層級逐層訪問二叉樹的節點。通常我們會使用隊列來實現層序遍歷&#xff0c;但遞歸法也是一種可行且有趣的思路。本文將深入探討遞歸法解決二叉樹層序遍歷的核心難點&#xff0c;并結合代碼和模擬過程進行詳細講解。 …

首個窗口級無人機配送VLN系統!中科院LogisticsVLN:基于MLLM實現精準投遞

導讀 隨著智能物流需求日益增長&#xff0c;特別是“最后一公里”配送場景的精細化&#xff0c;傳統地面機器人逐漸暴露出適應性差、精度不足等瓶頸。為此&#xff0c;本文提出了LogisticsVLN系統——一個基于多模態大語言模型的無人機視覺語言導航框架&#xff0c;專為窗戶級別…