当前位置: 首页 > news >正文

OpenTelemetry日志采集和链路跟踪部署与问题解决文档

OpenTelemetry日志采集和链路跟踪部署与问题解决文档

目录

  1. 系统架构概述
  2. 环境准备
  3. 部署步骤
  4. Jaeger + Elasticsearch 链路追踪集成
  5. Elasticsearch索引架构深度解析
  6. Prometheus Push 模式 Metrics 收集
  7. 问题排查与解决
  8. 验证与测试
  9. 使用指南
  10. 运维工具集
  11. 常见问题FAQ
  12. 维护建议

系统架构概述

技术栈

  • 应用程序: Spring Boot 3.1.5 + Java 17
  • 链路跟踪: OpenTelemetry Java Agent 1.13.1
  • 数据收集: OpenTelemetry Collector 0.135.0
  • 数据存储:
    • Elasticsearch 8.14.3 (Logs + Traces存储)
    • Prometheus v3.5.0 (Metrics)
    • Jaeger All-in-One (链路追踪UI + ES存储后端)
  • 可视化:
    • Jaeger UI (链路追踪可视化)
    • Prometheus UI (指标监控)
  • 运行环境: Windows 11 + Docker Desktop

数据流架构

┌─────────────────┐    OTLP/gRPC     ┌─────────────────┐
│  Spring Boot    │─────────────────→│  OpenTelemetry  │
│  Application    │   localhost:4317 │    Collector    │
│  (Port: 9013)   │                  │   (Docker)      │
└─────────────────┘                  └─────────────────┘│┌──────────────────┼──────────────────┐│                  │                  │▼                  ▼                  ▼┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐│   Jaeger UI     │    │  Elasticsearch  │    │   Prometheus    ││ (localhost:16686│    │ (192.168.3.4:9200)│    │  (localhost:9090││   Traces可视化   │    │   Logs存储      │     │   Metrics存储   │└─────────────────┘    └─────────────────┘    └─────────────────┘│                        ▲                     ▲│                        │                     │OTLP/gRPC (4319)            存储Traces               Remote Write API│                        │▼                        │┌─────────────────┐                ││     Jaeger      │────────────────┘│   All-in-One    │    ES Client API│ OTLP接收+ES存储 │└─────────────────┘

Elasticsearch索引架构图

Elasticsearch 8.14.3
├── 日志数据流 (自动创建)
│   ├── logs-generic.otel-default
│   │   ├── 索引模板: "logs" (内置,优先级100)
│   │   ├── 组件模板: logs@mappings + logs@settings + ecs@mappings
│   │   └── ILM策略: "logs" (自动关联)
│   └── 索引: .ds-logs-generic.otel-default-2025.09.18-000001
│
├── 链路数据流 (手动创建)
│   ├── traces-generic.otel-default
│   │   ├── 索引模板: "traces-generic.otel" (手动,优先级100)
│   │   ├── 组件模板: otel-traces-mappings (手动)
│   │   └── ILM策略: "logs" (手动配置)
│   └── 索引: .ds-traces-generic.otel-default-2025.09.19-000001
│
└── 监控数据流 (专用模板)├── metrics-generic.otel-default│   ├── 索引模板: "metrics-generic.otel" (专用,优先级200) ✅│   ├── 组件模板: otel-metrics-mappings (专用嵌套结构) ✅│   └── ILM策略: "logs" (手动配置)└── 索引: .ds-metrics-generic.otel-default-2025.09.19-000001

环境准备

1. 软件依赖

  • Docker Desktop (已安装)
  • Java 17 JDK
  • OpenTelemetry Java Agent JAR包

2. 目录结构

D:/soft/
├── opentelemetry-javaagent.jar           # OpenTelemetry Java Agent
├── springboot3.jar                       # Spring Boot应用JAR包
└── otelcol-otlp_0.132.2_windows_amd64/└── otelcol-config.yml                # Collector配置文件

部署步骤

1. Elasticsearch部署

# 拉取并启动Elasticsearch容器
docker run -d \--name elasticsearch \-p 9200:9200 \-p 9300:9300 \-e "discovery.type=single-node" \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \docker.elastic.co/elasticsearch/elasticsearch:8.14.3

2. OpenTelemetry Collector配置

配置文件 (otelcol-config.yml)
receivers:otlp:protocols:grpc:endpoint: 0.0.0.0:4317http:endpoint: 0.0.0.0:4318cors:allowed_origins:- "*"exporters:elasticsearch/logs:endpoints: ["https://192.168.3.4:9200"]tls:insecure: falseinsecure_skip_verify: truemapping:mode: otelauth:authenticator: basicauthnum_workers: 4retry:enabled: trueinitial_interval: 1smax_interval: 30selasticsearch/traces:endpoints: ["https://192.168.3.4:9200"]tls:insecure: falseinsecure_skip_verify: truemapping:mode: otelauth:authenticator: basicauthnum_workers: 4retry:enabled: trueinitial_interval: 1smax_interval: 30selasticsearch/metrics:endpoints: ["https://192.168.3.4:9200"]tls:insecure: falseinsecure_skip_verify: truemapping:mode: otelauth:authenticator: basicauthnum_workers: 4retry:enabled: trueinitial_interval: 1smax_interval: 30sdebug:verbosity: detailedextensions:basicauth:client_auth:username: elasticpassword: ********processors:batch:timeout: 5ssend_batch_size: 1000send_batch_max_size: 5000memory_limiter:check_interval: 5slimit_percentage: 80spike_limit_percentage: 25resourcedetection:detectors: [ env, system ]timeout: 2stransform:error_mode: ignorelog_statements:- context: logstatements:- set(attributes["@timestamp"], FormatTime(time, "%Y-%m-%dT%H:%M:%S.%LZ"))connectors:spanmetrics:service:extensions: [basicauth]pipelines:traces:receivers: [ otlp ]processors: [ memory_limiter, resourcedetection, transform, batch ]exporters: [ debug, elasticsearch/traces ]metrics:receivers: [ otlp ]processors: [ memory_limiter, resourcedetection, batch ]exporters: [ elasticsearch/metrics ]logs:receivers: [ otlp ]processors: [ memory_limiter, resourcedetection, transform, batch ]exporters: [ elasticsearch/logs ]telemetry:logs:level: infometrics:level: basic
配置说明

Receivers 接收器配置:

  • otlp.protocols.grpc: OTLP gRPC协议,监听4317端口
  • otlp.protocols.http: OTLP HTTP协议,监听4318端口,启用CORS支持

Exporters 导出器配置:

  • Elasticsearch导出器: 配置了logs、traces、metrics三个导出器
    • endpoints: ES集群地址 (HTTP协议)
    • mapping.mode: otel: 使用OpenTelemetry映射模式
    • auth.authenticator: 使用basicauth认证
    • num_workers: 4: 并发工作线程数
    • retry: 重试机制配置
  • Debug导出器: 详细日志输出,用于调试

Extensions 扩展配置:

  • basicauth: ES认证配置,包含用户名和密码

Processors 处理器配置:

  • batch: 批处理配置 (超时5s,批大小1000-5000)
  • memory_limiter: 内存限制 (80%使用率,25%峰值)
  • resourcedetection: 资源检测 (环境和系统信息)
  • transform: 数据转换 (添加@timestamp字段)

Service 服务配置:

  • 三条数据管道: traces、metrics、logs各自独立处理
  • Telemetry: 收集器自身的遥测配置
启动Collector容器
docker run -d \--name collector \-p 4317:4317 \-p 4318:4318 \-p 13133:13133 \-p 55679:55679 \-v "D:/soft/otelcol-otlp_0.132.2_windows_amd64/otelcol-config.yml:/etc/otelcol-contrib/config.yaml" \otel/opentelemetry-collector-contrib:0.135.0

3. Spring Boot应用启动

启动命令
java -Dspring.profiles.active=local \-javaagent:D:/soft/opentelemetry-javaagent.jar \-Dotel.service.name=springboot3 \-Dotel.traces.exporter=otlp \-Dotel.metrics.exporter=otlp \-Dotel.logs.exporter=otlp \-Dotel.exporter.otlp.compression=gzip \-Dotel.exporter.otlp.protocol=grpc \-Dotel.exporter.otlp.endpoint=http://127.0.0.1:4317 \-Dotel.javaagent.logging=application \-jar D:/soft/springboot3.jar

Jaeger + Elasticsearch 链路追踪集成

概述

Jaeger + Elasticsearch 集成方案提供了最佳的链路追踪体验,结合了Jaeger强大的链路分析UI和Elasticsearch可靠的数据存储能力。

架构优势

Java应用 → OpenTelemetry Collector → Jaeger → Elasticsearch↓Jaeger UI (查询展示)
与直接ES存储方案对比
特性 直接ES存储 Jaeger+ES方案
UI体验 需要Kibana查询 🟢 专业链路追踪UI
数据分析 🟡 通用JSON查询 🟢 链路依赖分析
服务拓扑 ❌ 需要手动构建 🟢 自动生成服务依赖图
性能分析 🟡 需要复杂聚合 🟢 内置性能指标
配置复杂度 🔴 需要复杂索引模板 🟢 开箱即用
数据持久化 🟢 ES原生存储 🟢 ES后端存储

完整部署流程

1. 部署Jaeger All-in-One容器

完整启动命令:

http://www.dtcms.com/a/516026.html

相关文章:

  • Rocky 9 单机安装elastic-9.1.5
  • 黑马程序员C++提高编程_3.STL- 常用容器_list容器
  • 免费模板网站word医疗室内设计网站推荐
  • flutter实现web端实现效果
  • 网站建设与管理题目wordpress页面标题标签
  • 在线预览docx、ppt、excel、doc、pdf等文档解决方案
  • !process 命令详解
  • 渗透测试(4):SQL注入示例
  • 三明做网站全球速卖通规则
  • python3编程基础
  • 解决时序违例(四)
  • 容器化安装新玩法:轻量高效一键部署
  • JavaScript函数基础
  • 实木餐桌椅移动网站建设网站建设定制开发
  • 邯郸网站设计价格特色产品推广方案
  • vscode安装、部署和小技巧 记录
  • 简单常见的勒索病毒加密
  • docker基本知识
  • 什么网站服务器好wordpress如何添加目录菜单
  • 12、【Ubuntu】【VSCode】VSCode 断联问题分析:getent 命令(二)
  • RHCSA作业2
  • 如何才能提升视频的「听觉质感」
  • 江西省赣州电子商务网站怎么做seo
  • 视频多的网站建设科技设计公司网站模板下载
  • 1.北京三维天地公司-实施实习生
  • c#笔记之事件
  • [RabbitMQ] 最新版本深度解析:4.0+ 新特性、性能飞跃与生产实践(2025 年更新)
  • 2026 AI可见性:构建未来-proof策略的顶级工具
  • 使用子进程实现 C++ 与 Python 交互式控制台
  • 网站建设登录界面代码上海app开发费用