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

React 前端應用中快速實踐 OpenTelemetry 云原生可觀測性(SigNoz/K8S)

開發 前端
SigNoz 作為后端分析與可視化工具。雖相對于 ELK Stack 還有很多不足,但它號稱是基于 OpenTelemetry 生態原生構建的下一代開源可觀測平臺,期待它后續發展。

圖片

OpenTelemetry 可用于跟蹤 React 應用程序的性能問題和錯誤。您可以跟蹤從前端 web 應用程序到下游服務的用戶請求。OpenTelemetry 是云原生計算基金會(CNCF)下的一個開源項目,旨在標準化遙測數據的生成和收集。已成為下一代可觀測平臺的事實標準。

React(也稱為 React.js 或 ReactJS )是一個免費的開源前端 JavaScript 庫,用于基于 UI 組件構建用戶界面。它是由 Meta (以前的 Facebook)和一個由個人開發者和公司組成的社區維護的。React 可以作為使用 Next.js 等框架開發單頁、移動或服務器渲染應用程序的基礎。

然而,React 只關心狀態管理和將狀態呈現給 DOM,因此創建 React 應用程序通常需要使用額外的庫進行路由,以及某些客戶端功能。

使用 opentelemetry-js 庫,你可以讓你的 React 應用生成跟蹤數據。您可以跟蹤從前端 web 應用程序到下游服務的用戶請求。

在演示如何實現 OpenTelemetry 庫之前,讓我們簡要概述一下 OpenTelmetry。

什么是 OpenTelemetry?

OpenTelemetry 是一套與第三方廠商無關的開源工具、API 和 SDK,用于檢測應用程序,以創建和管理遙測數據(日志、指標和跟蹤)。

圖片圖片

OpenTelemetry 庫的 instrument(采集程序) 應用程序代碼生成遙測數據,然后發送到可觀察性工具進行存儲和可視化

OpenTelemetry 是建立可觀測性框架的基礎。它還為您提供了選擇后端分析工具的自由。

OpenTelemetry 與 SigNoz

在本文中,我們將使用 SigNoz 作為后端分析工具。SigNoz 是一個全棧開源 APM 工具,可用于存儲和可視化 OpenTelemetry 收集的遙測數據。它是在 OpenTelemetry 上原生構建的,并適用于 OTLP 數據格式。

SigNoz 為最終用戶提供了查詢和可視化功能,并附帶了用于應用程序度量和跟蹤的開箱即用圖表。

現在,讓我們開始了解如何使用 opentelemetry-js 庫,然后在 SigNoz 中可視化收集的數據。

快速實踐實驗環境

DigitalOcean 托管集群(k8s v1.24.13)。

Helm 一鍵安裝 SigNoz

helm repo add signoz https://charts.signoz.io

helm install signoz signoz/signoz -n apm --create-namespace \
--set otelCollector.config.receivers.otlp.protocols.http.include_metadata=true \
--set otelCollector.config.receivers.otlp.protocols.http.cors.allowed_origins='https://apm-demo.react-admin.com'

注意:cors 跨域設置,我這里 React 應用域名是 https://apm-demo.react-admin.com

查看 Pod

kubectl get po -n apm

NAME                                               READY   STATUS    RESTARTS       AGE
chi-signoz-clickhouse-cluster-0-0-0                1/1     Running   0              3m51s
signoz-alertmanager-0                              1/1     Running   0              4m5s
signoz-clickhouse-operator-54b6d79f58-b47ff        2/2     Running   2 (4m2s ago)   4m5s
signoz-frontend-564b8c4868-88grm                   1/1     Running   0              4m5s
signoz-k8s-infra-otel-agent-dqh5c                  1/1     Running   0              4m6s
signoz-k8s-infra-otel-agent-jdvnh                  1/1     Running   0              4m6s
signoz-k8s-infra-otel-agent-tb8sp                  1/1     Running   0              4m6s
signoz-k8s-infra-otel-deployment-dc85b496f-n6dhm   1/1     Running   0              4m5s
signoz-otel-collector-655cff46d8-7z5wn             1/1     Running   0              4m5s
signoz-otel-collector-metrics-7775fc9857-mb8wv     1/1     Running   0              4m5s
signoz-query-service-0                             1/1     Running   0              4m5s
signoz-zookeeper-0                                 1/1     Running   0              4m5s

暴露采集器 Server

此集群 Ingress Controller 是 Traefik,配置如下:

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: ingest
  namespace: apm
spec:
  entryPoints:
    - web
  routes:
    - match: PathPrefix(`/`) && Host(`ingest.doge-data.com`)
      kind: Rule
      services:
        - name: signoz-otel-collector
          port: 4318

示例應用

測試地址:

https://apm-demo.react-admin.com

倉庫:

https://github.com/SigNoz/sample-reactjs-app.git

OpenTelemetry-JS

倉庫:

https://github.com/open-telemetry/opentelemetry-js

官方文檔:

https://opentelemetry.io/docs/instrumentation/js/

Tracing 示例核心源碼

位于示例倉庫:src/helpers/tracing/index.ts

import { context, trace, Span, SpanStatusCode } from "@opentelemetry/api";
import { WebTracerProvider } from "@opentelemetry/sdk-trace-web";
import { Resource } from "@opentelemetry/resources";
import { SimpleSpanProcessor } from "@opentelemetry/sdk-trace-base";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
import { ZoneContextManager } from "@opentelemetry/context-zone";
import { FetchInstrumentation } from "@opentelemetry/instrumentation-fetch";
import { FetchError } from "@opentelemetry/instrumentation-fetch/build/src/types";
import { registerInstrumentations } from "@opentelemetry/instrumentation";

const serviceName = "link-frontend";

const resource = new Resource({ "service.name": serviceName });
const provider = new WebTracerProvider({ resource });

const collector = new OTLPTraceExporter({
  url: "https://ingest.doge-data.com/v1/traces",
  // headers: {
  //   "signoz-access-token": "SigNoz-Cloud-Ingestion-Token-HERE"
  // }
});

provider.addSpanProcessor(new SimpleSpanProcessor(collector));
provider.register({ contextManager: new ZoneContextManager() });

const webTracerWithZone = provider.getTracer(serviceName);

declare const window: any;
var bindingSpan: Span | undefined;

window.startBindingSpan = (
  traceId: string,
  spanId: string,
  traceFlags: number
) => {
  bindingSpan = webTracerWithZone.startSpan("");
  bindingSpan.spanContext().traceId = traceId;
  bindingSpan.spanContext().spanId = spanId;
  bindingSpan.spanContext().traceFlags = traceFlags;
};

registerInstrumentations({
  instrumentations: [
    new FetchInstrumentation({
      propagateTraceHeaderCorsUrls: ["/.*/g"],
      clearTimingResources: true,
      applyCustomAttributesOnSpan: (
        span: Span,
        request: Request | RequestInit,
        result: Response | FetchError
      ) => {
        const attributes = (span as any).attributes;
        if (attributes.component === "fetch") {
          span.updateName(
            `${attributes["http.method"]} ${attributes["http.url"]}`
          );
        }
        if (result instanceof Error) {
          span.setStatus({
            code: SpanStatusCode.ERROR,
            message: result.message,
          });
          span.recordException(result.stack || result.name);
        }
      },
    }),
  ],
});

export function traceSpan<F extends (...args: any) => ReturnType<F>>(
  name: string,
  func: F
): ReturnType<F> {
  var singleSpan: Span;
  if (bindingSpan) {
    const ctx = trace.setSpan(context.active(), bindingSpan);
    singleSpan = webTracerWithZone.startSpan(name, undefined, ctx);
    bindingSpan = undefined;
  } else {
    singleSpan = webTracerWithZone.startSpan(name);
  }
  return context.with(trace.setSpan(context.active(), singleSpan), () => {
    try {
      const result = func();
      singleSpan.end();
      return result;
    } catch (error) {
      singleSpan.setStatus({ code: SpanStatusCode.ERROR });
      singleSpan.end();
      throw error;
    }
  });
}

在 React 組件中使用

位于示例倉庫:src/components/TracingButton/index.tsx

import { Button } from '@mui/material'

import { traceSpan } from 'helpers/tracing'

interface Props {
  label: string;
  id?: string;
  secondary?: boolean;
  onClick: () => void;
}

export default (props: Props) => {
  const onClick = (): void =>
    traceSpan(`'${props.label}' button clicked`, props.onClick);

  return (
    <div>
      <Button
        id={props.id}
        variant={"contained"}
        color={props.secondary ? "secondary" : "primary"}
        notallow={onClick}
      >
        {props.label}
      </Button>
    </div>
  );
};

測試 React 應用上報

轉到 https://apm-demo.react-admin.com , 單擊 FETCH LINKS

圖片圖片

SigNoz 后臺面板查看,聚合指標等

圖片圖片

圖片圖片

圖片圖片

總結

本篇文章側重于快速實踐,OpenTelemetry 本身很復雜,涉及很多基礎概念,大家自行翻閱文檔。

https://opentelemetry.io/docs/

SigNoz 作為后端分析與可視化工具。雖相對于 ELK Stack 還有很多不足,但它號稱是基于 OpenTelemetry 生態原生構建的下一代開源可觀測平臺,期待它后續發展。

有興趣的朋友,也可以二次開發 SigNoz,增加自身項目需求。

責任編輯:武曉燕 來源: 黑客下午茶
相關推薦

2023-10-26 08:47:30

云原生數據采集

2021-05-04 18:28:23

Apache KafkSigNoz開源

2023-09-06 07:51:19

KubernetesOperator

2023-09-20 16:11:32

云原生分布式系統

2021-04-29 08:43:17

k8s可觀測性Metrics

2024-05-28 09:37:48

2023-02-08 17:55:45

SigNoz開源工具

2022-05-24 13:47:11

云原生數據分辨率

2022-03-24 17:56:51

數據平臺觀測

2023-08-07 08:27:43

混合云K8S容器

2022-06-30 10:22:26

K8s可觀測Prometheus

2023-11-27 10:18:05

工業4.0物聯網

2023-08-07 08:48:13

2023-10-16 23:43:52

云原生可觀測性

2025-01-03 08:08:56

2021-06-04 06:01:49

Yarn workspTypeScript云原生

2023-09-24 23:35:46

云原生Kubernetes

2021-11-19 09:40:50

數據技術實踐

2021-05-24 15:48:38

高德打車系統可觀測性
點贊
收藏

51CTO技術棧公眾號

欧美精选在线播放| av一二三不卡影片| 久久精品久久久久久| 一区二区在线免费观看视频| xxx在线免费观看| 国产亚洲精品福利| 成人在线免费观看视视频| 国产小视频在线看| 精品理论电影在线| 精品区一区二区| 欧美日韩亚洲一二三| 国产黄大片在线观看画质优化| a在线播放不卡| 91在线精品视频| av图片在线观看| 欧美日韩a区| 亚洲日韩第一页| 色综合久久久无码中文字幕波多| 原纱央莉成人av片| 亚洲精品你懂的| 国产一级精品aaaaa看| 伊人久久亚洲综合| 国产日韩欧美| 色在人av网站天堂精品| 91大神福利视频| 日韩三区视频| 亚洲爱爱爱爱爱| 北条麻妃亚洲一区| 91亚洲视频| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 美女黄色片网站| 男男激情在线| jiyouzz国产精品久久| 91青草视频久久| 中文 欧美 日韩| 亚洲一区二区毛片| 久久久在线视频| 成人免费看片98| 欧美1区3d| 久久久久北条麻妃免费看| 亚洲a∨无码无在线观看| 国产精品美女久久久久久不卡| 亚洲黄色av网站| 日本道中文字幕| 日韩在线视频一区二区三区 | 天天干天天爱天天操| 国产精品中文字幕日韩精品| 亚洲a级在线观看| 国产伦精品一区二区三区四区| 日韩avvvv在线播放| 国产ts一区二区| 国产精品免费精品一区| 男人天堂欧美日韩| 日韩av片永久免费网站| 波多野结衣黄色| 男人的天堂亚洲一区| 国产精品永久免费视频| 中文字幕黄色av| 久久99热这里只有精品| 91九色国产社区在线观看| 国产精品一区二区黑人巨大| 国产精品自拍毛片| 国产精选一区二区| 青青久草在线| 国产精品人成在线观看免费| 中文字幕黄色大片| av理论在线观看| 婷婷综合另类小说色区| 鲁一鲁一鲁一鲁一澡| 日韩视频网站在线观看| 欧美日韩电影在线| 国内自拍偷拍视频| 人人网欧美视频| 在线观看欧美成人| 在线观看美女av| 狠狠综合久久| 国产a∨精品一区二区三区不卡| 午夜一级黄色片| 国产九色精品成人porny| 国产专区一区二区| 在线免费看黄网站| 亚洲午夜久久久久久久久久久| 草草久久久无码国产专区| 日韩在线影院| 欧美大胆一级视频| 最近中文字幕免费| 亚洲人metart人体| 欧亚精品中文字幕| 国产精品玖玖玖| 99久久精品免费| 亚洲精品在线免费| 岛国av在线播放| 欧美日韩国产一区| 欧美大片免费播放器| 欧美aaaa视频| 性欧美长视频免费观看不卡| 中文字幕一区二区三区波野结| 国产精品996| 日韩欧美激情一区二区| 波多野结依一区| 欧美三级电影精品| 免费a在线观看播放| 久久国产成人午夜av影院宅| 91po在线观看91精品国产性色| 在线视频 中文字幕| caoporm超碰国产精品| 中文精品一区二区三区| 国模冰冰炮一区二区| 日韩欧美色综合| 成人在线观看免费高清| 亚洲经典自拍| 91视频网页| 日本蜜桃在线观看| 色婷婷亚洲精品| 老熟妇精品一区二区三区| 亚洲成人精品| 国产精品久久久久久久久久新婚 | 国产免费高清视频| 国产丝袜美腿一区二区三区| 欧美男女爱爱视频| 99re8精品视频在线观看| 亚洲人成电影网站色…| 一级aaa毛片| 国产精品一卡二卡| 一区二区三区四区欧美| 免费成人美女女| 亚洲精品wwwww| 欧美做爰爽爽爽爽爽爽| 欧美aaa在线| 日韩国产精品一区二区三区| 中文字幕人成乱码在线观看| 亚洲精品在线三区| 欧美黄色一区二区三区| 国内一区二区在线| 伊人天天久久大香线蕉av色| 日韩av一级| 在线亚洲欧美视频| 国产女优在线播放| 国产欧美日韩在线| 欧美精品aaaa| 成人久久综合| 国产噜噜噜噜久久久久久久久| 国产精品二线| 91福利在线导航| 欧美 日韩 国产 成人 在线观看| 午夜在线a亚洲v天堂网2018| 九九九九精品九九九九| 伊人久久在线| 亚洲天堂网在线观看| 日韩中文字幕高清| 国产日韩欧美麻豆| 在线看的黄色网址| 99国内精品久久久久久久| 国产专区精品视频| 91极品在线| 欧美精品一区二区三| 亚洲午夜18毛片在线看| 久久久久久久久久看片| 高清一区在线观看| 国产大片一区| 99久久伊人精品影院| 激情图片在线观看高清国产| 亚洲黄色片网站| 成人免费毛片男人用品| 中文字幕不卡的av| 亚洲制服在线观看| 亚洲理伦在线| 亚洲v欧美v另类v综合v日韩v| 欧美亚洲福利| 欧美激情18p| 色吊丝在线永久观看最新版本| 日本久久电影网| 国产精品国产三级国产传播| 福利一区二区在线| 干日本少妇首页| 91偷拍一区二区三区精品| 91免费看片网站| heyzo中文字幕在线| 亚洲人成电影网站色xx| 国产农村妇女毛片精品久久| 五月综合激情婷婷六月色窝| 国产三级av在线播放| 久久草av在线| 精品视频在线观看一区| 精品国产乱码久久久久久1区2匹| 成人h猎奇视频网站| 国产盗摄一区二区| 国产一区二区三区在线观看网站| 一级特黄aaa大片| 性感美女久久精品| 成人无码av片在线观看| 国产凹凸在线观看一区二区| 青青在线视频观看| 911久久香蕉国产线看观看| 精品蜜桃传媒| 精品国产乱码久久久久久樱花| 午夜精品久久久久久久99热浪潮| 成年人在线看| 亚洲成在人线av| 91亚洲欧美激情| 欧美日韩色婷婷| 青青草原免费观看| 国产片一区二区三区| 中文字幕在线视频播放| 久久99精品国产.久久久久| 国产免费观看高清视频| 亚洲九九在线| 日韩欧美精品一区二区三区经典| 久草精品视频| 亚洲最大成人在线| 99riav视频一区二区| 68精品久久久久久欧美| 草莓福利社区在线| 日韩专区在线播放| 国产爆初菊在线观看免费视频网站| 亚洲国产精久久久久久 | 一级特黄录像免费播放全99| 人妖一区二区三区| 国产精品一区二区欧美| 激情综合五月| 国产精品人成电影在线观看| 在线观看福利电影| 国产+人+亚洲| 丰乳肥臀在线| 色与欲影视天天看综合网| 麻豆视频免费在线观看| 中文字幕在线看视频国产欧美在线看完整| 亚洲日本在线播放| 亚洲国产日韩欧美在线动漫| 丰满肥臀噗嗤啊x99av| 欧美一区二区三区白人| 91久久久久久久久久久久| 欧美写真视频网站| 亚洲无码精品一区二区三区| 日本电影亚洲天堂一区| 国产一级一级国产| 欧美性高潮床叫视频| 天天操天天操天天操天天| 欧美日韩黄色大片| 黄色片免费观看视频| 亚洲自拍偷拍欧美| 成人免费看片98| 天天综合色天天综合| www日韩精品| 色综合天天综合网天天看片| 日本中文字幕久久| 91久久久免费一区二区| 亚洲成人av网址| 欧美色男人天堂| 在线观看国产小视频| 欧美在线free| 97人妻人人澡人人爽人人精品 | 亚洲精品网址| 日韩专区第三页| 亚洲国产精品一区| 99精品人妻少妇一区二区| 久久av一区| 日韩av片网站| 国产一区二区导航在线播放| 中文字幕一区二区在线观看视频 | 嗯啊主人调教在线播放视频| 韩日欧美一区二区| 欧美人体一区二区三区| 国产精品爽爽爽| 国产午夜久久av| 国产精品免费一区二区| 亚洲自拍电影| 99re99热| 亚洲国产网站| 国产裸体免费无遮挡| 久久97超碰国产精品超碰| 被黑人猛躁10次高潮视频| www.亚洲国产| 国产在线综合视频| 亚洲三级免费电影| 日本亚洲欧美在线| 欧美性猛片xxxx免费看久爱| 国产三级视频在线播放| 亚洲精品短视频| 尤物网在线观看| 国外色69视频在线观看| 四虎成人在线| 成人一区二区在线| 日本久久成人网| 中文网丁香综合网| 亚洲国产一区二区三区a毛片| 手机看片福利日韩| 国产福利精品一区二区| www在线观看免费视频| 亚洲免费av观看| 毛片基地在线观看| 欧美一区二区精品在线| 欧洲视频在线免费观看| 欧美成人免费一级人片100| 色偷偷色偷偷色偷偷在线视频| 国产欧美日韩中文字幕在线| 国内精品免费| 经典三级在线视频| 免费视频一区| 欧美一级大片免费看| 中文字幕免费一区| 青青操免费在线视频| 51精品久久久久久久蜜臀| 爽爽视频在线观看| 久热精品在线视频| 欧美xnxx| 欧美日韩中文国产一区发布| 欧美三级免费| 爱豆国产剧免费观看大全剧苏畅| 久久综合资源网| 亚洲国产精一区二区三区性色| 在线成人午夜影院| 国产原创av在线| 538国产精品视频一区二区| 玖玖精品一区| 中文字幕一区二区三区5566| 日韩激情一二三区| 国产传媒第一页| 五月综合激情婷婷六月色窝| 国产成人精品白浆久久69| zzjj国产精品一区二区| 国产精品亚洲d| 日韩区国产区| 久久精品国产清高在天天线| 亚洲av成人片色在线观看高潮| 亚洲精品国产无天堂网2021| 99国产在线播放| 精品国内自产拍在线观看| 国产91在线精品| 天堂精品视频| 日本在线不卡视频| 少妇人妻好深好紧精品无码| 色久优优欧美色久优优| 男女网站在线观看| 国产91在线播放精品91| 国产成人av| 天堂av在线网站| 国产精品亲子伦对白| 国产精品午夜一区二区| 伊人久久五月天| 精品福利在线| 人人妻人人澡人人爽精品欧美一区| 美国毛片一区二区| 亚洲国产精品一区二区久久hs| 欧美日本视频在线| 色综合久久久久综合一本到桃花网| 国产欧美精品日韩| 欧美疯狂party性派对| 天天综合成人网| 一区二区理论电影在线观看| 亚洲欧美高清视频| 2019av中文字幕| 宅男在线一区| 午夜激情在线观看视频| ...av二区三区久久精品| 99产精品成人啪免费网站| 久久久久久国产精品| 色先锋久久影院av| 一本久道中文无码字幕av| 国产精品毛片a∨一区二区三区| 91在线你懂的| 欧美日韩国产123| 天天躁日日躁成人字幕aⅴ| www日韩在线观看| 中文字幕一区二区三区在线观看| 国产富婆一级全黄大片| 海角国产乱辈乱精品视频| 免费欧美一区| 999久久久精品视频| 亚洲高清免费在线| av大全在线免费看| 92国产精品久久久久首页| 1024日韩| 国产又粗又猛又爽又黄的视频小说| 91麻豆精品久久久久蜜臀| 波多野结衣乳巨码无在线观看| 欧美高清视频一区| 精品一区二区三区欧美| 成年免费在线观看| 日韩中文在线中文网在线观看| 日韩中文字幕一区二区高清99| 黄www在线观看| 亚洲精品一二三区| 日本午夜在线视频| 亚洲a一级视频| 久久精品亚洲| 2021亚洲天堂| 日韩av在线免费看| 97色婷婷成人综合在线观看| 国产精品又粗又长| 日韩一区在线免费观看| 天天插天天干天天操| 91免费的视频在线播放| 久久福利影视| 国产在线观看免费av| 中文字幕免费国产精品| 欧洲亚洲成人| 污污网站免费观看| 欧美色道久久88综合亚洲精品| www在线观看播放免费视频日本|