英文原文:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/production-ready-metrics.html
GitHub:https://github.com/jijicai/Spring/tree/master/spring-boot
57、度量
Spring Boot Actuator 为 Micrometer 提供了依赖项管理和自动配置,Micrometer 是一种应用程序指标外观,支持许多监视系统,包括:
AppOptics
Atlas
Datadog
Dynatrace
Elastic
Ganglia
Graphite
Humio
Influx
JMX
KairosDB
New Relic
Prometheus
SignalFx
Simple(内存中)
StatsD
Wavefront
要了解更多关于 Micrometer 功能的信息,请参考其参考文档,特别是概念部分。(https://micrometer.io/docs/concepts )
57.1、开始
Spring Boot 自动配置复合 MeterRegistry,并为在类路径上找到的每个受支持的实现向该复合添加一个注册。在运行时类路径中依赖于 micrometer-registry-{system} 就足够让 Spring Boot 配置注册了。
大多数注册都有共同的功能。例如,即使 Micrometer 注册实现位于类路径上,也可以禁用特定注册。例如,要禁用 Datadog:
management.metrics.export.datadog.enabled=false
Spring Boot 还将向 Metrics 类上的全局静态复合注册表添加任何自动配置的注册,除非你明确告诉它不要:
management.metrics.use-global-registry=false
在向注册表注册任何仪表之前,可以注册任意数量的 MeterRegistryCustomizer bean 以进一步配置注册表,例如应用公共标记:
@Bean
MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
return registry -> registry.config().commonTags("region", "us-east-1");
}
你可以通过更详细地说明泛型类型,将定制应用于特定的注册表实现。
@Bean
MeterRegistryCustomizer<GraphiteMeterRegistry> graphiteMetricsNamingConvention() {
return registry -> registry.config().namingConvention(MY_CUSTOM_CONVENTION);
}
设置就绪后,你可以在组件中注入 MeterRegistry 并注册度量:
@Component
public class SampleBean {
private final Counter counter;
public SampleBean(MeterRegistry registry) {
this.counter = registry.counter("received.messages");
}
public void handleMessage(String message) {
this.counter.increment();
// handle message implementation
}
}
Spring Boot 还配置了内置的工具(即 MeterBinder 实现),你可以通过配置或专用的注解标记来控制这些工具。(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/production-ready-metrics.html#production-ready-metrics-meter )
57.2、支持的监控系统
57.2.1、AppOptics
默认情况下,AppOptics 注册表定期将度量值推送到 api.AppOptics.com/v1/measurements。要将度量导出到 SaaS AppOptics,必须提供 API 令牌:
management.metrics.export.appoptics.api-token=YOUR_TOKEN
57.2.2、Atlas
默认情况下,度量将导出到本地计算机上运行的 Atlas。要使用的 Atlas 服务器的位置可以通过以下方式提供:
management.metrics.export.atlas.uri=https://atlas.example.com:7101/api/v1/publish
57.2.3、Datadog
Datadog 注册表定期将度量值推送到 datadoghq。要将度量导出到 Datadog,必须提供 API 密钥:
management.metrics.export.datadog.api-key=YOUR_KEY
你还可以更改将度量发送到 Datadog 的间隔:
management.metrics.export.datadog.step=30s
57.2.4、Dynatrace
Dynatrace 注册表定期将度量值推送到配置的 URI。要将度量导出到 Dynatrace,必须提供 API 令牌、设备 ID和 URI:
management.metrics.export.dynatrace.api-token=YOUR_TOKEN
management.metrics.export.dynatrace.device-id=YOUR_DEVICE_ID
management.metrics.export.dynatrace.uri=YOUR_URI
你还可以更改将度量发送到 Dynatrace 的间隔:
management.metrics.export.dynatrace.step=30s
57.2.5、Elastic
默认情况下,度量将导出到本地计算机上运行的 Elastic。可以使用以下属性提供要使用的 Elastic 服务器的位置:
management.metrics.export.elastic.host=https://elastic.example.com:8086
57.2.6、Ganglia
默认情况下,度量将导出到在本地计算机上运行的 Ganglia。可使用以下方式提供要使用的 Ganglia 服务器主机和端口:
management.metrics.export.ganglia.host=ganglia.example.com
management.metrics.export.ganglia.port=9649
57.2.7、Graphite
默认情况下,度量将导出到在本地计算机上运行的 Graphite。可使用以下方式提供要使用的 Graphite 服务器主机和端口:
management.metrics.export.graphite.host=graphite.example.com
management.metrics.export.graphite.port=9004
Micrometer 提供了一个默认的 HierarchicalNameMapper,用于控制维度仪表 id 如何映射到平面层次名称。
提示:要控制这种行为,请定义你的 GraphiteMeterRegistry 并提供你自己的 HierarchicalNameMapper。提供自动配置的 GraphiteConfig 和 Clock bean,除非你定义自己的:
@Bean
public GraphiteMeterRegistry graphiteMeterRegistry(GraphiteConfig config, Clock clock) {
return new GraphiteMeterRegistry(config, clock, MY_HIERARCHICAL_MAPPER);
}
57.2.8、Humio
默认情况下,Humio 注册表定期将度量值推送到 cloud.Humio.com。要将度量导出到 SaaS Humio,必须提供你的 API token:
management.metrics.export.humio.api-token=YOUR_TOKEN
你还应该配置一个或多个标记,以标识将度量推送到的数据源:
management.metrics.export.humio.tags.alpha=a
management.metrics.export.humio.tags.bravo=b
57.2.9、Influx
默认情况下,度量将导出到在本地计算机上运行的 Influx。可使用以下方式提供要使用的 Influx 服务器的位置:
management.metrics.export.influx.uri=https://influx.example.com:8086
57.2.10、 JMX
Micrometer 提供了到 JMX 的分层映射,主要是作为本地查看度量的廉价和可移植的方式。默认情况下,度量导出到 metrics JMX 域。可使用以下方式提供要使用的域:
management.metrics.export.jmx.domain=com.example.app.metrics
Micrometer 提供了一个默认的 HierarchicalNameMapper,用于控制维度仪表 id 如何映射到平面层次名称。
提示:要控制这种行为,请定义你的 JmxMeterRegistry 并提供你自己的 HierarchicalNameMapper。提供自动配置的 JmxConfig 和 Clock bean,除非你定义自己的:
@Bean
public JmxMeterRegistry jmxMeterRegistry(JmxConfig config, Clock clock) {
return new JmxMeterRegistry(config, clock, MY_HIERARCHICAL_MAPPER);
}
57.2.11、 KairosDB
默认情况下,度量将导出到在本地计算机上运行的 KairosDB。可使用以下方式提供要使用的 KairosDB 服务器的位置:
management.metrics.export.kairos.uri=https://kairosdb.example.com:8080/api/v1/datapoints
57.2.12、 New Relic
New Relic 注册表定期将度量推送到 New Relic。要将度量导出到 New Relic,必须提供 API 密钥和帐户 id:
management.metrics.export.newrelic.api-key=YOUR_KEY
management.metrics.export.newrelic.account-id=YOUR_ACCOUNT_ID
你还可以更改将度量发送到 New Relic 的间隔:
management.metrics.export.newrelic.step=30s
57.2.13、 Prometheus
Prometheus 希望收集或轮询单个应用程序实例来获得度量。Spring Boot 提供了一个在 /actuator/prometheus 上可用的 actuator 端点,以适当的格式呈现 Prometheus scrape。
提示:默认情况下,端点不可用,必须公开,有关更多详细信息,请参阅公开端点。(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/production-ready-endpoints.html#production-ready-endpoints-exposing-endpoints )
下面是要添加到 prometheus.yml 的 scrape_config 示例:
scrape_configs:
- job_name: 'spring'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['HOST:PORT']
57.2.14、 SignalFx
SignalFx 注册表定期将度量推送到 SignalFx。要将度量导出到 SignalFx,必须提供访问 token:
management.metrics.export.signalfx.access-token=YOUR_ACCESS_TOKEN
你还可以更改将度量发送到 SignalFx 的间隔:
management.metrics.export.signalfx.step=30s
57.2.15、 Simple
Micrometer 附带一个简单的内存后端,如果没有配置其他注册表,它将自动用作回退。这允许你查看度量端点中收集了哪些度量。(https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/production-ready-metrics.html#production-ready-metrics-endpoint )
当你使用任何其他可用的后端时,内存中的后端都会自动禁用。也可以显式禁用它:
management.metrics.export.simple.enabled=false
57.2.16、 StatsD
StatsD 注册表急切地将 UDP 上的度量推送到 StatsD 代理。默认情况下,度量将导出到在本地计算机上运行的 StatsD 代理。可使用以下方式提供要使用的 StatsD 代理的主机和端口:
management.metrics.export.statsd.host=statsd.example.com
management.metrics.export.statsd.port=9125
你还可以更改要使用的 StatsD 线路协议(默认为 Datadog):
management.metrics.export.statsd.flavor=etsy
57.2.17、 Wavefront
Wavefront 注册表定期将度量推送到 Wavefront。如果直接将度量导出到 Wavefront,则必须提供 API token:
management.metrics.export.wavefront.api-token=YOUR_API_TOKEN
或者,你可以使用 Wavefront sidecar 或在你的环境中设置的内部代理,将度量数据转发到 Wavefront API 主机:
management.metrics.export.wavefront.uri=proxy://localhost:2878
提示:如果将度量发布到 Wavefront 代理(如文档中所述),则主机必须采用 proxy://HOST:PORT 格式。(https://docs.wavefront.com/proxies_installing.html )
你还可以更改将度量发送到 Wavefront 的间隔:
management.metrics.export.wavefront.step=30s
本文暂时没有评论,来添加一个吧(●'◡'●)