做针织衫的网站,连锁店进销存软件,做网站最大可以做多少g,销售网站免费模板目录 一、背景二、概念2.1 Traces Span2.2 Metrics2.3 Logs2.4 Baggage2.5 OTel2.6 OTLP2.7 Resources2.8 Instrumentation Scope2.9 Sampling 三、核心组件 一、背景
OpenTelemetry是一个可观察性框架和工具包#xff0c;旨在创建和管理遥测数据#xff0c;如跟踪、指… 目录 一、背景二、概念2.1 Traces Span2.2 Metrics2.3 Logs2.4 Baggage2.5 OTel2.6 OTLP2.7 Resources2.8 Instrumentation Scope2.9 Sampling 三、核心组件 一、背景
OpenTelemetry是一个可观察性框架和工具包旨在创建和管理遥测数据如跟踪、指标和日志。至关重要的是OpenTelemetry与供应商和工具无关这意味着它可以与各种各样的可观察性后端一起使用包括Jaeger和Prometheus等开源工具以及商业产品。OpenTelemetry是一个云原生计算基金会(CNCF)项目。
随着云计算、微服务架构和越来越复杂的业务需求的兴起对可观察性的需求从未如此之大。可观察性是通过检查系统的输出来了解系统内部状态的能力。在软件的上下文中这意味着能够通过检查遥测数据(包括跟踪、度量和日志)来了解系统的内部状态。
为了使一个系统可观察它必须被检测。也就是说代码必须发出跟踪、监控指标和日志。然后测量的数据必须被发送到可观察性后端。
OpenTelemetry做了两件重要的事情:
允许您拥有自己生成的数据而不是被专有的数据格式或工具所困。允许你学习一套api和约定
这两者的结合使团队和组织在当今的现代计算世界中具有所需的灵活性。
OpenTelemetry是之前两个项目OpenTracing和OpenCensus合并的结果。这两个项目都是为了解决同一个问题而创建的:缺乏如何检测代码并将遥测数据发送到可观察性后端的标准。然而两个项目都不能完全独立解决这个问题所以两个项目合并形成OpenTelemetry这样它们就可以结合各自的优势真正提供一个统一的标准。
项目维度OpenTracingtracesOpenCensustraces, metricsOpenTelemetrytraces, metrics, logs
OpenTelemetry不是一个像Jaeger、Prometheus或商业供应商那样的可观察性后端。OpenTelemetry专注于遥测数据的生成、收集、管理和导出。数据的存储和可视化有意留给其他工具。
二、概念
2.1 Traces Span
trace由一个或多个span组成。第一个span表示root span。每个root span代表一个从开始到结束的请求。 父级下面的span提供了请求期间发生的事情(或者组成请求的步骤)的更深入的上下文。
Tracer - trace由一个或多个span组成表示一条完整的追踪链路由traceId唯一标识。Context Propagation Context: trace_id, span_id, trace Flags, Trace StatePropagation Span - 工作单元、操作 - 时间跨度一段时间起始时间 NameParent span ID (empty for root spans)Start and End TimestampsSpan Context - 跨Span关联关系Attributes: key-value pairs, contain metadata - Span携带的信息如下单span携带Attrs: userId, itemId, cartId… key/value non-null,key: stringvalue: string, boolean float, integer, or array of these values语义Attr系统保留的通用属性Semantic Attributes Span Events - 时间点上的事件信息记录日志Span LinksSpan Status UnsetOKError Span Kind Client/Server - 同步调用Producer/Consumer - 异步队列、消息队列Internal - 不跨进程的操作内部处理
2.2 Metrics
metric是对运行时捕获的服务的measurement度量。捕获测量数据measurement的时刻称为度量事件(metrics event)它不仅包括测量数据本身还包括捕获测量数据的时间和相关的元数据。应用程序和请求度量是可用性和性能的重要指标。自定义指标可以洞察可用性指标如何影响用户体验或业务。收集到的数据可用于警报中断或触发调度决策以在高需求时自动扩展部署。
metric
名称元数据label或attr测量数据measurement如float 64时间
Meter Metric Instruments
NameKind Counter - 累加计数Asynchronous Counter - 异步计数UpDownCounter - 升降计数器Asynchoronous UpDownCounter - 异步升降计数器Gauge - 实时数值仪表计数器Histogram - 直方图客户端聚合统计例如请求延迟 Unit (optional)Description (optional)Views - 自定义指标输出、忽略、聚合、属性
聚合Aggregation 一段时间内分散于不同时间点的多个指标 汇聚成 一个描述该时间段内的统计结果的指标
2.3 Logs
带有时间戳的信息可内嵌到span或trace中支持结构化推荐、非结构化带有metadata。
对于traces和metricsOpenTelemetry采用全新的设计方法指定一个新的API并在多个语言sdk中提供该API的完整实现。 OpenTelemetry处理日志的方法是不同的。因为现有的日志解决方案在语言和操作生态系统中广泛存在OpenTelemetry充当了这些logs、tracing和metrics信号以及其他OpenTelemetry组件之间的“bridge”。事实上由于这个原因日志API被称为Logs Bridge API。
Log Appender / BridgeLogger Provider日志框架作者需关注Logger日志框架作者需关注Log Record ExporterLog Record
日志记录表示对事件的记录。在OpenTelemetry中日志记录包含两种字段:
指定类型和含义的命名top-level字段Resource和attributes任意值和类型的字段
top-level字段包括
Field NameDescriptionTimestampTime when the event occurred.ObservedTimestampTime when the event was observed.TraceIdRequest trace ID.SpanIdRequest span ID.TraceFlagsW3C trace flag.SeverityTextThe severity text (also known as log level).SeverityNumberNumerical value of the severity.BodyThe body of the log record.ResourceDescribes the source of the log.InstrumentationScopeDescribes the scope that emitted the log.AttributesAdditional information about the event.
2.4 Baggage
在OpenTelemetry中Baggage是在span之间传递的上下文信息。它是一个与跟踪中的span上下文一起存在的键值存储使得在跟踪中创建的任何span都可以访问值。
2.5 OTel
OpenTelemetry的缩写OpenTelemetry的规范可参见 https://opentelemetry.io/docs/specs/otel/
2.6 OTLP
The OpenTelemetry Protocol(OTLP)规范描述了遥测数据源、中间节点(如采集器和遥测后端)之间遥测数据的编码、传输和传递机制。OTLP是OpenTelemetry项目范围内设计的通用遥测数据传输协议。
OTLP定义了遥测数据的编码和用于在客户机和服务器之间交换数据的协议该规范定义了如何在gRPC和HTTP 1.1上实现OTLP传输并规定了用于消息负载的Protocol Buffers schema定义。OTLP是一种请求/响应风格的协议客户端发送请求服务器用相应的响应进行应答。
OTLP协议可参见 https://opentelemetry.io/docs/specs/otlp/
2.7 Resources
通过resource attrs表示产生telemetry的实体如主机、Pod、Container等信息
env OTEL_RESOURCE_ATTRIBUTESdeployment.environmentproduction yourApp2.8 Instrumentation Scope
插桩范围即监控的代码范围如请求URI、类名::方法名、框架名等。
2.9 Sampling
采样状态
Sampled - 已采样Not Sampled - 未采样
分类 Head Sampling - 头部抽样是一种用于尽早做出抽样决策的抽样技术。抽样或删除跨度或跟踪的决定不是通过整体检查跟踪来做出的。例如consistent-probability-sampling基于概率的采样。 Tail Sampling - 尾部抽样是通过考虑跟踪中的全部或大部分跨度来决定对跟踪进行抽样的地方。尾部采样为您提供了基于从跟踪的不同部分派生的特定标准对跟踪进行采样的选项这不是头部采样的选项。
如何使用Tail Sampling的一些例子包括:
总是采样包含错误的跟踪基于总体延迟的采样跟踪根据迹线中一个或多个跨度上特定属性的存在或值对迹线进行采样;例如对来自新部署的服务的更多跟踪进行采样根据一定的标准对迹线应用不同的采样率
Collector支持的采样处理器
Probabilistic Sampling ProcessorTail Sampling Processor
三、核心组件
OTel规范OTLP协议Language SDKs - 支持不同语言的客户端实现Library Ecosystem - 支持不同lib、框架的库生态系统自动Instrumentation组件 - 无需修改代码Collector - 接收、处理、导出遥测数据的代理其他工具 OpenTelemetry Operator for KubernetesOpenTelemetry Helm Chartscommunity assets for FaaS 40 Vendors Grafana LabsApache SkywalkingJaeger…
OrganizationOSSCommercialDistributionNative OTLPLearn moreApache SkyWalkingYesNoNo Yes https://skywalking.apache.org/docs/main/v9.0.0/en/setup/backend/opentelemetry-receiver/Fluent BitYesNoNo Yes https://docs.fluentbit.io/manual/pipeline/inputs/opentelemetry/JaegerYesNoNo Yes https://www.jaegertracing.io/docs/1.47/getting-started/TeletraceYesNoYes Yes https://docs.teletrace.io/ClickHouseYesYesNo No https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/clickhouseexporterGrafana LabsYesYesYes Yes https://grafana.com/oss/opentelemetry/GreptimeDBYesYesYes Yes https://docs.greptime.com/user-guide/clients/otlpHighlightYesYesYes Yes https://www.highlight.io/docs/general/company/open-source/contributing/adding-an-sdk/observIQYesYesYes Yes https://docs.bindplane.observiq.comqrynYesYesYes Yes https://qryn.metrico.in/#/support?idtempo-apiSigNozYesYesYes Yes https://signoz.ioAppDynamics (Cisco)NoYesYes Yes https://docs.appdynamics.com/latest/en/application-monitoring/appdynamics-for-opentelemetryAria by VMware (Wavefront)NoYesNo Yes https://docs.wavefront.com/opentelemetry_tracing.htmlAspectoNoYesYes Yes https://www.aspecto.ioAWSNoYesYes No https://aws-otel.github.ioAzureNoYesYes No https://docs.microsoft.com/azure/azure-monitor/app/opentelemetry-overviewCoralogixNoYesYes Yes https://coralogix.com/docs/opentelemetry/CriblNoYesNo Yes https://docs.cribl.io/stream/sources-otelDaoCloudNoYesYes Yes https://docs.daocloud.io/en/insight/06UserGuide/01quickstart/otel/otel/DatadogNoYesYes Yes https://docs.datadoghq.com/tracing/setup_overview/open_standardsDynatraceNoYesYes Yes https://www.dynatrace.com/support/help/how-to-use-dynatrace/transactions-and-services/service-monitoring-settings/opentelemetry/ElasticNoYesYes Yes https://www.elastic.co/guide/en/apm/get-started/current/open-telemetry-elastic.htmlF5NoYesNo Yes https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/f5cloudexporterGoogle Cloud PlatformNoYesNo Yes https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/googlecloudexporterHeliosNoYesYes Yes https://gethelios.dev/HoneycombNoYesYes Yes https://docs.honeycomb.io/getting-data-in/InstanaNoYesNo Yes https://www.ibm.com/docs/en/obi/current?topicapis-opentelemetryITRSNoYesYes Yes https://docs.itrsgroup.com/docs/geneos/data-collection/opentelemetry/current/opentelemetry.htmlKloudFuseNoYesNo Yes https://kloudfuse.atlassian.net/wiki/spaces/EX/pages/753860609/APM#Sending-traces-to-Kloudfuse-data-plane%3AKloudMateNoYesNo Yes https://docs.kloudmate.com/using-opentelemetry-collectorLogicMonitorNoYesYes Yes https://www.logicmonitor.com/support/tracing/getting-started-with-tracingLogScale by Crowdstrike (Humio)NoYesNo Yes https://library.humio.com/falcon-logscale/log-shippers-opentelemetry.htmlLogz.ioNoYesYes No https://docs.logz.io/shipping/tracing-sources/opentelemetry.html#overviewLumigoNoYesYes Yes https://docs.lumigo.io/docs/opentelemetryNew RelicNoYesNo Yes https://newrelic.com/solutions/opentelemetryObserve, Inc.NoYesYes Yes https://docs.observeinc.com/en/latest/content/integrations/otel/opentelemetry.htmlObserveAnyNoYesNo Yes https://www.observeany.com/learn/opentelemetry-receiverOracleNoYesNo Yes https://docs.oracle.com/en-us/iaas/application-performance-monitoring/doc/configure-open-source-tracing-systems.html#GUID-4D941163-F357-4839-8B06-688876D4C61FSentryNoYesYes No https://sentry.io/for/opentelemetry/Sentry SoftwareNoYesYes Yes https://www.sentrysoftware.com/products/hardware-sentry-opentelemetry-collector.htmlServiceNow Cloud Observability (Lightstep)NoYesYes Yes https://github.com/lightstep?qlauncherServicePilotNoYesNo Yes https://www.servicepilot.com/en/doc/apm#opentelemetrySolarWindsNoYesYes Yes https://documentation.solarwinds.com/en/success_center/observability/default.htm#cshidthird-otel-integrationSplunkNoYesYes Yes https://docs.splunk.com/Observability/gdi/opentelemetry/opentelemetry.htmlSumo LogicNoYesYes Yes https://help.sumologic.com/docs/send-data/opentelemetry-collector/TelemetryHubNoYesNo Yes https://app.telemetryhub.com/docsTingYunNoYesNo Yes https://wukongdoc.tingyun.com/apm/userguide/deploy_manage/opentelemetry.htmlTraceloopNoYesNo Yes https://www.traceloop.comUptraceNoYesYes Yes https://uptrace.dev