containerd中文翻译系列(十四)追踪

在这里插入图片描述

containerd 自 v1.6.0 起支持 OpenTelemetry 跟踪。
跟踪目前只针对 gRPC 调用。

从 containerd 守护进程发送跟踪结果

通过配置 io.containerd.tracing.processor.v1.otlp 插件。
containerd 守护进程可以将跟踪信息发送到指定的 OpenTelemetry 端点。

version = 2[plugins."io.containerd.tracing.processor.v1.otlp"]endpoint = "http://localhost:4318"

支持以下选项。

  • endpoint接收 OpenTelemetry Protocol 的服务器地址。
  • protocol: OpenTelemetry 支持多种协议。
    默认值为 “http/protobuf”。也支持 “grpc”。
  • insecure: 当协议为 "grpc "时禁用传输安全。默认值为 false。 "http/protobuf "始终使用端点提供的模式,该设置的值将被忽略。
    此设置的值将被忽略。
func clientWithTrace() error {exp, err := otlptracehttp.New(ctx,otlptracehttp.WithEndpoint("localhost:4318"),otlptracehttp.WithInsecure(),)if err != nil {return err}res, err := resource.New(ctx, resource.WithAttributes(semconv.ServiceNameKey.String("CLIENT NAME"),))if err != nil {return err}provider := trace.NewTracerProvider(trace.WithSampler(trace.AlwaysSample()),trace.WithSpanProcessor(trace.NewSimpleSpanProcessor(exp)),trace.WithResource(res),)otel.SetTracerProvider(provider)otel.SetTextMapPropagator(propagation.TraceContext{})...dialOpts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials()),grpc.WithStreamInterceptor(otelgrpc.StreamClientInterceptor()),grpc.WithUnaryInterceptor(otelgrpc.UnaryClientInterceptor()),}client, ctx, cancel, err := commands.NewClient(context, containerd.WithDialOpts(dialOpts))if err != nil {return err}defer cancel()ctx, span := tracing.StartSpan(ctx, "OPERATION NAME")defer span.End()...
}

跟踪上的采样率和服务名称可以通过
io.containerd.internal.v1.tracing 插件配置。

version = 2[plugins."io.containerd.internal.v1.tracing"]sampling_ratio = 1.0service_name = "containerd"

从 containerd 客户端发送跟踪信息

通过配置其底层 gRPC 客户端,containerd 的 Go 客户端可以向 OpenTelemetry 端点发送
跟踪到 OpenTelemetry 端点。

请注意,Go客户端的方法和 gRPC 调用不是 1:1。单个方法调用会发出多个 gRPC 调用。

func clientWithTrace() error {exp, err := otlptracehttp.New(ctx,otlptracehttp.WithEndpoint("localhost:4318"),otlptracehttp.WithInsecure(),)if err != nil {return err}res, err := resource.New(ctx, resource.WithAttributes(semconv.ServiceNameKey.String("CLIENT NAME"),))if err != nil {return err}provider := trace.NewTracerProvider(trace.WithSampler(trace.AlwaysSample()),trace.WithSpanProcessor(trace.NewSimpleSpanProcessor(exp)),trace.WithResource(res),)otel.SetTracerProvider(provider)otel.SetTextMapPropagator(propagation.TraceContext{})...dialOpts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials()),grpc.WithStreamInterceptor(otelgrpc.StreamClientInterceptor()),grpc.WithUnaryInterceptor(otelgrpc.UnaryClientInterceptor()),}client, ctx, cancel, err := commands.NewClient(context, containerd.WithDialOpts(dialOpts))if err != nil {return err}defer cancel()ctx, span := tracing.StartSpan(ctx, "OPERATION NAME")defer span.End()...
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Modern C++ 内存篇1 - std::allocator VS pmr

大年三十所写,看到就点个赞吧!祝读者们龙年大吉!当然有问题欢迎评论指正。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. 前言 从今天起我们开始内存相关的话题,内存是个很大的话题,一时不…

sqli靶场完结篇!!!!

靶场,靶场,一个靶场打一天,又是和waf斗智斗勇的一天,waf我和你拼啦!! 31.多个)号 先是一套基本的判断 ,发现是字符型,然后发现好像他什么都不过滤?于是开始poc 3213131…

Canvas笔记05:像素操作,可以对图像进行像素级别控制和处理

hello,我是贝格前端工场,最近在学习canvas,分享一些canvas的一些知识点笔记,本期分享canvas像素操作的知识,欢迎老铁们一同学习,欢迎关注,如有前端项目需要协助可私聊。 一、什么是像素操作 Ca…

在windows的控制台实现贪吃蛇小游戏

欢迎来到博主的文章 博主id:代码小豪 前言:看懂这篇文章需要具有C语言基础,还要对单链表具有一定的理解。如果你只是想要试玩这个游戏,可以直接在文章末尾找到源码 由于实现贪吃蛇需要调用Win32 API函数,这些函数我会…

[Java][算法 哈希]Day 01---LeetCode 热题 100---01~03

LeetCode 热题 100---01~03 ------->哈希 第一题 两数之和 思路 最直接的理解就是 找出两个数的和等于目标数 这两个数可以相同 但是不能是同一个数字(从数组上理解就是内存上不是同一位置) 解法一:暴力法 暴力解万物 按照需求 …

MATLAB知识点:使用逻辑值修改或删除矩阵元素

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章 3.4.4 逻辑运算 3.4.4.3 使用逻辑值修改或删…

【数据分享】1929-2023年全球站点的逐年平均风速(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、能见度等指标,说到气象数据,最详细的气象数据是具体到气象监测站点的数据! 有关气象指标的监测站点数据,之前我们分享过1929-2023年全球气象站…

使用Python进行数据的描述性分析,用少量的描述性指标来概括大量的原始数据

在进行数据分析时,当研究者得到的数据量很小时,可以通过直接观察原始数据来获得所有的信息。但是,当得到的数据量很大时,就必须借助各种描述性指标来完成对数据的描述工作。用少量的描述性指标来概括大量的原始数据,对…

ubuntu原始套接字多线程负载均衡

原始套接字多线程负载均衡是一种在网络编程中常见的技术,特别是在高性能网络应用或网络安全工具中。这种技术允许应用程序在多个线程之间有效地分配和处理网络流量,提高系统的并发性能。以下是关于原始套接字多线程负载均衡技术的一些介绍: …

《经过》-何方?

若将生命比作一段旅程,唯有走过,方知全貌。在这旅途中,我们每个人都会历经怀疑与信仰,等待与离别……究竟何种生活,才是我们所追求的? 记得在23年的十月,我与朋友驱车归家。我和朋友开车回家&am…

【linux开发工具】vim详解

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 “学如逆水行舟&#xff0…

架构整洁之道-软件架构-测试边界、整洁的嵌入式架构、实现细节

6 软件架构 6.14 测试边界 和程序代码一样,测试代码也是系统的一部分。甚至,测试代码有时在系统架构中的地位还要比其他部分更独特一些。 测试也是一种系统组件。 从架构的角度来讲,所有的测试都是一样的。不论它们是小型的TDD测试&#xff…