跳到主要内容

OpenTelemetry SDK安装

介绍

OpenTelemetry SDK 是一个开源工具集,用于生成、收集和导出应用程序的遥测数据(如指标、日志和追踪)。它是现代可观测性(Observability)的核心组件,帮助开发者理解系统的运行状态。本指南将带你完成 OpenTelemetry SDK 的安装过程,并提供实际示例。

备注

OpenTelemetry 支持多种编程语言(如 Java、Python、Go 等),本文以 Python 为例,但安装逻辑在其他语言中类似。


安装步骤

1. 前置条件

确保已安装:

  • Python 3.6 或更高版本(可通过 python --version 检查)。
  • 包管理工具 pip(可通过 pip --version 检查)。

2. 安装核心 SDK 包

运行以下命令安装 OpenTelemetry SDK 的核心组件:

bash
pip install opentelemetry-sdk

3. 安装导出器(Exporter)

遥测数据需要导出到后端系统(如 Jaeger、Prometheus)。以下是安装 Jaeger 导出器的示例:

bash
pip install opentelemetry-exporter-jaeger

4. 验证安装

创建一个简单的 Python 脚本 verify_install.py

python
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider

# 初始化 SDK
trace.set_tracer_provider(TracerProvider())
tracer = trace.get_tracer(__name__)

# 生成一个简单的追踪
with tracer.start_as_current_span("verify_install"):
print("OpenTelemetry SDK 安装成功!")

运行脚本后,如果输出 OpenTelemetry SDK 安装成功!,则说明安装正确。


实际案例:追踪 HTTP 请求

以下是一个完整的示例,展示如何用 OpenTelemetry 追踪 Flask 应用的 HTTP 请求:

1. 安装 Flask 集成包

bash
pip install opentelemetry-instrumentation-flask

2. 编写 Flask 应用

python
from flask import Flask
from opentelemetry.instrumentation.flask import FlaskInstrumentor

app = Flask(__name__)
FlaskInstrumentor().instrument_app(app) # 自动追踪 Flask 请求

@app.route("/")
def home():
return "Hello, OpenTelemetry!"

if __name__ == "__main__":
app.run(port=8080)

3. 配置 Jaeger 导出器

修改脚本以将数据发送到 Jaeger:

python
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.jaeger.thrift import JaegerExporter

# 设置 Jaeger 导出器
jaeger_exporter = JaegerExporter(
agent_host_name="localhost",
agent_port=6831,
)
trace.set_tracer_provider(TracerProvider())
trace.get_tracer_provider().add_span_processor(BatchSpanProcessor(jaeger_exporter))

启动应用后,访问 http://localhost:8080,数据将出现在 Jaeger UI(默认地址 http://localhost:16686)中。


总结

通过本文,你学会了:

  1. 安装 OpenTelemetry SDK 及其导出器。
  2. 验证安装是否成功。
  3. 实际集成到 Flask 应用中并导出追踪数据。
扩展练习
  • 尝试将数据导出到其他后端(如 Prometheus)。
  • 为你的数据库操作添加自动追踪(安装 opentelemetry-instrumentation-dbapi)。

附加资源