腾讯mini项目-【指标监控服务重构】2023-07-19

news2025/2/23 1:11:54

今日已办

OpenTelemetry Logs

通过日志记录 API 支持日志收集

集成现有的日志记录库和日志收集工具

Overview

  • 日志记录 API - Logging API,允许您检测应用程序并生成结构化日志
  • 旨在与其他 telemerty data(例如metric和trace)配合使用,以提供统一的可观测性解决方案
  • 结构化日志记录,允许attributesmetadata附加上下文信息到日志条目。包含相关详细信息,例如时间戳、请求 ID、用户 ID、相关 ID 以及其他有助于日志分析和故障排除的自定义上下文

image-20230719201026566

Different types of logs

OpenTelemetry 支持从应用程序系统内的各种来源捕获日志。根据日志的生成和收集方式,日志可以分为 3 类。

System and infrastructure logs

  • System logs 提供有关系统操作性能安全性的宝贵信息。

  • 通常由系统内的各个组件生成,包括操作系统、应用程序、网络设备和服务器。

  • 是在主机级别写入的,具有预定义的格式和内容,无法轻易更改。

  • 不包含有关 Trace 上下文的信息。

Legacy first-party logs

  • First-party logs由内部应用程序生成,记录特定的应用程序事件、错误和用户活动,助于应用程序调试和故障排除。

  • 更改日志的写入方式以及包含的信息。例如,要将日志与Trace关联起来,手动将 Trace Context 添加到每个日志语句中,或者使用日志库的插件自动执行此操作。 例如,要传播上下文并将日志记录与Trace关联,可以在日志消息中使用以下属性

    • trace_id for TraceId, hex-encoded.

    • span_id for SpanId, hex-encoded.

    • trace_flags for trace flags, formatted according to W3C traceflags format.

For example:

request failed trace_id=958180131ddde684c1dbda1aeacf51d3 span_id=0cf859e4f7510204

New first-party logs

  • 附加上下文信息到日志条目,例如标签、属性或元数据。
  • 记录不同级别的事件或消息,例如调试、信息、警告、错误等。
  • 标准化跨分布式系统传播日志中的上下文。

OpenTelemetry Collector

  • 灵活且可扩展的代理,收集、处理和导出 telemetry data,简化从多个来源接收和管理 telemetry data ,导出到多个后端或可观测系统。
  • 支持多种日志源,包括应用程序日志、日志文件、日志库和第三方日志系统。集成流行的日志框架和库,从而实现日志数据的无缝摄取。
  • 提供转换和丰富日志数据的能力。可以修改日志属性、添加元数据或使用其他上下文信息丰富日志,以增强分析和故障排除的价值。
  • 收集和处理后,将日志数据导出到各种日志记录后端或系统。支持将日志导出到流行的日志平台、存储系统或日志管理 用于长期存储、分析和可视化的工具

OpenTelemetry Backend

将日志数据导出到日志后端后,可以使用平台的功能处理和分析日志。包括过滤、搜索、聚合和可视化日志,以深入了解应用程序的行为并解决问题。

Sampling and rate-limiting

采样 Sampling 通过减少创建(sampled)Span 的数量来降低 Trace 的成本和冗长性。在性能方面,采样可以节省收集、处理和导出 Span 所需的 CPU 周期和内存

Sampling: when and where

采样可能发生在处理 Span 的不同阶段:

  • When a trace is created - head-based sampling;
  • When a trace is received by a backend - rate-limiting sampling;
  • When a complete trace is available - tail-based sampling.

Sampling probability

采样提供了采样概率,可以仅使用采样范围的一部分对所有范围进行准确的统计计数。例如,如果采样概率为 50%,采样的 Span 数为 10,则调整后的(总) Span 数为 10 / 50% = 20 ; 以局部计算的概率来推算、估计整体

NameSideAdjusted countAccuracy
Head-based samplingClient-sideYes100%
Rate-limiting samplingServer-sideYes<90%
Tail-based samplingServer-sideYes<90%

Head-based sampling

  • 尽早做出采样决策,并使用上下文将其传播给其他参与者。这样可以通过不收集已删除Span(操作)的任何 telemetry data节省 CPU 和内存资源
  • 最简单、最准确、最可靠的采样方法。
  • 缺点是无法对有错误的 Span 进行采样,因为创建 Span 时该信息不可用。为了解决这个问题,可以使用基于尾部的采样 - tail-based sampling。
  • 不考虑流量峰值,并且可能收集比预期更多的数据。这就是速率限制 rate-limiting 采样变得方便的地方

OpenTelemetry head-based sampling

OpenTelemetry 有 2 个 Span 属性负责客户端采样

  • IsRecording - when false, span discards 丢弃 attributes, events, links etc.
  • Sampled - when false, OpenTelemetry drops 删除the span.

防止收集昂贵的数据

if span.IsRecording() {
    // collect expensive data
}

Sampler 是一个接受即将创建的根 Span 的函数。该函数返回一个采样决策:

  • Drop - trace is dropped. IsRecording = false, Sampled = false.
  • RecordOnly - trace is recorded but not sampled. IsRecording = true, Sampled = false.
  • RecordAndSample - trace is recorded and sampled. IsRecording = true, Sampled = true.

默认情况下,OpenTelemetry 对所有 Trace 进行采样,可以修改配置为对部分 Trace 进行采样。在这种情况下,后端使用采样概率 sampling probability 来调整 Span 的数量

OpenTelemetry samplers

  • AlwaysOn每个 Trace 进行采样,例如,将为每个请求启动并导出新的 Trace。
  • AlwaysOff 采样器不采样任何 Traces,或者换句话说,丢弃所有 Traces。可以用于执行负载测试或暂时禁用 Tracing。
  • TraceIDRatioBased 采样器使用Trace ID一小部分 Traces 进行采样,例如 20% 的Tracing 。
  • Parent-based 是一个复合采样器,其行为根据 Span 的父级而有所不同。当开始新的 Trace 时,采样器会决定是否对其进行采样并将该决定传播到其他服务

Rate-limiting sampling

  • 发生在服务器端,并确保不会超出某些限制,例如,它允许每秒采样 10 条或更少的Traces。
  • 支持调整计数 adjusted counts ,但精度较低。为了获得更好的结果并提高性能,应该将限速采样与基于头的采样- head-based sampling 结合使用,后者更加高效和准确。
  • 大多数后端(包括 Uptrace)会在必要时自动应用速率限制采样

Tail-based sampling

  • head-based sampling 采样决策是预先做出的,并且通常是随机的。无法对失败或异常长的操作进行采样,因为该信息仅在 Trace 结束时可用
  • tail-based sampling ,延迟采样决策,直到 Trace 的所有 Span 都可用,可以根据 Trace 中的所有数据做出更好的采样决策。例如,可以对失败或异常长的 Trace 进行采样
  • 大多数后端(包括 Uptrace)必要时自动应用,可以 OpenTelemetry Collector with tailsamplingprocessoropen in new window根据需要配置采样。

Uptrace

  • 一个 OpenTelemetry 后端,具有直观的查询生成器、丰富的仪表板、警报规则以及大多数语言和框架的集成。可以在单个服务器上处理数十亿个 Span 和 Metric ,并允许以低 10 倍的成本监控应用程序。
  • 使用 ClickHouse 数据库来存储 Trace 、Metric 和 Log 。监控应用程序并设置自动警报以通过电子邮件、Slack、Telegram 等接收通知。

明日待办

  1. 组会汇总进度和问题
  2. 继续学习文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1010861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机专业毕业设计项目推荐06-工作室管理系统(Java+Vue+Mysql)

工作室管理系统&#xff08;JavaSpringVueMysql&#xff09; **介绍****系统总体开发情况-功能模块****各部分模块实现****最后想说的****联系方式** 介绍 本系列(后期可能博主会统一为专栏)博文献给即将毕业的计算机专业同学们,因为博主自身本科和硕士也是科班出生,所以也比较…

Postman —— post请求数据类型

1、Postman中post的数据类型 post中有以下数据类型 1、form-data 2、x-www-form-urlencoded 3、raw 4、binary 2、Postman请求不同的post数据类型 from-data multipart/form-data&#xff0c;它将表单的数据组织成Key-Value形式&#xff0c;也可以上传文件&#xff0c;当…

核心实验23_GRE over IPsec vpn_ENSP

项目场景&#xff1a; 核心实验23_GRE over IPsec vpn_ENSP 实搭拓扑图&#xff1a; 总部R3具体操作&#xff1a; 1.确保公网地址可达 [R3]ip route-static 0.0.0.0 0 23.1.1.2 [R4]ip route-static 0.0.0.0 0 24.1.1.22.创建安全提议以及安全策略 对数据加密和 认证的一个方…

【win10】怎么删除休眠文件

电脑c盘天天爆红&#xff0c;每天可用空间都变少&#xff0c;或者电脑晚上不关机&#xff0c;只锁屏后息屏&#xff0c;第二天发现电脑关机了&#xff0c;可能就是休眠功能惹得鬼。 以下是关闭休眠功能步骤&#xff1a;   1、这个隐藏的系统文件hiberfil.sys&#xff0c;体积…

iOS App上传到苹果应用市场构建版本的图文教程

使用hbuilderx的h5或uniapp框架写的前端&#xff0c;进行云打包ios应用&#xff0c;会生成一个ipa后缀的应用文件。这个文件是没有办法像安卓应用那样直接安装在手机上面的。需要上架到苹果应用商店&#xff0c;用户才能下载安装使用。 因此&#xff0c;我们这篇文章讲详细介绍…

MinGW-W64 下载、安装与配置(支持最新版的GCC,目前 GCC 13.2.0)VSCode配置c/c++环境 彻底删除vscode(包括插件及配置!)

目录 一、简介 二、下载 1 旧版安装&#xff08;8.1.0&#xff09; 从 sourceforge.net 下载 2 新版安装(本次采用较新版本~~~) 从 github 下载 从 镜像站点 下载 自己编译 三、安装与配置 1. 在线安装&#xff08;这里仅作参考了解&#xff09; 2. 离线安装&…

基于Qt4开发曲线绘制交互软件Plotter

目前市面上有很多曲线绘制软件,但其交互功能较差。比如,想要实现数据的交互,同步联动等,都需要大量繁琐的人工操作。所以讲想开发一款轻量级的曲线绘制交互软件。下面就以此为案例,记录一下基于Qt4的开发过程。 目录 1 需求 2 技术路线 3 开发流程 1 框架搭建 2 菜单…

酷开系统——酷开科技挖掘下沉市场的重要利器

纵观整个互联网的发展历程&#xff0c;我们经历从搜索时代到电子商务时代&#xff0c;再从社交网络时代到近几年兴起的兴趣网络时代。而在当下的兴趣网络时代&#xff0c;面对多元化、同质化的产品&#xff0c;价值文化成为品牌和消费者建立连接的关键。目前&#xff0c;互联网…

15W SIP网络有源吸顶喇叭

SV-7042VP 15W SIP网络有源吸顶喇叭 一、描述 SV-7042VP是我司的一款SIP网络有源吸顶喇叭&#xff0c;具有10/100M以太网接口&#xff0c;内置有一个高品质扬声器&#xff0c;将网络音源通过自带的功放和喇叭输出播放&#xff0c;可达到功率15W。SV-7042VP作为SIP系统的播放终…

【CSS3】

文章目录 1.简介2.边框3.圆角4.背景5.渐变CSS3 径向渐变6.文本效果7.字体8.2D转换9.3D转换10.过渡11.动画12.多列13.用户界面14.按钮 ​ 1.简介 模块 CSS3 被拆分为"模块"。旧规范已拆分成小块&#xff0c;还增加了新的。 一些最重要 CSS3 模块如下&#xff1a; 选…

Qt 围炉札记

文章目录 一、Qt 调试 一、Qt 调试 【Qt调试技巧】Profile配置使用及一些坑 QT运行时的Debug、Release、Profile选项区别 Qt Creator release版本进行调试 【Qt调试技巧】如何在Release下调试Qt程序&#xff1f; Qt如何在Release编译下怎么调试&#xff1f;怎么生成pdb文件…

SwiftUI 中的几种毛玻璃效果

Preview Code // // testtt.swift // bill2 // // Created by 朱洪苇 on 2023/8/9. //import SwiftUIstruct testtt: View {var body: some View {ZStack {Image("bg1").blur(radius: 5) // 给背景图加模糊VStack {Text("ultraThinMaterial").padding()…

Mysql InnoDB引擎 的hash索引

Mysql InnoDB引擎不支持hash索引&#xff0c;但是在内存结构中有一个自适应hash索引&#xff0c;来提高查询性能 当设置hash索引时会自动转换成btree索引 查一下mysql官方文档&#xff1a;https://dev.mysql.com/doc/refman/5.7/en/create-index.html innodb_adaptive_hash_i…

ubuntu18、20 cv_bridge 与自带opencv版本冲突问题

背景&#xff1a; nvidia tx2、xvaier 装机自带 ubuntu18 opencv4 后来我们会安装melodic的ros&#xff0c;ros中的cv_bridge 默认cv版本是3.2.0 编译带cv_bridge的代码时&#xff0c;会报错会崩溃&#xff0c;因为版本冲突了 为了解决该问题&#xff0c; 行之有效的一种…

uniapp-提现功能(demo)

页面布局 提现页面 有一个输入框 一个提现按钮 一段提现全部的文字 首先用v-model 和data内的数据双向绑定 输入框逻辑分析 输入框的逻辑 为了符合日常输出 所以要对输入框加一些条件限制 因为是提现 所以对输入的字符做筛选,只允许出现小数点和数字 这里用正则实现的小数点…

Boostrap对HTML的表格的设计和优化

目录 01-Bootstrap的默认表格风格02-没有边线-边界的表格03-行与行的背景颜色交替变换(条纹样式)04-给表格加上边框效果05-鼠标移到行上时该行的颜色加深06-把表格的padding值缩减一半,使表格看起来更紧凑07-为表格的行或单元格设置颜色 01-Bootstrap的默认表格风格 Bootstrap…

手机上的动态ip流量是算自己的流量吗?

正抓着手机的小伙伴们&#xff0c;大家好呀&#xff01;我们都知道&#xff0c;在手机上设置动态ip可以帮助我们访问被限制的网站和保护我们的隐私。但是&#xff0c;有一个让人困惑的问题一直困扰着大家&#xff1a;手机上使用动态ip时&#xff0c;这个流量算不算我们自己的流…

【css案例】

三&#xff0c;案例 1.小米侧边栏 编辑 编辑 2.五彩导航 编辑 编辑 3. 编辑 编辑 4.小米布局编辑 编辑 编辑 5.淘宝焦点图 编辑 ![img](https://img-blog.csdnimg.cn/d067c55c445e4cccb13f23076d6331f8.png编辑 编辑 6.土豆网遮罩 编辑 编辑 7.旋转案例 编辑…

css自学框架之图片懒加载

首先解释一下什么叫图片懒加载。图片懒加载是一种在页面加载时&#xff0c;延迟加载图片资源的技术&#xff0c;也就是说图片资源在需要的时候才会加载&#xff0c;就是在屏幕显示范围内加载图片&#xff0c;屏幕显示范围外图片不加载。 一、关键函数 用到的关键函数&#xf…

Pinctrl子系统_02_使用Pinctrl要掌握的重要概念

本节说明使用Pinctrl子系统时&#xff0c;要掌握的重要概念。 上节我们说到&#xff0c;我们通过Pinctrl子系统来控制设备的引脚&#xff0c;但实际上&#xff0c;大多数芯片都没有一个单独的Pinctrl。引脚的复用、配置等操作&#xff0c;实际上是在GPIO子系统内部实现的。 但…