学习使用Opentelemetry python SDK

前言

📢博客主页:程序源⠀-CSDN博客
📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!

一、什么是 OpenTelemetry

OpenTelemetry 由 OpenTracing 和 OpenCensus 项目合并而成,是一组规范、工具、API 和 SDK 的集合。使用它来检测、生成、收集和导出遥测数据(Metrics、Logs 和 Traces),以帮助运维开发人员分析软件的性能和行为。为众多开发人员带来 Metrics、Traces、Logs 的统一标准,三者都有相同的元数据结构,可以轻松实现互相关联。

OpenTelemetry 是一个CNCF 孵化项目。OpenTelemetry 与厂商、平台无关,不提供与可观测性相关的后端服务。可根据用户需求将可观测类数据导出到存储、查询、可视化等不同后端,如 Prometheus、Jaeger 、云厂商服务中。

二、OpenTelemetry 诞生背景、主要特点和功能等相关介绍

参考如下文章:
http://t.csdnimg.cn/cKO5L

http://t.csdnimg.cn/SJK3k

三、使用Opentelemetry python SDK(以Windows为例)

3.1 环境准备

确保电脑上已经安装了Python

3.2 创建工程激活虚拟环境

在一个新目录中打开命令行

执行如下操作:
 

mkdir otel-getting-started
cd otel-getting-started
python3 -m venv venv
.\venv\Scripts\activate

3.3 安装框架和依赖

pip install flask

pip install opentelemetry-distre

opentelemetry-bootstrap-a install

 3.4 创建并启动HTTP服务器

 

目录下新建app.py文件(使用软件为PyCharm),编写代码如下:

from random import randint
from flask import Flask, request
import loggingapp = Flask(__name__)
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)@app.route("/rolldice")
def roll_dice():player = request.args.get('player', default=None, type=str)result = str(roll())if player:logger.warning("%s is rolling the dice: %s", player, result)else:logger.warning("Anonymous player is rolling the dice: %s", result)return resultdef roll():return randint(1, 6)

 在终端中打开目录,启动服务。

 设置环境变量

 $env:OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED="true"

 设置 FLASK_APP 环境变量

 $env:FLASK_APP="app.py"

3.5 执行结果

执行如下代码

opentelemetry-instrument `--traces_exporter console `--metrics_exporter console `--logs_exporter console `--service_name dice-server `flask run -p 8080

访问对应的地址:http://127.0.0.1:8080/rolldice
显示如下:

最后会在控制台中看见span会打印出来

四、配置和运行本地 OpenTelemetry Collector

首先确保电脑上有安装Docker,我的Windows使用的是Docker Desktop

目录结构如下:

在venv目录下新建docker-compose.yal、Dockerfile、otel-collector-config.yaml以及requirements.txt文件

配置并运行本地收集器

otel-collector-config.yaml文件

receivers:otlp:protocols:grpc:endpoint: 0.0.0.0:4317http:endpoint: 0.0.0.0:4318
exporters:logging:logLevel: debug
processors:batch:
service:pipelines:traces:receivers: [otlp]exporters: [logging]processors: [batch]metrics:receivers: [otlp]exporters: [logging]processors: [batch]logs:receivers: [otlp]exporters: [logging]processors: [batch]

requirements.txt文件

Flask==2.2.3
opentelemetry-api==1.16.0
opentelemetry-sdk==1.16.0
opentelemetry-exporter-otlp==1.16.0
opentelemetry-instrumentation-flask==0.37b0
opentelemetry-semantic-conventions==0.37b0
Werkzeug==2.2.3
Jinja2==3.1.2
click==8.1.3
itsdangerous==2.1.2
importlib-metadata==4.8.3
Deprecated==1.2.13
typing-extensions==4.12.1

Dockerfile文件

# 使用 Python 官方镜像作为基础镜像
FROM python:3.9-slim# 设置工作目录
WORKDIR /app# 将 requirements.txt 复制到工作目录
COPY requirements.txt .# 安装 Python 依赖
RUN pip install --no-cache-dir -r requirements.txt# 将当前目录的内容复制到工作目录
COPY . .# 设置环境变量以启用自动化日志记录
ENV OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true# 暴露应用运行的端口
EXPOSE 8080# 启动 Flask 应用
CMD ["opentelemetry-instrument", "--logs_exporter", "otlp", "flask", "run", "-p", "8080"]

安装 OTLP 导出程序包

pip install opentelemetry-exporter-otlp

运行应用程序

docker-compose up --build

由于我们配置了 logging 导出器,可以通过查看 OpenTelemetry Collector 容器的日志来检查跟踪和日志记录数据。

docker-compose logs otel-collector

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

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

相关文章

HQChart小程序教程4-动态控制手势滚动页面

动态控制手势滚动页面 示例效果canvas 控制页面滚动属性步骤1. 使用变量绑定disable-scroll2. 在手势处理函数中控制是否滚动页面 交流QQ群HQChart代码地址 示例效果 canvas 控制页面滚动属性 根据官方文档,disable-scroll 属性是控制画布手势是否可以滚动页面。 h…

《python程序语言设计》2018版第5章第47题绘制随机球,在一个宽120高100的矩形里绘制随机的点

这个题其实并不难。 首先我们利用turtle功能绘制一个矩形,圆心点题里要求的是0,0 这个好办 然后我们根据宽120,高100计算一下。肯定是正负两个值参与其中。 坐标点如下 建立矩形代码如下 turtle.penup() turtle.goto(-60, 50) turtle.pend…

【Redis】什么是Redis缓存 雪崩、穿透、击穿?(一篇文章就够了)

目录 什么是Redis? Redis的正常存储流程? 什么是Redis缓存雪崩? 缓存雪崩 缓存预热 缓存失效时间的随机性 什么是Redis缓存穿透? 缓存穿透 缓存空对象 BloomFilter(布隆过滤器) 什么是Redis缓存击穿&#…

【Python教程】2-函数、逻辑运算与条件判断

在整理自己的笔记的时候发现了当年学习python时候整理的笔记,稍微整理一下,分享出来,方便记录和查看吧。个人觉得如果想简单了解一名语言或者技术,最简单的方式就是通过菜鸟教程去学习一下。今后会从python开始重新更新&#xff0…

TransformerFAM:革新深度学习的新型注意力机制

深度学习领域的一项突破性技术——Transformer架构,已经彻底改变了我们处理序列数据的方式。然而,Transformer在处理长序列数据时面临的二次复杂度问题,限制了其在某些应用场景下的潜力。针对这一挑战,研究者们提出了一种名为Tran…

window wsl2的ubuntu如何配置代理获取docker image

最近两天,docker pull一直下不来docker image, 研究了下可以通过代理pull, 我的是window电脑下的linux子系统wsl2, 装的是ubuntu跑docker. # 创建/etc/systemd/system/docker.service.d路径 sudo mkdir -p /etc/systemd/system/docker.service.d # 创建 http-proxy…

[ue5]建模场景学习笔记(5)——必修内容可交互的地形,交互沙(3)

1.需求分析: 我们现在已经能够让这片地形出现在任意地方,只要角色走在这片地形上,就能够产生痕迹,但这片区域总是需要人工指定,又无法把这片区域无限扩大(显存爆炸),因此尝试使角色无…

【BUG】已解决:Could not find a version that satisfies the requirement tensorflow

已解决:Could not find a version that satisfies the requirement tensorflow 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,同时是武汉城市开发者社区主理人 擅长.net、C…

ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的架构差异

安全之安全(security)博客目录导读 RME系统中的应用处理单元(PE)之间的架构差异可能会带来潜在的安全风险并增加管理软件的复杂性。例如,通过在ID_AA64MMFR0_EL1.PARange中为每个PE设置不同的值来支持不同的物理范围,可能会妨碍内…

Foxmail邮箱的使用方法和功能最全介绍

Foxmail邮箱是我们办公邮箱中比较有代表性和使用性的一款邮箱软件,今天笔者为大家介绍一下Foxmail邮箱的功能和使用方法。 1、首先我们从安装Foxmail邮箱开始 2、点击安装等待安装成功 3、双击打开 ,出现邮箱设置界面输入我们的账号密码,点击…

Here Doucument

一、Here Document概述 1.概念 使用I/0重定向的方式将命令列表提供给交互式程序 标准输入的一种替代品 2.语法格式 命令 <<标记 标记 3.注意事项 标记可以使用任意合法字符&#xff08;通常为EOF&#xff09; 结尾的标记一定要顶格写&#xff0c;前面不能有任何字符…

2024年11个博客初学者建议

博客仍然是在线赚钱的最佳机会之一&#xff0c;因为您可以吸引受众&#xff0c;然后销售产品、服务或赞助。 然而&#xff0c;如果您刚刚开始博客生涯&#xff0c;那么建立一个可以带来数千美元收入的博客的前景可能会让您感到畏惧。 博客领域的竞争比以往更加激烈&#xff0…

代码随想录算法训练营第二十三天

题目&#xff1a;39. 组合总和 这道题目和组合差不多 集合里元素可以用无数次&#xff0c;那么和组合问题的差别 其实仅在于 startIndex上的控制 还有就是重复的如何进行剔除的方法如何实现 其实出现这个问题是因为没有理解startIndex的作用 详细看视频的 4分钟开始的地方…

嵌入式单片机产品微波炉拆解分享

在厨房电器中,微波炉可以说是最具技术含量的电器,它的工作原理不像其他电器那样一眼就能看个明白,于是拆解了一个微波炉,分析内部电路。 微波炉的结构 微波炉由箱体、磁控管、变压器、高压电容器、高压二极管、散热风扇、转盘装置及一系列控制保护开关组成,大多数微波炉还…

npm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/

npm ERR! code E404 npm ERR! 404 Not Found - GET https://registry.npmjs.org/ &#x1f4dc; 智能合约依赖下载失败的解决方案摘要引言正文内容1. 场景描述 &#x1f914;2. 可能原因分析2.1 包不存在或名称错误2.2 网络问题2.3 npm配置错误 3. 解决方案&#x1f6e0;️3.1 …

展会邀请 | 龙智即将亮相2024上海国际嵌入式展,带来安全合规、单一可信数据源、可追溯、高效协同的嵌入式开发解决方案

2024年6月12日至14日&#xff0c;备受全球嵌入式系统产业和社群瞩目的2024上海国际嵌入式展&#xff08;embedded world china 2024&#xff09;即将盛大开幕&#xff0c;龙智将携行业领先的嵌入式开发解决方案亮相 640展位 。 此次参展&#xff0c;龙智将全面展示专为嵌入式行…

csdn上传图片失败解决办法

今天下午写笔记&#xff0c;上传图片的时候总是出现图片上传不成功。查询了下解决方案&#xff1a; C:\Windows\System32\drivers\etc &#xff0c;使用管理员打开hosts文件加入&#xff1a; 49.7.22.7 csdn-img-blog.oss-cn-beijing.aliyuncs.com保存之后&#xff0c;&#x…

csrf与xss差别 别在弄乱了 直接靶场实操pikachu的csrf题 token绕过可以吗???

我们现在来说说这2个之间的关系&#xff0c;因为昨天的我也没有弄清楚这2者的关系&#xff0c;总感觉迷迷糊糊的。 xss这个漏洞是大家并不怎么陌生&#xff0c;导致xss漏洞的产生是服务器没有对用户提交数据过滤不严格&#xff0c;导致浏览器把用户输入的当作js代码返回客户端…

区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现LSTM-ABKDE长短期记忆神经网络自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现LSTM-ABKDE长…

centos7安装字体

1.安装命令 yum install fontconfig #字体库命令 yum install mkfontscale #更新字体命令2.安装字体&#xff08;注意权限问题&#xff09; 进入目录 /usr/share/fonts &#xff0c;该目录是 centos7 字体库的默认安装目录。在该目录下创建一个文件夹 ekp &#xff08;名字…