LiteLLM 的 spend log 按 key 记了 token 和来源 IP,放在 Cloudflare Tunnel 后面时 IP 全是集群内地址。改用 pre-call hook 读 CF-Connecting-IP,对外的 key 另加别名和限流。
Posts for: #observability
Spring Boot 4 的 OpenTelemetry 自动配置边界
官方 starter 只管 SDK 和 OTLP 日志 exporter:traces、metrics 还在 micrometer 的两个模块下,Logback appender 仍要手工装三步,profiles 整段落在应用之外。
ClickHouse 里的重复行来自 Kafka Connect 超时重投
同一个业务键在 ClickHouse 里出现两行完全一样的数据,写入时间相差 30 秒到两分钟。前一天吞吐掉到常态零头的十几个小时一行重复都没有,出重复的是第二天吞吐看着正常、Keeper 在途请求涨到几千的那三个小时。
Java 微服务在 K8s 上的运行时基线(2026):镜像、探针、滚动与可观测
Java 25 加 Spring Boot 3.5 的微服务上 Kubernetes,我给自己定了一份运行时基线,覆盖镜像、探针、优雅停机、滚动与回滚、可观测性,每块都同时写现状和差距。
Spring Boot 3.4+ 的结构化日志:5 行配置启用 ECS,用 Fluent API 写出 OpenSearch 可查的字段
Spring Boot 3.4+ 内建了 ECS 结构化日志支持,5 行配置能替掉大部分手写的 logback-spring.xml,再用 SLF4J Fluent API 把字段写成 OpenSearch 查得到、聚得起来的样子。
GitHub 用 eBPF 限制部署脚本的对外网络访问
InfoQ 总结 GitHub Engineering 2026 年 4 月那篇文章:修复系统的部署链路自己依赖着待修的系统,eBPF 挂在部署进程的 cGroup 网络出口上把这条隐性依赖管住,笔记里还过了一遍 eBPF 在 Cloud Native 项目里别的落地点。
Spring Boot 3.5 Tracing:接完之后,PII 和采样怎么管
结合一次 Spring Boot 3.5 tracing 接入:自动配置覆盖范围、自定义埋点、Kafka/Redis/DB 组件接入、采样策略、PII 处理,以及用 ArchUnit 约束常见误用。
Java 日志开发约定:记什么、不记什么、message 与结构化字段怎么写
Java 日志里记什么、不记什么、message 怎么写、结构化字段如何设计;也整理我在 Spring Boot 项目里落地这些约定时的一些取舍。
Homelab OTel 实践:从日志采集到双集群全链路追踪
双集群 K3s Homelab 补齐 OpenTelemetry traces 之后的样子:OTel Collector 收数据,跨集群写进 Tempo,Grafana 联动数据源,各语言 SDK 按同一套约定接入。
Spring Boot 应用的 Metrics 埋点:自动埋点覆盖了什么,什么时候要自己埋(2026)
应用层 Metrics 埋点的边界:自动埋点覆盖到哪、@Observed 怎么用、高低基数字段怎么分、手动 Observation API 什么时候上,以及和 Prometheus、OTel 的关系。埋点 API 是 Micrometer 的抽象层。