09.12生产环境配置

分类: 后端集成 Java Spring Boot OpenTelemetry

生产环境配置

欢迎回到第 9 章的学习。在上一节,我们学习了测试和验证。现在我们要学习生产环境配置,这对于在生产环境中运行可观察性系统非常重要。

本节将学习:采样策略、批处理配置、资源限制、以及错误处理。

采样策略

采样策略的作用是什么? 减少数据量,控制存储和传输成本,降低 Collector 负载,提高系统性能。

采样策略有哪些类型呢?

第一种:固定采样率(traceidratio)。 配置固定的采样率,比如 10%,所有请求按照这个比例采样。简单易用,适合大多数场景。

第二种:基于父级的采样(parentbased_traceidratio)。 根据父 Span 的采样决定,如果父 Span 被采样,子 Span 也被采样,否则不采样。保证链路完整性,适合分布式系统。

第三种:基于条件的采样(自定义)。 根据请求属性决定是否采样,比如只采样错误请求、慢请求。更灵活,但配置复杂。

配置代码:

文件路径:

src/main/resources/application.properties

# fixed sampling rate(10%)
otel.traces.sampler=traceidratio
otel.traces.sampler.arg=0.1

# Or use parent-based sampling (recommended for distributed systems))
# otel.traces.sampler=parentbased_traceidratio
# otel.traces.sampler.arg=0.1

批处理配置

批处理配置的作用是什么? 优化数据导出性能,减少网络调用,提高吞吐量,降低延迟。

批处理参数有哪些呢?

第一个:批次延迟(schedule.delay)。 批次等待时间,比如 5 秒,超过这个时间就导出批次。

第二个:最大队列大小(max.queue.size)。 内存中队列的最大大小,比如 2048,防止内存溢出。

第三个:最大批次大小(max.export.batch.size)。 每个批次的最大 Span 数量,比如 512,控制批次大小。

第四个:导出超时(export.timeout)。 导出操作的超时时间,比如 30 秒,防止长时间阻塞。

配置代码:

文件路径:

src/main/resources/application.properties

# batch processing configuration
otel.bsp.schedule.delay=5000
otel.bsp.max.queue.size=2048
otel.bsp.max.export.batch.size=512
otel.bsp.export.timeout=30000

资源限制

资源限制的作用是什么? 防止可观察性系统占用过多资源,影响应用性能,确保系统稳定性。

资源限制包括哪些方面呢?

第一个:内存限制。 配置内存批处理大小、内存限制参数,配置 JVM 堆内存,防止内存溢出。

第二个:CPU 限制。 控制 CPU 使用率,避免占用过多 CPU,影响业务逻辑。

第三个:网络限制。 控制网络带宽使用,避免网络拥塞,影响数据传输。

配置代码:

文件路径:

src/main/resources/application.properties

# Resource limit configuration
otel.bsp.memory.limit=64

JVM 启动参数(在启动脚本中):

java -Xmx512m -Xms256m \
  -XX:MaxMetaspaceSize=256m \
  -jar order-service.jar

错误处理

错误处理的作用是什么? 处理临时故障,提高系统可靠性,确保应用在 Collector 故障时仍能正常运行。

错误处理机制有哪些呢?

第一个:重试策略。 配置重试次数、重试间隔,使用指数退避,处理临时网络故障。

第二个:降级处理。 在 Collector 不可用时,继续运行应用,丢弃或缓存数据,避免影响业务。

第三个:错误日志。 记录错误信息,便于排查问题,配置日志级别,控制日志量。

配置代码:

文件路径:

src/main/resources/application.properties

# error handling configuration - Retry Strategy
otel.exporter.otlp.retry.enabled=true
otel.exporter.otlp.retry.max.attempts=5
otel.exporter.otlp.retry.initial.interval=1000
otel.exporter.otlp.retry.max.interval=5000

# error log configuration
logging.level.io.opentelemetry=WARN
logging.level.io.opentelemetry.exporter=ERROR

本节小结

在本节中,我们学习了生产环境配置:

第一个是采样策略。 固定采样率、基于父级的采样、基于条件的采样,减少数据量,控制成本。

第二个是批处理配置。 批次延迟、最大队列大小、最大批次大小、导出超时,优化性能,提高吞吐量。

第三个是资源限制。 内存限制、CPU 限制、网络限制,防止资源耗尽,确保系统稳定性。

第四个是错误处理。 重试策略、降级处理、错误日志,提高可靠性,确保系统正常运行。

生产环境配置流程: 采样策略 → 批处理配置 → 资源限制 → 错误处理 → 稳定运行。

这就是生产环境配置。通过合理的配置,我们可以在生产环境中稳定运行可观察性系统。

在下一节,我们将学习微服务间追踪传播。学习如何在微服务之间传播追踪上下文。