精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從 Prometheus 到 OpenTelemetry:指標監控的演進與實踐

開發 項目管理
當然也不止是云原生的項目才需要 Metrics 指標監控,我們任何一個業務都是需要的,不然我們的服務運行對開發運維來說都是一個黑盒,無法知道此時系統的運行情況,因此才需要我們的業務系統將一些關鍵運行指標暴露出來。

背景

關于 metrics 我最早接觸相關概念的就是 prometheus,它是第二個加入 CNCF(云原生)社區的項目(第一個是 kubernetes),可見在云原生領域 Metrics 指標監控從誕生之初就是一個非常重要的組件。

現實也確實如此,如今只要使用到了 kubernetes 相關的項目,對其監控就是必不可少的。

當然也不止是云原生的項目才需要 Metrics 指標監控,我們任何一個業務都是需要的,不然我們的服務運行對開發運維來說都是一個黑盒,無法知道此時系統的運行情況,因此才需要我們的業務系統將一些關鍵運行指標暴露出來。

圖片圖片

業務數據:比如訂單的增長率、銷售金額等業務數據;同時還有應用自身的資源占用情況:

  • QPS
  • Latency
  • 內存
  • CPU 等信息。

在使用 OpenTelemetry 之前,因為 prometheus 是這部分的絕對標準,所以我們通常都會使用 prometheus 的包來暴露這些指標:

<!-- The client -->
<dependency>
  <groupId>io.prometheus</groupId>
  <artifactId>simpleclient</artifactId>
  <version>0.16.0</version>
</dependency>
<!-- Hotspot JVM metrics-->
<dependency>
  <groupId>io.prometheus</groupId>
  <artifactId>simpleclient_hotspot</artifactId>
  <version>0.16.0</version>
</dependency>

暴露一個自定義的指標也很簡單:

import io.prometheus.client.Counter;
class YourClass {
  static final Counter requests = Counter.build()
     .name("requests_total").help("Total requests.").register();

  void processRequest() {
    requests.inc();
    // Your code here.
  }
}

這是暴露一個單調遞增的指標,prometheus 還提供了其他幾種指標類型:

  • Counter
  • Gauge
  • Histogram

之后我們只需要在 prometheus 中配置一些抓取規則即可:

scrape_configs:
  - job_name: 'springboot'
    scrape_interval: 10s
    static_configs:
      - targets: ['localhost:8080'] # Spring Boot ip+port

當然如果是運行在 kubernetes 環境,prometheus 也可以基于服務發現配置一些規則,自動抓取我們的 Pod 的數據,由于不是本文的重點就不過多介紹。

基本組件

在 OpenTelemetry 中自然也提供了 Metrics 這個組件,同時它也是完全兼容 Prometheus,所以我們理解和使用起來并不復雜。

MeterProvider

不同于 prometheus 客戶端中直接提供了 Counter 就可以創建指標了,在 OpenTelemetry 中會提供一個 MeterProvider 的接口,使用這個接口可以獲取 Meter,再使用 Meter 才可以創建 Counter、Gauge、Histogram 等數據。

下面來看看具體如何使用,這里我以 Pulsar 源碼的代碼進行演示:

public InstrumentProvider(OpenTelemetry otel) {  
    if (otel == null) {  
        // By default, metrics are disabled, unless the OTel java agent is configured.  
        // This allows to enable metrics without any code change.        otel = GlobalOpenTelemetry.get();  
    }    this.meter = otel.getMeterProvider()  
            .meterBuilder("org.apache.pulsar.client")  
            .setInstrumentationVersion(PulsarVersion.getVersion())  
            .build();  
}

LongCounterBuilder builder = meter.counterBuilder(name)  
        .setDescription(description)  
        .setUnit(unit.toString());

Meter Exporter

Meter Exporter 則是一個 OpenTelemetry 獨有的概念,與我們之前講到的一樣:OpenTelemetry 作為廠商無關的平臺,允許我們將數據寫入到任何兼容的產品里。

所以我們在使用 Metrics 時需要指定一個 exporter:

Exporter 類型

作用

備注

參數

OTLP Exporter

通過 OpenTelemetry Protocol(OTLP) 發送指標數據到 collect。

默認生產環境中推薦使用,需要將數據發送到支持 OTLP 的后端,如 OpenTelemetry Collector。

-Dotel.metrics.exporter=otlp (default)

Console Exporter

將指標數據打印到控制臺的導出器。

開發和調試,快速查看指標數據。

-Dotel.metrics.exporter=console

Prometheus Exporter

將指標數據以 Prometheus 抓取的格式暴露給 Prometheus 服務。

與 Prometheus 集成,適用于需要 Prometheus 監控的場景,這個可以無縫和以往使用 prometheus 的場景兼容

-Dotel.metrics.exporter=prometheus

Metric Instruments

與 prometheus 類似,OpenTelemetry 也提供了以下幾種指標類型:

  • Counter:單調遞增計數器,比如可以用來記錄訂單數、總的請求數。
  • UpDownCounter:與 Counter 類似,只不過它可以遞減。
  • Gauge:用于記錄隨時在變化的值,比如內存使用量、CPU 使用量等。
  • Histogram:通常用于記錄請求延遲、響應時間等。

同時每個指標還有以下幾個字段:

  • Name:名稱,必填。
  • Kind:類型,必填。
  • Unit:單位,可選。
  • Description:描述,可選。
messageInCounter = meter  
        .counterBuilder(MESSAGE_IN_COUNTER)  
        .setUnit("{message}")  
        .setDescription("The total number of messages received for this topic.")  
        .buildObserver();

還是以 Pulsar 的為例,messageInCounter 是一個記錄總的消息接收數量的 Counter 類型。

subscriptionCounter = meter  
        .upDownCounterBuilder(SUBSCRIPTION_COUNTER)  
        .setUnit("{subscription}")  
        .setDescription("The number of Pulsar subscriptions of the topic served by this broker.")  
        .buildObserver();

這是記錄一個訂閱者數量的指標,類型是 UpDownCounter,也就是可以增加減少的指標。

private static final List<Double> latencyHistogramBuckets =  
        Lists.newArrayList(.0005, .001, .0025, .005, .01, .025, .05, .1, .25, .5, 1.0, 2.5, 5.0, 10.0, 30.0, 60.0);


DoubleHistogramBuilder builder = meter.histogramBuilder("pulsar.client.producer.message.send.duration")  
        .setDescription("Publish latency experienced by the application, includes client batching time")  
        .setUnit(Unit.Seconds.toString())  
        .setExplicitBucketBoundariesAdvice(latencyHistogramBuckets);

這是一個記錄 Pulsar producer 發送延遲的指標,類型是 Histogram。

backlogQuotaAge = meter  
        .gaugeBuilder(BACKLOG_QUOTA_AGE)  
        .ofLongs()  
        .setUnit("s")  
        .setDescription("The age of the oldest unacknowledged message (backlog).")  
        .buildObserver();

這是一個記錄最大 unack 也就是 backlog 時間的指標,類型是 Gauge。

案例

在之前的文章:實戰:如何編寫一個 OpenTelemetry Extensions中講過如何開發一個 OpenTelemetry 的 extension,其實當時我就是開發了一個用于在 Pulsar 客戶端中暴露指標的一個插件。

不過目前 Pulsar 社區已經集成了該功能。

其中的核心代碼與上面講到的類似:

public static void registerObservers() {    
    Meter meter = MetricsRegistration.getMeter();    
    
    meter.gaugeBuilder("pulsar_producer_num_msg_send")    
            .setDescription("The number of messages published in the last interval")    
            .ofLongs()    
            .buildWithCallback(    
                    r -> recordProducerMetrics(r, ProducerStats::getNumMsgsSent));

private static void recordProducerMetrics(ObservableLongMeasurement observableLongMeasurement, Function<ProducerStats, Long> getter) {    
    for (Producer producer : CollectionHelper.PRODUCER_COLLECTION.list()) {    
        ProducerStats stats = producer.getStats();    
        String topic = producer.getTopic();    
        if (topic.endsWith(RetryMessageUtil.RETRY_GROUP_TOPIC_SUFFIX)) {    
            continue;    
        }        observableLongMeasurement.record(getter.apply(stats),    
                Attributes.of(PRODUCER_NAME, producer.getProducerName(), TOPIC, topic));    
    }}

只是這里使用了 buildWithCallback 回調函數,OpenTelemetry 會每隔 30s 調用一次這個函數,通常適用于 Gauge 類型的數據。

java -javaagent:opentelemetry-javaagent.jar \  
     -Dotel.javaagent.extensinotallow=ext.jar  \
     -Dotel.metrics.exporter=prometheus \
     -Dotel.exporter.prometheus.port=18180 \
     -jar myapp.jar

配合上 Prometheus 的兩個啟動參數就可以在本地 18180 中獲取到指標數據:

curl http://127.0.0.1:18180/metrics

當然也可以直接發往 OpenTelemetry-Collector 中,再由它發往 prometheus,只是這樣需要額外在 collector 中配置一下:

exporters:
  debug: {}
  otlphttp:
    metrics_endpoint: http://promethus:8480/insert/0/opentelemetry/api/v1/push
service:
  pipelines:
    metrics:
      exporters:
      - otlphttp
      processors:
      - k8sattributes
      - batch
      receivers:
      - otlp

圖片圖片

這樣我們就可以在 Grafana 中通過 prometheus 查詢到數據了。

有一點需要注意,如果我們自定義的指標最好是參考官方的語義和命名規范來定義這些指標名稱。

圖片圖片

比如 OpenTelemetry 的規范中名稱是用 . 來進行分隔的。

切換為 OpenTelemetry 之后自然就不需要依賴 prometheus 的包,取而代之的是 OTel 的包:

compileOnly 'io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.34.1'  
compileOnly 'io.opentelemetry.instrumentation:opentelemetry-instrumentation-api:1.32.0'

總結

相對來說 Metrics 的使用比 Trace 簡單的多,同時 Metrics 其實也可以和 Trace 進行關聯,也就是 Exemplars,限于篇幅就不在本文展開了,感興趣的可以自行查閱。

參考鏈接:

責任編輯:武曉燕 來源: crossoverJie
相關推薦

2024-08-28 08:09:13

contextmetrics類型

2024-06-07 07:41:03

2022-09-06 09:29:43

監控系統

2022-07-08 08:00:31

Prometheus監控

2023-08-08 09:00:00

開源Prometheus

2021-10-14 08:07:33

Go 應用Prometheus監控

2022-05-12 08:01:26

vmagentprometheus

2022-06-02 08:37:10

架構DDDMVC

2022-03-01 16:26:09

鏈路監控日志監控分布式系統

2020-05-18 12:04:17

PrometheusMySQL監控

2024-11-01 12:39:04

2025-11-06 01:45:00

2025-07-03 03:20:00

2023-11-06 01:39:02

Go語言開發

2025-01-03 08:08:56

2015-04-07 11:05:15

VMwareOpenStack

2024-09-11 08:10:46

2021-03-26 20:37:14

Prometheus監控指標

2025-06-12 02:00:00

2024-02-19 08:12:15

DIKW 模型指標系統數據倉庫
點贊
收藏

51CTO技術棧公眾號

中文字幕12页| 亚洲欧洲在线一区| 日本va欧美va国产激情| 国产麻豆精品久久| 777午夜精品免费视频| 老司机激情视频| 日漫免费在线观看网站| 男女激情视频一区| 欧美精品福利视频| 性猛交ⅹxxx富婆video| 日本亚州欧洲精品不卡| 欧美日韩精品在线视频| 一区二区三区三区在线| 欧美 日韩 国产 成人 在线 91| 久久精品首页| 久久69精品久久久久久久电影好 | 91久久久久久久久久久久| 午夜国产精品视频| 亚洲视频免费一区| 中文字幕1区2区| 欧美xxxx性| 日韩欧美中文字幕在线观看| 91看片淫黄大片91| 国产美女性感在线观看懂色av| 国产久卡久卡久卡久卡视频精品| 日韩免费黄色av| 四虎永久在线精品| 午夜影院欧美| 在线观看国产欧美| 性欧美18—19sex性高清| 美女久久久久久| 欧美日韩国产丝袜另类| 久久久久久久香蕉| 国产写真视频在线观看| 国产日韩欧美在线一区| 九九九九九精品| 精品人妻无码一区二区色欲产成人| 日韩精品电影一区亚洲| 97国产一区二区精品久久呦| 视频这里只有精品| 围产精品久久久久久久| 中文字幕精品网| 波多野结衣av在线观看| 日本一道高清一区二区三区| 亚洲国产高清自拍| 2018国产精品| 99re8这里有精品热视频8在线| 欧美精品tushy高清| 搡女人真爽免费午夜网站| 99热99re6国产在线播放| 夜夜嗨av一区二区三区中文字幕 | www.av一区视频| 国产理论视频在线观看| 麻豆成人91精品二区三区| 欧美在线亚洲在线| 天天综合网久久综合网| 99国产精品| 2024亚洲男人天堂| 天堂网av手机版| 国产亚洲毛片| 4k岛国日韩精品**专区| 性无码专区无码| 久久久噜噜噜| 国产精品91免费在线| 亚洲大尺度在线观看| 日韩国产高清在线| 国产精品第七十二页| 成人黄色三级视频| 麻豆成人久久精品二区三区红| 国产精品永久在线| 91麻豆视频在线观看| 精品一区二区在线免费观看| 成人免费看片视频| 国产哺乳奶水91在线播放| 国产美女久久久久| 国产精品久久久对白| 日本美女一级片| 久久综合资源网| 日韩电影在线播放| 天天综合视频在线观看| 亚洲精品视频在线看| 欧美高清中文字幕| 在线男人天堂| 欧美日韩一区二区三区在线| 不用播放器的免费av| 日本一区二区三区电影免费观看| 精品少妇一区二区三区日产乱码| 一女三黑人理论片在线| 国产91久久精品一区二区| 色偷偷av一区二区三区| 日日骚一区二区三区| 夜夜夜久久久| 成人黄色av免费在线观看| 成人爽a毛片一区二区| 91麻豆国产在线观看| 日韩一二三区不卡在线视频| 中文在线手机av| 欧美日韩在线观看视频| 孩娇小videos精品| 国产成人澳门| 亚洲精品天天看| 成人免费毛片xxx| 国产亚洲午夜| 91久久极品少妇xxxxⅹ软件| 精品无人乱码| 一区二区三区欧美日韩| 日韩 欧美 高清| 视频一区中文字幕精品| 亚洲欧美日韩天堂| 中文字幕在线观看成人| 日韩精品乱码免费| 国产精品一区二区三区在线观 | 精品国产九九九| 久久在线观看免费| 人妻互换免费中文字幕| 97精品国产综合久久久动漫日韩| 精品久久久久久久久久久久包黑料| 性高潮久久久久久久| 国产精品啊啊啊| 国产美女久久精品| 青春有你2免费观看完整版在线播放高清 | 91激情五月电影| www.男人天堂| 综合国产在线| 国产日本欧美一区二区三区在线| 日韩a在线看| 香港成人在线视频| 丰满少妇中文字幕| 日韩欧美精品综合| 国产精品96久久久久久又黄又硬| 色欲av永久无码精品无码蜜桃| 自拍偷在线精品自拍偷无码专区| 欧美日韩大尺度| 丝袜美腿综合| 午夜精品久久久久久久99热 | 亚洲美女在线看| 国产亚洲第一页| 国产一区二区伦理| 在线观看成人av| 成人免费毛片嘿嘿连载视频…| 日韩精品久久久久久久玫瑰园| 精品在线视频免费观看| 国产精品一级黄| 国产av第一区| 懂色av色香蕉一区二区蜜桃| 在线观看久久av| 性色av一区二区三区四区| 久久精品一区蜜桃臀影院| 男人天堂网视频| 婷婷亚洲精品| 亲子乱一区二区三区电影| 偷拍精品一区二区三区| 亚洲福利视频一区二区| 亚洲成年人av| 亚洲激情欧美| 久久国产欧美精品| 男人久久天堂| 亚洲女人被黑人巨大进入| 日日夜夜狠狠操| 国产午夜亚洲精品不卡| www.色就是色| 久久一区二区三区电影| 国产精品直播网红| 在线a免费看| 5858s免费视频成人| 丝袜 亚洲 另类 欧美 重口| 国产成人av资源| 欧美一级视频在线播放| 美女主播精品视频一二三四| 欧美一区二区.| 麻豆app在线观看| 欧美日韩免费高清一区色橹橹| 二区三区四区视频| 国产精品原创巨作av| 精品少妇人欧美激情在线观看| 久久亚洲道色| 国产精品69av| 超碰在线最新| 亚洲国产成人91精品| 免费的毛片视频| 一区视频在线播放| a级片在线观看视频| 久久高清国产| 一区二区免费电影| 中文字幕亚洲在线观看| 青青青国产精品一区二区| www.中文字幕久久久| 日韩一级黄色大片| 97久久久久久久| 中文字幕在线观看一区二区| 欧美xxxx日本和非洲| 久久久一二三| 在线观看18视频网站| 日韩精品社区| 成人精品网站在线观看| 爱搞国产精品| 日韩在线激情视频| 人妻视频一区二区三区| 国产精品一区二区三区四区| 欧美午夜精品久久久久久孕妇 | 亚洲人亚洲人色久| 国产精品永久在线| 成入视频在线观看| 日韩在线视频观看| 香蕉视频免费看| 这里只有精品99re| www.com亚洲| 亚洲午夜国产一区99re久久| 欧美成人另类视频| 成人小视频在线观看| 中文字幕第88页| 日韩一级欧洲| 国产成人亚洲综合无码| 精品中文一区| 成人自拍视频网站| 亚洲成人av观看| 韩剧1988免费观看全集| а√天堂在线官网| 亚洲天堂av在线免费| 国产小视频一区| 91精品国产欧美一区二区成人| av资源免费观看| 亚洲一区免费在线观看| 日本黄色免费片| 国产午夜一区二区三区| 精品一区二区三区四区五区六区| 久久国产欧美日韩精品| 女人扒开屁股爽桶30分钟| 一区在线免费观看| 久久国产精品免费观看| 色乱码一区二区三区网站| 欧美日韩国产精品一区二区| 成人av资源网址| 亚洲xxxx视频| 久久69av| 欧美日韩第一区日日骚| 国产原创popny丨九色| 一区二区三区四区在线观看国产日韩 | 九九热精品视频国产| www视频在线观看免费| 夜夜嗨av一区二区三区免费区| 欧美一区二区少妇| 亚洲精品国精品久久99热| 欧美一级淫片aaaaaa| 精品少妇一区二区三区免费观看| 亚洲AV无码乱码国产精品牛牛| 在线电影欧美成精品| 国产又粗又猛又色又| 欧美女孩性生活视频| 亚洲中文字幕在线观看| 欧美日韩久久久| 91激情在线观看| 3atv一区二区三区| 国产99久一区二区三区a片| 制服丝袜中文字幕一区| 国产美女裸体无遮挡免费视频| 9191国产精品| 精品人妻无码一区二区三区蜜桃一| 日韩一区二区在线免费观看| 精品人妻无码一区二区色欲产成人| 欧美电影免费观看完整版| 成人激情四射网| 欧美精品一区男女天堂| 色呦呦中文字幕| 亚洲女同性videos| av电影在线观看一区二区三区| 中文字幕日韩精品在线| 麻豆传媒视频在线| 欧美日本国产在线| 国产在线看片免费视频在线观看| 日本久久久久亚洲中字幕| 韩日精品一区| 91夜夜揉人人捏人人添红杏| 亚洲日本va中文字幕| 久久久99国产精品免费| 精品久久影视| 免费看av软件| 日韩亚洲在线| 污片在线免费看| 国产毛片精品国产一区二区三区| 99久久久无码国产精品性波多| 91网址在线看| 国产第一页浮力| 无吗不卡中文字幕| 中文字幕日韩经典| 欧美不卡一区二区三区四区| 日韩一二三四| 久久精彩免费视频| 成人在线黄色电影| 国产色综合天天综合网| 澳门精品久久国产| 日本一区二区三区免费看| 亚洲欧美伊人| 最近中文字幕一区二区| 国产精品一区一区三区| aaaaa级少妇高潮大片免费看| 国产精品成人在线观看| 五月婷婷激情网| 91精品国产高清一区二区三区蜜臀 | 黄色一级片在线免费观看| 日韩欧美一区视频| 国产黄色大片网站| 亚洲欧美日韩一区二区在线 | 色天天久久综合婷婷女18| 波多野结衣综合网| 精品系列免费在线观看| 黄色a一级视频| 亚洲精品乱码久久久久| 久久影视中文字幕| 精品电影一区二区| 欧洲美女少妇精品| 97视频在线看| 一区二区网站| 国产麻豆电影在线观看| 久久一二三四| 亚洲精品国产成人av在线| 中文字幕视频一区二区三区久| 国产精品久久久久久99| 欧美电视剧在线看免费| 在线免费观看黄色网址| 欧美壮男野外gaytube| 一区二区三区视频播放| 91免费网站视频| 美腿丝袜亚洲三区| 一区二区精品免费| 精品国产乱码久久久久酒店| 亚洲春色一区二区三区| 久久久99久久精品女同性| 精品网站在线| 欧美重口乱码一区二区| 在线亚洲自拍| 在线观看av中文字幕| 亚洲一区二区在线视频| 国产jzjzjz丝袜老师水多| 日韩在线观看免费全| 国内自拍亚洲| 亚洲精品视频一二三| 日韩精品乱码av一区二区| 亚洲自拍偷拍一区二区 | 久久成人免费观看| 国产高清亚洲一区| 亚洲欧美小视频| 制服.丝袜.亚洲.另类.中文| 日韩av中文| 国产日韩精品视频| 日韩a一区二区| 视频二区在线播放| 国产精品久久久久久久久免费桃花 | 91蜜桃在线视频| 91色视频在线导航| 亚洲一区 二区 三区| 久久艹这里只有精品| 亚洲男帅同性gay1069| 99精品免费观看| 色综合久久88色综合天天看泰| 日本伊人久久| 国产传媒久久久| 99久久精品免费看国产 | 欧美aaa免费| 国产精品久久一区二区三区| 99精品欧美| 一区二区黄色片| 欧美视频中文字幕| 看黄网站在线| 国产精品免费一区二区三区在线观看| 狠色狠色综合久久| 麻豆国产精品一区| 色婷婷激情综合| 精产国品自在线www| 波多野结衣久草一区| 亚洲激情av| 天天躁夜夜躁狠狠是什么心态| 欧美亚洲国产怡红院影院| 婷婷视频在线| 国产精品日韩一区二区三区| 男女精品视频| 2017亚洲天堂| 欧美xingq一区二区| 天堂av在线网| 中文字幕人成一区| 高清不卡一区二区| 国产视频1区2区| 久久人人爽人人爽人人片亚洲| 成人爽a毛片免费啪啪红桃视频| 国产精品视频一区二区三区四区五区| 中文字幕精品一区二区精品绿巨人| av在线亚洲天堂| 欧美亚洲在线视频| 天天操夜夜操国产精品| 蜜臀av粉嫩av懂色av| 欧美私人免费视频| 日本一级理论片在线大全| 欧美精品123| 国产精品99久| 最近中文字幕在线视频| 欧美人与性动交| 日韩欧美视频在线播放| 欧美夫妇交换xxx| 欧美浪妇xxxx高跟鞋交| 第一福利在线视频|