在这篇文章中,我们将逐步讲解如何为 React Native 应用添加监控,以便通过 OTLP-HTTP 将数据发送到任何 OpenTelemetry (OTel) 后端。...但是,您仍然应该能够在您的可观测性系统中看到来自 Embrace SDK 自动设置的检测的一些有用的遥测数据,例如捕获 网络请求 的跨度和未处理异常的日志。...请注意,我们还为此实例设置了自定义属性和事件,以便将更多上下文附加到跨度。...仔细查看这些新跨度之一,您可以看到该包不仅添加了一些默认属性,例如view.name或view.state.end,还包括您之前通过EmbraceNavigationTracker组件的screenAttributes...属性配置的属性: NavigationContainer组件来自@embrace-io/react-native-navigation,我们称之为“检测库”。
当时的表现是:网关返回大量 504 超时;服务 A 的线程池打满,CPU 飙升;服务 B 的某个 MySQL 查询执行时间 > 5s;Elasticsearch 还原日志时,链路耗时图如瀑布一样倾斜。...精准定位 工具一:链路追踪(Jaeger)# FastAPI 集成 Jaeger 示例from fastapi import FastAPIfrom opentelemetry.instrumentation.fastapi...import FastAPIInstrumentorfrom opentelemetry.exporter.jaeger.thrift import JaegerExporterfrom opentelemetry.sdk.trace.export...路由中调用@app.get("/order/{id}")def get_order(id: int): user_info = call_user_service(get_user_id_by_order.../P95 延迟⛓️ 使用服务 Mesh(如 Istio)配置重试+熔断策略✅ 利用异步队列(Kafka/RabbitMQ)做非强一致性接口解耦五、经验总结排障环节工具/策略
了解如何在 React 应用程序中使用 OpenTelemetry,包括基本和自动插桩,以及添加自定义跨度和指标。...它们由跨度组成,每个跨度记录每个进程所花费的时间。跨度可以具有属性和事件。 指标衡量您的系统在一段时间内的可用性和性能。 日志是带时间戳的文本记录,可以是结构化的或非结构化的,并包含元数据。...设置基本监控 要开始与收集器通信,请先安装必要的库。...,通过将跨度处理器添加到跟踪器提供程序、注册它并将其设置为全局跟踪器提供程序,将所有内容绑定在一起。...("Span Name"); 您可以向此跨度添加属性、事件甚至子跨度,并将其传播到整个应用程序。
tool: raise ToolNotFoundException(f"Tool {tool_name} not found") # 更新工具属性...3.5.1 工具路由 代码示例:tools.py from fastapi import APIRouter, Depends, HTTPException from fastapi.security...合理设置缓存过期时间:根据数据更新频率设置合适的缓存过期时间。 缓存失效策略:实现主动失效和被动失效相结合的缓存失效机制。 缓存预热:在系统启动时预热缓存,减少冷启动问题。...与主流方案深度对比 4.1 FastAPI vs Flask 特性 FastAPI Flask 性能 高(基于 Starlette) 中(基于 WSGI) 异步支持 原生支持 需使用第三方库(如 Quart...==1.22.0 opentelemetry-sdk==1.22.0 opentelemetry-exporter-otlp==1.22.0 # 测试 aiohttp==3.9.1 pytest==7.4.3
示例:app.component.name 当多个服务团队拥有自己的标准属性时,这点尤为重要。 保持属性名称简短。 示例:http.url 在错误跨度上设置错误属性。...要了解现有语义约定的出色解释,请访问官方规范,您可以在那里学到一般和系统属性,并按信号或操作类型(如 HTTP 或数据库)组织它们,包括技术特定的约定。 2....有用的属性类型 在制定 OpenTelemetry 的标准属性时进行了大量慎重考虑,而这个列表一直在不断发展。...有一种特殊类型的跨度属性称为跨度事件日志经常被忽视。跨度事件与日志非常相似,但它们是放置上下文信息的好地方,这些信息在故障排除事务问题时可能非常有用。...重复的属性键可能会引起冲突并覆盖数据。它还使查询和分析变得复杂。 未设置或空值。未设置的值提供不了有用的信息。没有值的属性占用存储空间,但对故障排除或分析没有帮助。它们还可能通过扭曲总数来扭曲分析。
教授云原生开发者如何使用 OpenTelemetry 通过分布式跟踪探索他们的服务。...如何使用 OpenTelemetry 创建和发送跨度。 练习解释和分析跟踪数据的技能。 创建学习环境 该研讨会专为跟踪新手设计,我希望参加者能够掌握将跟踪应用到他们自己的项目所需的知识和技能。...实现这种独立性意味着我只有几个小时的时间来介绍基本的可观测性概念;概述 OpenTelemetry 及其各种子项目;为参加者提供大量机会来培养他们的检测能力并思考在何处、何时以及如何添加跨度;并在他们对跟踪中的详细程度感到满意之前帮助他们验证结果数据...这就是我每次可观测性培训课程都从术语和概念的快速水平设置开始的原因。...为了保持简单,我教授了如何为跟踪配置 console_exporter 并探索跨度的文本表示。根据我的经验,这种动手实践方法比展示带有相同跨度的幻灯片并对它的每一部分进行讲解更有效。
,我将检查两个阶段:启用 OpenTelemetry 的主要阶段,以及创建额外内部跨度的自定义阶段。...收集器 Jaeger OpenTelemetry gRPC 端点的完整 URL 设置 OpenTelemetry 的服务名称 以下是结果: 在没有任何自定义的情况下,Micrometer 在接收和发送...HTTP 请求时会创建跨度。...value() 部分控制跟踪的标签,而 kind 则转换为 span.kind 属性。如果将值设置为空字符串(默认值),则它会输出函数的名称。就我而言,默认值就足够了。...明确你想要哪些跨度比删除你不想要看到的跨度要好得多。 感谢 Jonatan Ivanov 的帮助和审查。 本文的完整源代码可以在 Github 上找到。
在看到 FastAPI 在首期「OSC 开源软件趋势榜」名列前茅,作为一个 Pythoner,顿时对它产生了浓厚的兴趣,于是立即开始了 FastAPI 体验之旅。 何为 FastAPI ? ?...此外,它还有比较完善的官方文档,并且官方文档正被翻译成多种语言,如:西班牙语、葡萄牙语、中文。 快速入门 前提条件 FastAPI 需要 Python 3.6+。...拥有一个简单易用的路由系统。 Requests 拥有简单直观的 API。 直接,直观地使用 HTTP 方法名称(操作)。 具有合理的默认值,但有强大的定制功能。...尽管在 FastAPI 中它是可选的,它主要用于设置 headers,cookie 和其它状态代码。 Molten 使用模型属性的“默认”值为数据类型定义额外的验证。...Hug 启发了 FastAPI 在函数中声明 response 参用于设置 headers 和 cookies。
OpenTelemetry 是一种开源的可观测性框架,提供一组 API 和库,用于收集、处理和导出遥测数据,如追踪、指标和日志。...分布式系统本质上是复杂的,请求通过多个组件路由,每个组件在不同的节点或 Pod 上运行,这使得获取有关请求在系统中如何流动的完整图像变得困难。...OTEL 可以与流行的 Kubernetes 工具和平台集成,如 Prometheus、Jaeger 和 Grafana。...检测您的应用程序:配置收集器后,您需要使用 OpenTelemetry SDK 或兼容的追踪库来检测您的应用程序以生成追踪。这涉及将代码添加到您的应用程序以创建跨度并将它们附加到追踪上下文。...为确保您的追踪工作能够取得最佳结果,请遵循 OpenTelemetry 推荐的最佳实践,例如使用语义约定进行追踪属性,并避免过度仪器化。 在整个应用程序栈上实现分布式追踪。
谈到经济高效的监控解决方案,嵌入高基数的自定义度量标准,如准确性、延迟或详细的模型属性,是非常宝贵的。高基数的度量标准指的是具有广泛且独特值范围的数据,这可以显著增强跟踪分析。...集成:一旦您安装了 SDK,就需要将 OpenTelemetry 库合并到您的应用程序代码库中。这涉及创建代表应用程序执行操作的跟踪和跨度。...以下是一个演示如何在 API 请求到 OpenAI 服务周围创建跨度的片段: from opentelemetry import trace from opentelemetry.trace import...from traceloop import Traceloop Traceloop.init(app_name="Signoz PDF Chat") 设置属性:使用 OpenLLMetry,您可以设置关联属性...成本仪表板的“按用户成本”面板仅在传输 user_id 属性时起作用。有关更多详细信息,请参考示例应用程序或示例代码,了解如何设置关联属性。
该库捕获跨度和事件,以结构化格式收集模型输入、响应元数据和令牌使用等重要数据。 生成式AI的关键信号 生成式AI的语义约定侧重于通过三个主要信号捕获对AI模型行为的洞察:跟踪、指标和事件。...跟踪:跟踪模型交互 跟踪跟踪每个模型交互的生命周期,涵盖输入参数(例如,temperature、top_p)和响应细节,如令牌计数或错误。...它们提供了对每个请求的可见性,有助于识别瓶颈并分析设置对模型输出的影响。 指标:监控使用情况和性能 指标汇总高级指标,如请求量、延迟和令牌计数,这对于管理成本和性能至关重要。...使用供应商特定属性扩展可观测性 语义约定还定义了针对OpenAI和Azure推理API等平台的供应商特定属性,确保遥测捕获一般和提供商特定的详细信息。这种额外的灵活性支持多平台监控和深入的见解。...安装 OpenTelemetry 依赖项: pip install opentelemetry-distro opentelemetry-bootstrap -a install 设置以下环境变量,根据需要更新端点和协议
代码示例:Prometheus 监控集成 from fastapi import FastAPI from prometheus_client import Counter, Histogram, Gauge...代码示例:OpenTelemetry 分布式追踪集成 from fastapi import FastAPI from opentelemetry import trace from opentelemetry.sdk.trace...import JaegerExporter from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor import requests...常见的数据流水线组件包括: 收集器:收集可观测性数据,如 Fluentd、Logstash、Filebeat 等。 处理器:处理可观测性数据,如过滤、转换、聚合等。...使用标准化的追踪协议,如 OpenTelemetry,确保上下文传递的一致性。 实现上下文传递的验证机制,确保上下文在整个链路中正确传递。 监控上下文传递的成功率,及时发现和修复上下文丢失问题。
在 OpenTelemetry for JavaScript 中有几个(在开放时)问题与确定父跨度和正确的上下文传播(包括异步代码)相关: 如果使用多个 TracerProvider 实例,则上下文泄漏.../opentelemetry-js/issues/2016 Http Span 未链接/未设置父 Span #2333 https://github.com/open-telemetry/opentelemetry-js...事务的复杂 JSON 序列化 在 OpenTelemetry 的模型中, 所有跨度都遵循相同的逻辑格式。用户和检测库可以通过将 key-value 属性附加到任何 span 来为其提供更多含义。...Transaction Span 获取 Event 属性 当 transaction 从其内存表示转换为 Event 时, 它会获得更多无法分配给 regular span 的属性, 例如 breadcrumbs...这种行为在最好的情况下是非常低效的,在最坏的情况下是对资源(如网络带宽和CPU周期)的严重且有问题的消耗。 兼容性 Transaction Span 的特殊处理与 OpenTelemetry 不兼容。
new 为跨度标注添加文本编辑功能,以及在 ner.manual 和 spans.manual 中添加可配置事件钩子的 --edit-text 设置,以便在后端重新生成和重新分词示例。...v1.15.3 (2024-04-24)此版本添加了对 fastapi 最高 0.111.0 版本的支持。new 允许 fastapi 路由的额外视频文档:fix 修复 image_manual 视图中无法选择单个图像跨度的问题。...doc 添加一个关于任务路由的新视频,深入探讨如何构建自己的任务路由器。...new 添加对任务路由的支持,允许您自定义谁标注每个示例。new 添加 annotations_per_task 设置,以轻松配置部分标注者重叠的任务路由器。
send_batch_size:在超时之前将发送的跨度、度量数据点或日志记录数量。send_batch_size 充当触发器,不影响批次的大小。...我将此值设置为 1 秒。...步骤 5:通过转化属性删除 PII 或其他敏感数据 现在我们可以添加属性,是时候为我们解析的数据提供更通用的编辑工具了。这可以通过使用 OpenTelemetry 转换语言(OTTL)来实现。...在可观测性数据中无意中包含 PII 可能违反法律和监管合规框架,如 GDPR、HIPAA 等,这些框架规定了个人信息的处理。违反这些规定可能会导致财务处罚、法律诉讼和声誉损害。...在此处,传入的日志由 regex_parser 操作符解析,该操作符检查传入的字符串并设置属性。这在 opentelemetry-collector-contrib 存储库中有记录。
此外,OTel Collector有一个Kubernetes属性处理器,可以添加Kubernetes元数据,这可以用于从Kubernetes API服务器收集指标。...所有这些问题都会影响您的收集设置——例如,如果日志遥测的可靠性是最重要的事情,那么您需要运行 sidecar 收集器来抓取日志,然后将这些日志馈送到网关以进行进一步处理。...我看到的一种流行模式是使用 OpenTelemetry 创建“本地”集群监控堆栈,该堆栈集中所有跨单个集群的遥测数据,然后使用 Collector 的路由功能将关键指标、日志和跟踪数据发送到第三方解决方案...避免过度依赖自定义应用程序指标——通常,您可以将您感兴趣的数据捕获为跨度属性——这有助于控制成本并确保您的可观察性支出是线性的而不是指数级的。...要管理所有这些监控和收集代理,请使用支持 OpenTelemetry Agent Management Protocol (OpAMP) 的控制平面——这是获取或设置配置、监控各种代理的运行状况以及处理更新的标准方法
该技术将事务建模为活动的分层树,也称为 OpenTelemetry 术语中的跨度。...在 .NET 9 之前,用户需要 OpenTelemetry .NET SDK 来生成有用的 OpenTelemetry 兼容跟踪。...从 .NET 9 开始,除非需要高级功能(如丰富),否则可以省略检测依赖(OpenTelemetry.Instrumentation.Http)。....NET 9 引入了几个新的跨度,代表围绕 SocketsHttpHandler 中连接建立的活动。最重要的一个是 HTTP 连接设置跨度,它分解为 DNS、TCP 和 TLS 活动的三个子跨度。...由于连接设置与 SocketsHttpHandler 连接池中的特定请求无关,因此连接设置跨度不能建模为 HTTP 客户端请求跨度的子跨度。
基于机器学习的 AIOps 功能:如延迟相关性、故障相关性、异常检测、日志峰值分析、预测模式分析、Elastic AI 助手支持等,所有这些功能都适用于原生 OTLP 遥测数据。...设置说明中的 APM 集成说明(Integrations->APM)中找到。...Elastic APM 代理目前能够传输 OpenTelemetry 跨度,作为追踪的一部分。...这意味着如果您的应用程序中有任何组件发出 OpenTelemetry 跨度,它将成为 Elastic APM 代理捕获的追踪的一部分。...高延迟或错误事务:Elastic 可观测性的 APM 功能帮助您发现哪些属性导致事务延迟增加,并识别出区分事务失败和成功的最重要属性。
实时遥测数据,如结构化日志、跟踪和指标。 遥测数据是存储在内存中的,为了避免过度消耗内存,仪表板对存储的遥测数据的数量和大小设置了限制。 当达到数量限制时,会添加新的遥测数据并删除最旧的遥测数据。...Dashboard:TelemetryLimits:MaxAttributeCount 指定遥测数据上最大属性数量,默认为128。...Dashboard:TelemetryLimits:MaxAttributeLength 指定属性最大长度,默认为无限制。...Dashboard:TelemetryLimits:MaxSpanEventCount 指定跨度属性上的最大事件数量,默认为无限制。这些限制是按资源计算的。...,要么都不要设置 auth 方便大家使用(个人推荐),要么为了安全考虑都设置 auth ,大家觉得如何呢?
它为每个用户请求分配一个唯一的追踪ID,并在请求经过的每个服务中创建带有跨度ID的跨度。每个跨度记录一个服务单元的工作(如HTTP调用、数据库查询),并包含开始时间、结束时间、标签和日志事件。...工作原理:传播上下文:当服务A调用服务B时,它必须将追踪ID和当前跨度ID等信息(通常通过HTTP头部,如 X-B3-TraceId)传递给B。...使用语义约定:遵循OpenTelemetry或OpenTracing等标准来命名跨度、属性和事件,以保证跨团队和工具的一致性。...丰富的上下文:每个日志条目都应自动包含关键上下文,如追踪ID、跨度ID、服务名称、主机、时间戳和日志级别。实践建议:强制执行日志模式:为团队定义并强制执行一个通用的日志结构模式。...大多数云提供商的无服务器产品都集成了自家的追踪服务(如某机构的Lambda与X-Ray),但配置需要启用。函数级日志:将函数日志直接输出到标准输出或标准错误,平台会自动捕获并路由到日志服务。