关于 otel-flask-style
为 Flask 应用添加 OpenTelemetry 可观测性的风格指南,说明原生 Flask 插桩、初始化时机、模块级遥测对象、日志桥接及 LLM 令牌覆盖。
主要功能
- 01使用原生 Flask 插桩
- 02在接收流量前初始化
- 03在模块级创建追踪器和计量器
- 04OTLP 日志桥接要求
- 05LLM 令牌覆盖指南
适用场景
- 01为 Flask 应用配置可观测性
- 02为辅助业务操作添加跨度
- 03转发具有关联信息的 Python 日志
- 04跟踪 LLM 输入和输出令牌
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ superloglabs/ skills --skill otel-flask-style安装后在 Claude Code 中输入/otel-flask-style确认已加载。
详细介绍
OTel Flask 风格
使用原生 Flask 插桩。不要仅仅为了创建 span 而用手动中间件替代请求处理。
from flask import Flask
from opentelemetry.instrumentation.flask import FlaskInstrumentor
def init_observability(app: Flask) -> bool:
...
FlaskInstrumentor().instrument_app(app)
return True
将 FlaskInstrumentor().instrument_app(app) 与其余可观测性设置放在一起,让引导流程易于理解。如果注册流程仍在进行,生成的令牌尚未被认领,也可以先初始化 providers;在浏览器流程完成之前,数据接收端可能会拒绝导出。
入口点
在处理用户流量之前完成初始化。
app = Flask(__name__)
init_observability(app)
有界工作
对自动插桩的 HTTP span 无法追踪到的辅助函数,使用模块级 OTel 对象和装饰器。
tracer = trace.get_tracer("mugline.api")
meter = metrics.get_meter("mugline.api")
@tracer.start_as_current_span("mug.recommend")
def recommend_mug(*, tenant_id: str, preference: str) -> dict[str, str]:
span = trace.get_current_span()
span.set_attribute("tenant.id", tenant_id)
...
日志
对于通过 OTLP 转发的标准库日志,请配置以下所有项:
LoggerProviderset_logger_provider(logger_provider)OTLPLogExporterLoggingHandlerLoggingInstrumentor().instrument(...)
LLM 调用
LLM 路由需要覆盖令牌用量:
llm.tokens.inputllm.tokens.output
仅当 provider 插桩无法捕获令牌用量时,才为显式令牌计数器添加租户、provider、模型、用例、调用位置和结果标签。不要在应用侧添加 LLM 成本指标或定价表;Superlog 会根据 provider、模型和令牌数据集中估算成本。
评论
支持 Markdown