AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

OpenTelemetry 實踐指南:歷史、架構與基本概念

來源: 責編: 時間:2024-05-21 09:06:36 118觀看
導讀歷史發展早在 OpenTelemetry 誕生之前可觀測性這個概念就一直存在了,我記得我最早接觸到這個概念是在 16 年當時的公司所使用的一個產品:pinpoint現如今這個項目依然比較活躍。圖片依然還記得當時通過它可以直接看到項

歷史發展

早在 OpenTelemetry 誕生之前可觀測性這個概念就一直存在了,我記得我最早接觸到這個概念是在 16 年當時的公司所使用的一個產品:pinpointUjd28資訊網——每日最新資訊28at.com

現如今這個項目依然比較活躍。Ujd28資訊網——每日最新資訊28at.com

圖片圖片Ujd28資訊網——每日最新資訊28at.com

依然還記得當時通過它可以直接看到項目調用的拓撲圖,在時間坐標上框出高延遲的點就能列出這些請求,同時還能查看此時的運行日志。Ujd28資訊網——每日最新資訊28at.com

這樣強大的功能對于一個剛工作一年的小白來說沖擊力實屬太大了一點。Ujd28資訊網——每日最新資訊28at.com

后來才了解到 pinpoint 屬于 APM 這類產品,類似的產品還有:Ujd28資訊網——每日最新資訊28at.com

  • Apache SkyWalking
  • 美團的 CAT 等

他們都是可以用于性能分析和鏈路追蹤的產品,到后來公司的運維層面也接入過 Zabbix、open-falcon 之類的產品:Ujd28資訊網——每日最新資訊28at.com

圖片圖片Ujd28資訊網——每日最新資訊28at.com

17之后全面切換到 spring boot 時,也用過社區提供的 spring-boot-admin 項目:Ujd28資訊網——每日最新資訊28at.com

圖片圖片Ujd28資訊網——每日最新資訊28at.com

這就是一個簡單的可以監控 spring boot 應用的產品,用于展示 JVM 指標,或者自己也可以定義一些健康指標。Ujd28資訊網——每日最新資訊28at.com

再之后進入云原生體系后可觀測性的技術棧稍有變化。Ujd28資訊網——每日最新資訊28at.com

圖片圖片Ujd28資訊網——每日最新資訊28at.com

日志使用 Sidecar 代理的方式通過 Agent 將數據寫入 ElasticSearch 中。 具體日志采集方式可以參考之前的文章:Ujd28資訊網——每日最新資訊28at.com

  • 在 kubernetes 環境下如何采集日志

而鏈路追蹤則是使用的 skywalking,在 trace 這個領域 skywalking 還是非常受大家喜愛的。Ujd28資訊網——每日最新資訊28at.com

不過最近也從 skywalking 切換到了我們本文所講到的 OpenTelemetry,具體可以看之前的文章:Ujd28資訊網——每日最新資訊28at.com

  • 實戰:如何優雅的從 Skywalking 切換到 OpenTelemetry

指標采集使用的是自然也是 Prometheus 的那一套技術棧,只是 Prometheus 換為了與它完全兼容的 VictoriaMetric 目前是為了更省資源。Ujd28資訊網——每日最新資訊28at.com

客戶端使用則是直接使用 Prometheus 的庫進行指標暴露:Ujd28資訊網——每日最新資訊28at.com

<dependency>    <groupId>io.prometheus</groupId>    <artifactId>prometheus-metrics-core</artifactId>    <version>1.0.0</version></dependency><dependency>    <groupId>io.prometheus</groupId>    <artifactId>prometheus-metrics-instrumentation-jvm</artifactId>    <version>1.0.0</version></dependency><dependency>    <groupId>io.prometheus</groupId>    <artifactId>prometheus-metrics-exporter-httpserver</artifactId>    <version>1.0.0</version></dependency>

最終通過配置抓取策略,由 VictoriaMetrics 的 scrape 程序來抓取指標最終寫入到它自己的存儲中:Ujd28資訊網——每日最新資訊28at.com

apiVersion: operator.victoriametrics.com/v1beta1  kind: VMPodScrape  metadata:    name: kubernetes-pod-scrape    namespace: monitoring  spec:    podMetricsEndpoints:      - scheme: http        scrape_interval: "30s"        path: /metrics        relabelConfigs:          - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]            separator: ;            regex: "true"            replacement: $1            action: keep          # 端口相同          - action: keep_if_equal            source_labels: [ __meta_kubernetes_pod_annotation_prometheus_io_port, __meta_kubernetes_pod_container_port_number ]          # 過濾INIT容器          - action: drop            source_labels: [ __meta_kubernetes_pod_container_init ]            regex: "true"          - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]            separator: ;            regex: (.+)            target_label: __metrics_path__            replacement: $1            action: replace          - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]            separator: ;            regex: ([^:]+)(?::/d+)?;(/d+)            target_label: __address__            replacement: $1:$2            action: replace          - separator: ;            regex: __meta_kubernetes_pod_label_(.+)            replacement: $1            action: labelmap          - source_labels: [__meta_kubernetes_namespace]            separator: ;            regex: (.*)            target_label: kubernetes_namespace            replacement: $1            action: replace          - source_labels: [__meta_kubernetes_pod_name]            separator: ;            regex: (.*)            target_label: kubernetes_pod_name            replacement: $1            action: replace        vm_scrape_params:          stream_parse: true    namespaceSelector:      any: true

以上是 VM 提供的 CRDUjd28資訊網——每日最新資訊28at.com

OpenTelemetry 誕生

到此鋪墊完成,不知道有沒有發現在可觀測性中關鍵的三個部分:日志、指標、trace 都是使用不同的開源產品,從而會導致技術棧較多,維護起來自然也是比較麻煩的。Ujd28資訊網——每日最新資訊28at.com

這么一個軟件領域的核心能力自然需要提供一個完整方案的,將以上的不同技術棧都整合在一起,更加的方便開發者使用。Ujd28資訊網——每日最新資訊28at.com

在這之前也有兩個社區想要做類似的事情:Ujd28資訊網——每日最新資訊28at.com

  • OpenTracing
  • OpenCensus

不過他們并沒有統一整個可觀測領域,直到 2019 年 CNCF 社區宣布成立 OpenTelemetry,并且將上述兩個社區進行合并共同開發 OpenTelemetry。Ujd28資訊網——每日最新資訊28at.com

背靠 CNCF 云原生社區加上許多知名廠商的支持(Google、Amazon、Redhat 等),現在已經正式成為 CNCF 的頂級項目了。Ujd28資訊網——每日最新資訊28at.com

OpenTelemetry 架構介紹

圖片圖片Ujd28資訊網——每日最新資訊28at.com

但我們打開 OpenTelemetry 社區的 GitHub 首頁時,會看到有許多項目;第一反應應該是比較蒙的,下面我會著重介紹一些比較重要的項目。Ujd28資訊網——每日最新資訊28at.com

在開始之前還是先簡單介紹下 OpenTelemetry 的一些基礎組件和概念:Ujd28資訊網——每日最新資訊28at.com

圖片圖片Ujd28資訊網——每日最新資訊28at.com

整個 OpenTelemetry 系統其實可以簡單分為三個部分:Ujd28資訊網——每日最新資訊28at.com

  • 客戶端
  • OTel collector
  • 數據存儲

第一個客戶端很好理解,也就是我們的業務應用;如果是 Java 應用只需要掛載一個 agent 就可以自動采集系統的指標、鏈路信息、日志等上傳到 Collector 中。Ujd28資訊網——每日最新資訊28at.com

也就是上圖的左邊部分。Ujd28資訊網——每日最新資訊28at.com

之后就是非常關鍵的組件 collector,它可以通過 OTLP 協議接收剛才提到的客戶端上傳的數據,然后再內部進行處理,最終輸出到后續的存儲系統中。Ujd28資訊網——每日最新資訊28at.com

Collector

 collector 的架構圖 collector 的架構圖Ujd28資訊網——每日最新資訊28at.com

由于 OpenTelemetry 設計之初就是要做到廠商無關,所以它就得做出更高層級的設計。Ujd28資訊網——每日最新資訊28at.com

關鍵點就是這里的 Receiver 和 Exporter 都是模塊化的設計,第三方開發者可以基于它的標準開發不同組件從而兼容不同的產品。Ujd28資訊網——每日最新資訊28at.com

Receiver:用于接收客戶端上報的數據,不止是自己 agent 上報的數據,也可能會來自不同的廠商,比如 kubernetes、Kafka 等。Ujd28資訊網——每日最新資訊28at.com

Exporter:同理,可以將 receiver 收到的數據進行處理之后輸出到不同的組件中;比如 Kafka/Pulsar/Promethus/Jaeger 等。Ujd28資訊網——每日最新資訊28at.com

比如我們可以使用 Nginx Receiver接收來著 Nginx 上報的數據。Ujd28資訊網——每日最新資訊28at.com

使用 MySQL Receiver接收來自 MySQL 的數據。Ujd28資訊網——每日最新資訊28at.com

當然通常我們使用最多的還是 OTLP Receiver,這是官方的 OTLP 協議的接收器,可以接受官方的一些指標,比如我們只使用了 Java Agent 進行數據上報時。Ujd28資訊網——每日最新資訊28at.com

圖片圖片Ujd28資訊網——每日最新資訊28at.com

https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiverUjd28資訊網——每日最新資訊28at.com

在這里是可以看到目前支持的所有第三方的 Receiver。Ujd28資訊網——每日最新資訊28at.com

圖片圖片Ujd28資訊網——每日最新資訊28at.com

OpenTelemetry 所支持的 Exporter 也很多,比如一些常見的存儲:Ujd28資訊網——每日最新資訊28at.com

  • clickhouse exporter
  • elasticsearch exporter
  • pulsar exporter
  • prometheus exporter
  • otlp http exporter

Exporter 的使用場景很多:如果是指標相關的數據可以直接寫入 Prometheus,如果是日志數據也可以直接寫入 ElasticSearch。Ujd28資訊網——每日最新資訊28at.com

如果還有其他的特殊需求(刪減屬性等)則可以寫入消息隊列,自行處理完之后再發往 collector 進行后續的處理。Ujd28資訊網——每日最新資訊28at.com

可能你已經發現了,由于 collector 非常的靈活,所以我們可以像搭積木一樣組裝我們的 receiver 和 exporter,它會以我們配置的流水線的方式進行調用,這樣我們就可以實現任意可定制的處理邏輯。Ujd28資訊網——每日最新資訊28at.com

而這些流水線的組裝對于客戶端來說都是透明的,也就是說 collector 的更改完全不會影響到業務;業務只需要按照 OTLP 的格式上報數據即可。Ujd28資訊網——每日最新資訊28at.com

在之前的從 Skywalking 切換到 OpenTelemetry 的文章中有人問為什么要切換到 OpenTelemetry?Ujd28資訊網——每日最新資訊28at.com

從這里也能看得出來,OpenTelemetry 的靈活度非常高,借助于 Exporter 可以任意的更換后端存儲,或者增加/刪減一些不需要的指標數據等。Ujd28資訊網——每日最新資訊28at.com

當然我們也可以統一的在這里進行搜索,可以列出所有的第三方集成的組件: https://opentelemetry.io/ecosystem/registry/。Ujd28資訊網——每日最新資訊28at.com

圖片圖片Ujd28資訊網——每日最新資訊28at.com

OpenTelemetry 項目介紹

opentelemetry-java

介紹完基本的概念后,我們可以看看  OTel 社區的一些主要開源項目。Ujd28資訊網——每日最新資訊28at.com

圖片圖片Ujd28資訊網——每日最新資訊28at.com

這里我們還是以剛才的那個架構圖從作往右講起,也就是主要分為客戶端和 collector 端。Ujd28資訊網——每日最新資訊28at.com

圖片圖片Ujd28資訊網——每日最新資訊28at.com

目前官方支持的客戶端語言已經非常齊全了,大部分的版本都已經是 Stable 穩定版,意味著可以進入生產環境。Ujd28資訊網——每日最新資訊28at.com

這里我們以 Java 客戶端為例:Ujd28資訊網——每日最新資訊28at.com

圖片圖片Ujd28資訊網——每日最新資訊28at.com

其中我們重點關注下 opentelemetry-java 和 opentelemetry-java-instrumentation 這兩個項目。Ujd28資訊網——每日最新資訊28at.com

我們用的最多的會是 opentelemetry-java-instrumentation,它會給我們提供一個 java agent 的 JAR 包:Ujd28資訊網——每日最新資訊28at.com

java -javaagent:path/to/opentelemetry-javaagent.jar /     -jar myapp.jar

我們只需要在 Java 應用中加上該  agent 就可以實現日志、指標、trace 的自動上報。Ujd28資訊網——每日最新資訊28at.com

而且它還實現了不同框架、庫的指標采集與 trace。Ujd28資訊網——每日最新資訊28at.com

在這里可以查到支持的庫與框架列表:Ujd28資訊網——每日最新資訊28at.com

圖片圖片Ujd28資訊網——每日最新資訊28at.com

https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/supported-libraries.md#libraries--frameworksUjd28資訊網——每日最新資訊28at.com

總之幾乎就是你能想到和不能想到的都支持了。Ujd28資訊網——每日最新資訊28at.com

而 opentelemetry-java 我們直接使用的幾率會小一些,opentelemetry-java-instrumentation 本身也是基于它創建的,可以理解為是 Java 版本的核心基礎庫,一些社區支持的組件就可以移動到 instrumentation 這個庫中。Ujd28資訊網——每日最新資訊28at.com

比如我在上篇文章:從一個 JDK21+OpenTelemetry 不兼容的問題講起中涉及到的 HostResourceProvider 資源加載就是從 opentelemetry-java 中移動到了 opentelemetry-java-instrumentation。Ujd28資訊網——每日最新資訊28at.com

具體可以參考:https://github.com/open-telemetry/opentelemetry-java/issues/4701Ujd28資訊網——每日最新資訊28at.com

collector

之后就是 collector 的組件了,它同樣的也有兩個庫:OpenTelemetry Collector 和 OpenTelemetry Collector ContribUjd28資訊網——每日最新資訊28at.com

其實通過他們的名字也可以看得出來,他們的作用與剛才的 Java 庫類似:Ujd28資訊網——每日最新資訊28at.com

  • opentelemetry-collector:由官方社區維護,提供了一些核心能力;比如只包含了最基本的 otlp 的 receiver 和 exporter。
  • opentelemetry-collector-contrib:包含了官方的 collector,同時更多的維護了社區提供的各種 receiver 和 exporter;就如上文提到的,一些社區組件(pulsar、MySQL、Kafka)等都維護在這個倉庫。

而我們生產使用時通常也是直接使用 opentelemetry-collector-contrib,畢竟它所支持的社區組件更多。Ujd28資訊網——每日最新資訊28at.com

總結

因為 OpenTelemetry 想要解決的是整個可觀測領域的所有需求,所以倉庫非常多,社區也很開放,感興趣的朋友可以直接參與貢獻,這么多 repo 總有一個適合你的。Ujd28資訊網——每日最新資訊28at.com

后續會繼續講解如何安裝以及配置我們的 OpenTelemetry。Ujd28資訊網——每日最新資訊28at.com

參考鏈接:Ujd28資訊網——每日最新資訊28at.com

  • https://github.com/pinpoint-apm/pinpoint
  • https://github.com/codecentric/spring-boot-admin
  • https://github.com/open-telemetry/opentelemetry-java
  • https://github.com/open-telemetry/opentelemetry-java-instrumentation
  • https://github.com/open-telemetry/opentelemetry-java/issues/4701

本文鏈接:http://www.tebozhan.com/showinfo-26-89552-0.htmlOpenTelemetry 實踐指南:歷史、架構與基本概念

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 在 ASP.NET Core 中優雅地處理多接口實現

下一篇: 基于單元的架構綜合指南

標簽:
  • 熱門焦點
  • 小米官宣:2023年上半年出貨量中國第一!

    今日早間,小米電視官方微博帶來消息,稱2023年小米電視上半年出貨量達到了中國第一,同時還表示小米電視的巨屏風暴即將開始。“公布一個好消息2023年#小米電視上半年出貨量中國
  • K8S | Service服務發現

    一、背景在微服務架構中,這里以開發環境「Dev」為基礎來描述,在K8S集群中通常會開放:路由網關、注冊中心、配置中心等相關服務,可以被集群外部訪問;圖片對于測試「Tes」環境或者
  • 分享六款相見恨晚的PPT模版網站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS網站旨在為全球Office用戶提供豐富的高品質原創PPT模板、實用文檔、數據圖表及個性化定制服務。優點:OfficePLUS是微軟官方網站,囊括PPT模板、Word模
  • 為什么你不應該使用Div作為可點擊元素

    按鈕是為任何網絡應用程序提供交互性的最常見方式。但我們經常傾向于使用其他HTML元素,如 div span 等作為 clickable 元素。但通過這樣做,我們錯過了許多內置瀏覽器的功能。
  • 網紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業評論6月26日高調宣布入市,網絡名嘴大v胡錫進居然進軍了股市。在一次財經媒體峰會上,幾個財經圈媒體大佬就&ldquo;胡錫進炒股是否知道認真報道&rdquo;展開討論。有
  • 東方甄選單飛:有些鳥注定是關不住的

    作者:彭寬鴻來源:華爾街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;東方甄選創始人俞敏洪帶隊的&ldquo;7天甘肅行&rdquo;直播活動已在近日順利收官。成立后一
  • 華為Mate60標準版細節曝光:經典星環相機模組回歸

    這段時間以來,關于華為新旗艦的爆料日漸密集。據此前多方爆料,今年華為將開始恢復一年雙旗艦戰略,除上半年推出的P60系列外,往年下半年的Mate系列也將
  • 國行版三星Galaxy Z Fold5/Z Flip5發布 售價7499元起

    2023年8月3日,三星電子舉行Galaxy新品中國發布會,正式在國內推出了新一代折疊屏智能手機三星Galaxy Z Fold5與Galaxy Z Flip5,以及三星Galaxy Tab S9
  • 榮耀Magic4 至臻版 首創智慧隱私通話 強勁影音系統

    2022年第一季度臨近尾聲,在該季度內,許多品牌陸續發布自己的最新產品,讓大家從全新的角度來了解當今的手機技術。手機是電子設備中,更新迭代十分迅速的一款產品,基
Top