使用 Micrometer 自定义指标
记录应用专属的指标
使用 Micrometer 自定义指标 是 CoddyKit 上的免费 Spring Boot 4 Microservices & REST APIs 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Spring Boot 4 Microservices & REST APIs 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Spring Boot 4 Microservices & REST APIs 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
Micrometer: The Metrics Facade
Spring Boot uses Micrometer as a vendor-neutral metrics facade — the SLF4J of metrics. You instrument code against one API, then export to Prometheus, Datadog, CloudWatch, and others by adding a registry.
The MeterRegistry
The central component is the MeterRegistry. Boot auto-configures one and registers it as a bean, so you simply inject it wherever you need to record measurements.
@Service
public class OrderService {
private final MeterRegistry registry;
public OrderService(MeterRegistry registry) {
this.registry = registry;
}
}Counters
A Counter records a value that only increases — perfect for counting events like orders placed or errors encountered. Create it once and increment it as events occur.
@Service
public class OrderService {
private final Counter ordersPlaced;
public OrderService(MeterRegistry registry) {
this.ordersPlaced = registry.counter("orders.placed");
}
public void place(Order o) {
// ... business logic
ordersPlaced.increment();
}
}Tags (Dimensions)
Add tags to slice a metric by dimension — channel, region, status. Each unique tag combination is a separate time series, so keep tag cardinality bounded.
registry.counter("orders.placed",
"channel", "web",
"region", "eu")
.increment();Timers
A Timer measures both how often something happens and how long it takes, yielding count, total time, and max. Use it to track operation latency.
Timer timer = registry.timer("orders.process.time");
timer.record(() -> processOrder(order));Recording Time Manually
When you cannot wrap the work in a lambda, capture a Timer.Sample at the start and stop it against a timer at the end.
Timer.Sample sample = Timer.start(registry);
try {
processOrder(order);
} finally {
sample.stop(registry.timer("orders.process.time"));
}Gauges
A Gauge reports a value that can go up or down — a queue depth, active sessions, cache size. You register a function that Micrometer samples on demand.
registry.gauge("orders.queue.size",
orderQueue, q -> q.size());Distribution Summaries
A DistributionSummary tracks the distribution of arbitrary values, such as request payload sizes, providing count, total, and percentiles.
DistributionSummary summary = registry.summary("orders.amount");
summary.record(order.getTotal().doubleValue());Declarative Timing with @Timed
The @Timed annotation times a method without manual instrumentation. It requires a TimedAspect bean to be registered.
@Bean
TimedAspect timedAspect(MeterRegistry registry) {
return new TimedAspect(registry);
}
@Timed(value = "orders.process.time")
public void process(Order o) { /* ... */ }Exporting to Prometheus
Add the Prometheus registry dependency and expose the prometheus endpoint. Micrometer then publishes a scrape endpoint with all your meters.
# dependency: micrometer-registry-prometheus
management:
endpoints:
web:
exposure:
include: prometheus,metrics,health
# scrape: /actuator/prometheusCardinality Discipline
The biggest metrics pitfall is high-cardinality tags. Never tag with user ids, request ids, or raw URLs — each unique value multiplies time series and can overwhelm your backend.
Quick Check
Test your understanding of meter types.
Recap
Micrometer instruments your app.
- Inject the auto-configured
MeterRegistry Counterfor monotonic counts,Timerfor latencyGaugefor fluctuating values,DistributionSummaryfor distributions- Use bounded tags; avoid high cardinality
- Export to Prometheus and friends via a registry dependency
用 AI 导师学习 Java — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 24
- 课程
- 93
常见问题解答
「使用 Micrometer 自定义指标」课时是免费的吗?
是的 — 「使用 Micrometer 自定义指标」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Spring Boot 4 Microservices & REST APIs 课程的其余内容,请升级到 CoddyKit PRO。 Spring Boot 4 Microservices & REST APIs 课程共包含 4 节课。
「使用 Micrometer 自定义指标」这节课中我会学到什么?
记录应用专属的指标 你通过在浏览器中直接运行的动手代码来练习 Spring Boot 4 Microservices & REST APIs,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Spring Boot 4 Microservices & REST APIs 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Spring Boot 4 Microservices & REST APIs 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「使用 Micrometer 自定义指标」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Spring Boot 4 Microservices & REST APIs 课中编写并运行代码吗?
能。每节 Spring Boot 4 Microservices & REST APIs 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 启用 Actuator 端点
- 健康指标
- 使用 Micrometer 自定义指标
- 保护 Actuator 端点