如何在Kibana中集成端到端追踪?自定义应用请求指标接入方法
集成OpenTelemetry实现全请求端到端追踪并在Kibana可视化
OpenTelemetry完全可以和Elastic Stack(含Kibana)配合,实现全应用请求的端到端追踪与可视化,以下是具体步骤:
1. 应用端集成OpenTelemetry SDK
- 选择对应开发语言的OpenTelemetry SDK,同时安装对应框架的自动 instrumentation 库(比如Java的
opentelemetry-java-instrumentation、Python的opentelemetry-instrumentation-flask),自动捕获HTTP请求、数据库调用、外部API调用等链路数据;如果需要自定义追踪关键业务步骤,可手动创建Span并添加状态码、耗时等属性。 - 配置导出器,将追踪数据发送到OpenTelemetry Collector(推荐)或直接发送到Elastic APM Server。以Python Flask应用为例,核心配置代码如下:
from opentelemetry import trace from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor from opentelemetry.instrumentation.flask import FlaskInstrumentor # 初始化TracerProvider trace.set_tracer_provider(TracerProvider()) tracer = trace.get_tracer(__name__) # 配置OTLP导出器,指向Collector或APM Server地址 otlp_exporter = OTLPSpanExporter(endpoint="http://your-collector-or-apm-server:4318/v1/traces") trace.get_tracer_provider().add_span_processor(BatchSpanProcessor(otlp_exporter)) # 启用Flask自动 instrumentation app = Flask(__name__) FlaskInstrumentor().instrument_app(app)
2. 部署OpenTelemetry Collector(可选但推荐)
- Collector作为数据中转层,支持接收多来源的追踪数据,可对数据进行过滤、聚合等预处理,再统一转发到Elastic APM Server。核心配置示例(
config.yaml):
receivers: otlp: protocols: http: endpoint: "0.0.0.0:4318" processors: batch: exporters: elasticapm: endpoint: "http://your-apm-server:8200" api_key: "your-apm-api-key" service: pipelines: traces: receivers: [otlp] processors: [batch] exporters: [elasticapm]
3. 配置Elastic APM Server
- 确保APM Server已部署并与Elasticsearch连通,追踪数据会被APM Server解析后写入Elasticsearch的
apm*系列索引中。无需额外复杂配置,只要保证Collector或应用SDK的导出地址指向APM Server即可。
4. Kibana中可视化全链路数据
- 默认APM视图:打开Kibana的APM板块,可直接查看服务依赖拓扑、请求链路详情、每个Span的耗时、HTTP状态码等核心指标,支持按请求类型、时间范围筛选。
- 自定义仪表板:
- 在Discover中打开
apm*索引,可查看原始追踪数据,筛选transaction.duration.us(耗时)、http.status_code(状态码)、span.name(步骤名称)等字段。 - 进入Dashboard页面,创建可视化组件:比如用柱状图统计不同状态码的请求占比,折线图展示请求耗时趋势,表格展示单请求的全链路步骤明细。
- 可通过Kibana的追踪ID关联整个请求链路,展示从入口到各下游服务的完整调用流程。
- 在Discover中打开
额外提示
- 确保所有参与链路的服务都集成了OpenTelemetry,才能形成完整的端到端追踪。
- 可在Span中添加自定义属性(如用户ID、业务订单ID),方便后续在Kibana中精准筛选分析。
内容的提问来源于stack exchange,提问作者FishOnAComputer
相关产品推荐
相关产品推荐

