`
dwj147258
  • 浏览: 192077 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Spring Boot Metrics监控之Prometheus&Grafana

 
阅读更多

1.

 欢迎来到Spring Boot Actuator教程系列的第二部分。在第一部分中,你学习到了spring-boot-actuator模块做了什么,如何配置spring boot应用以及如何与各样的actuator endpoints交互。

在这篇文章中,你将学习sprint boot如何整合外部监控系统Prometheus和图表解决方案Grafana

在这篇文章的末尾,你将在自己本地电脑上建立一个Prometheus和Grafana仪表盘,用来可视化监控Spring Boot应用产生的所有metrics。

Prometheus

Prometheus是一个开源的监控系统,起源于SoundCloud。它由以下几个核心组件构成:

  • 数据爬虫:根据配置的时间定期的通过HTTP抓去metrics数据。
  • time-series 数据库:存储所有的metrics数据。
  • 简单的用户交互接口:可视化、查询和监控所有的metrics。

Grafana

Grafana使你能够把来自不同数据源比如Elasticsearch, Prometheus, Graphite, influxDB等多样的数据以绚丽的图标展示出来。

它也能基于你的metrics数据发出告警。当一个告警状态改变时,它能通知你通过email,slack或者其他途径。

值得注意的是,Prometheus仪表盘也有简单的图标。但是Grafana的图表表现的更好。这也是为什么,在这篇文章中,我们将整合Grafana和Pormetheus来可视化metrics数据。

增加Micrometer Prometheus Registry到你的Spring Boot应用

Spring Boot使用Micrometer,一个应用metrics组件,将actuator metrics整合到外部监控系统中。

它支持很多种监控系统,比如Netflix Atalas, AWS Cloudwatch, Datadog, InfluxData, SignalFx, Graphite, Wavefront和Prometheus等。

为了整合Prometheus,你需要增加micrometer-registry-prometheus依赖:

1
2
3
4
5
<!-- Micrometer Prometheus registry -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

一旦你增加上述的依赖,Spring Boot会自动配置一个PrometheusMeterRegistryCollectorRegistry来收集和输出格式化的metrics数据,使得Prometheus服务器可以爬取。

所有应用的metrics数据是根据一个叫/prometheus的endpoint来设置是否可用。Prometheus服务器可以周期性的爬取这个endpoint来获取metrics数据。

解析Spring Boot Actuator的/prometheus Endpoint

首先,你可以通过actuator endpoint-discovery页面(http://localhost:8080/actuator)来看一下prometheus endpoint。

1
2
3
4
"prometheus": {
"href": "http://127.0.0.1:8080/actuator/prometheus",
"templated": false
}

prometheus endpoint暴露了格式化的metrics数据给Prometheus服务器。你可以通过prometheusendpoint(http://localhost:8080/actuator/prometheus)看到被暴露的metrics数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# HELP jvm_memory_committed_bytes The amount of memory in bytes that is committed for the Java virtual machine to use
# TYPE jvm_memory_committed_bytes gauge
jvm_memory_committed_bytes{area="nonheap",id="Code Cache",} 9830400.0
jvm_memory_committed_bytes{area="nonheap",id="Metaspace",} 4.3032576E7
jvm_memory_committed_bytes{area="nonheap",id="Compressed Class Space",} 6070272.0
jvm_memory_committed_bytes{area="heap",id="PS Eden Space",} 2.63192576E8
jvm_memory_committed_bytes{area="heap",id="PS Survivor Space",} 1.2058624E7
jvm_memory_committed_bytes{area="heap",id="PS Old Gen",} 1.96608E8
# HELP logback_events_total Number of error level events that made it to the logs
# TYPE logback_events_total counter
logback_events_total{level="error",} 0.0
logback_events_total{level="warn",} 0.0
logback_events_total{level="info",} 42.0
logback_events_total{level="debug",} 0.0
logback_events_total{level="trace",} 0.0
...

使用Docker下载和运行Prometheus

下载Prometheus

你可以使用docker pull命令来下载Prometheus docker image。

1
$ docker pull prom/prometheus

一旦这个image被下载下来,你可以使用docker image ls命令来查看本地的image列表:

1
2
3
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
prom/prometheus latest b82ef1f3aa07 5 days ago 119MB

Prometheus配置(prometheus.yml)

接下来,我们需要配置Prometheus来抓取Spring Boot Actuator的/prometheus endpoint中的metrics数据。

创建一个prometheus.yml的文件,填入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
 
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
 
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['127.0.0.1:9090']
 
- job_name: 'spring-actuator'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
static_configs:
- targets: ['HOST_IP:8080']

在Prometheus文档中,上面的配置文件是basic configuration file的扩展。

上面中比较重要的配置项是spring-actuator job中的scrape_configs选项。

metrics_path是Actuator中prometheus endpoint中的路径。targes包含了Spring Boot应用的HOSTPORT

请确保替换HOST_IP为你Spring Boot应用运行的电脑的IP地址。值得注意的是,localhost将不起作用,因为我们将从docker container中连接HOST机器。你必须设置网络IP地址。

使用Docker运行Prometheus

最后,让我们在Docker中运行Prometheus。使用以下命令来启动一个Prometheus服务器。

1
$ docker run -d --name=prometheus -p 9090:9090 -v <PATH_TO_prometheus.yml_FILE>:/etc/prometheus/prometheus.yml prom/prometheus --config.file=/etc/prometheus/prometheus.yml

请确保替换<path_to_prometheus.yml_file>为你在上面创建的Prometheus配置文件的保存的路径。

在运行上述命令之后,docker将在container中启动一个Prometheus服务器。你可以通过以下命令看到所有的container:

1
2
3
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e036eb20b8ad prom/prometheus "/bin/prometheus --c…" 4 minutes ago Up 4 minutes 0.0.0.0:9090->9090/tcp prometheus

在Prometheus仪表盘中可视化Spring Boot Metrics

你可以通过访问http://localhost:9090访问Prometheus仪表盘。你可以通过Prometheus查询表达式来查询metrics。

下面是一些例子:

  • 系统CPU使用

    system-cpu-usage

  • API的延迟响应

    response-latency

你可以从Prometheus官方文档中学习更多的 Prometheus Query Expressions

使用Docker下载和运行Grafana

使用以下命令可以使Docker下载和运行Grafana:

1
$ docker run -d --name=grafana -p 3000:3000 grafana/grafana

上述命令将在Docker Container中开启一个Grafana,并且使用3000端口在主机上提供服务。

你可以使用docker container ls来查看Docker container列表:

1
2
3
4
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
939dd22a7179 quay.io/prometheus/prometheus "/bin/prometheus --c…" 14 minutes ago Up 14 minutes 0.0.0.0:9090->9090/tcp vigilant_neumann
1f94c46bcf5c grafana/grafana "/run.sh" 22 hours ago Up 22 hours 0.0.0.0:3000->3000/tcp grafana

你可以访问http://localhost:3000,并且使用默认的账户名(admin)密码(admin)来登录Grafana。

配置Grafana导入Prometheus中的metrics数据

通过以下几步导入Prometheus中的metrics数据并且在Grafana上可视化。

在Grafana上增加Prometheus数据源

data-source

建立一个仪表盘图表

add-dashboard

添加一个Prometheus查询

add-cpu-usage

默认的可视化

dashboard

你可以在Github上看到完整的Actutator demo应用。

分享到:
评论

相关推荐

    基于Prometheus 和 Grafana 实现springboot应用监控和服务器监控

    本文将详细介绍如何使用Prometheus和Grafana来实现对Spring Boot应用程序和服务器的监控。 首先,Prometheus是一款开源的度量分析系统,它能够收集、存储、查询、警报各种应用和服务的指标数据。Prometheus通过HTTP...

    spring_prometheus_grafana:Spring,Prometheus和Grafana示例

    本示例“spring_prometheus_grafana”将展示如何结合Spring、Prometheus和Grafana来实现一个强大的监控解决方案。 Spring是Java领域的流行框架,广泛用于构建企业级应用。在监控场景中,Spring Boot提供了Actuator...

    SpringBoot2.x整合Prometheus+Grafana【附源码】.doc

    然后,我们需要添加依赖项,包括 `spring-boot-starter-actuator` 和 `micrometer-registry-prometheus`。 在 `application.yml` 文件中,我们需要增加以下配置项: ``` management: metrics: export: ...

    prometheus+springboot监控集成.docx

    本文将详细介绍如何从零开始部署Prometheus服务器,监控SpringBoot工程,并利用Grafana展示监控数据以及设置告警规则。 **一、Prometheus的安装部署** 1. **下载安装Prometheus** Prometheus的官方下载地址是...

    node-exporter-1.3.1.linux-amd64.tar.gz ,基于Prometheus 和 Grafana 实

    通过集成 Prometheus 和 Grafana,我们可以对 Spring Boot 应用以及服务器进行全面的监控,及时发现性能瓶颈和异常情况,提高系统的稳定性。同时,node_exporter 提供了丰富的操作系统层面的监控指标,与 Prometheus...

    spring-boot-metrics:一个简单的Spring Boot执行器

    Spring Boot Metrics 还支持与其他监控系统集成,例如Prometheus和Grafana,这样我们可以在这些平台上可视化和分析收集到的指标。要启用Prometheus支持,只需要在`application.properties`中添加`management.metrics...

    spring boot admin server

    Spring Boot Admin Server 可以与其他监控工具(如 Prometheus、Grafana)结合,提供更强大的监控能力。通过 Micrometer,我们可以将 Spring Boot 应用的 Metrics 发送到这些监控系统,进行长期存储和可视化分析。 ...

    Spring Boot 做性能监控的方法.docx

    此外,还可以与其他监控工具如Prometheus、Grafana集成,实现更高级的可视化监控。 在实际使用中,可能遇到的问题和常见FAQ可能包括如何配置Actuator的安全策略,如何自定义监控指标,以及如何与外部监控系统集成等...

    基于SpringBoot的Promethus+Granfana自定义监控埋点简单案例(全流程)

    ### 基于Spring Boot的Prometheus+Grafana自定义监控埋点简单案例 #### 概述 本文档将详细介绍如何使用Spring Boot构建一个基于Prometheus和Grafana的自定义监控系统。通过本教程,您将学习到如何集成Spring Boot ...

    SpringBoot2.0-Actuator监控参数说明 - 最全文档.docx

    ### Spring Boot 2.0 Actuator 监控参数说明 #### 一、Spring Boot 2.0 ...通过以上步骤,Spring Boot 2.0项目不仅能够充分利用Actuator模块的强大功能,还能够借助于Prometheus实现更加灵活和细致的监控需求。

    Spring Boot Actuator监控的简单使用方法示例代码详解

    Spring Boot Actuator监控的简单使用方法示例代码详解 Spring Boot Actuator是一种监控工具,可以帮助开发者快速实现对Spring Boot应用程序的监控和管理。本文将详细介绍Spring Boot Actuator监控的简单使用方法,...

    spring-boot demo index.html

    - Prometheus和Grafana结合,可以实现详细的度量数据收集和可视化展示。 以上是关于Spring Boot的基础知识和应用实践,通过这个"SpringBoot-Demo"项目,你可以学习如何构建一个简单的Spring Boot应用,并理解其...

    spring-boot-reference.pdf

    Spring Boot Documentation 1. About the Documentation 2. Getting Help 3. First Steps 4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. ...

    prometheus监控springboot应用简单使用介绍详解

    prometheus监控springboot应用简单使用介绍详解 在本文中,我们将介绍如何使用Prometheus监控SpringBoot...使用Prometheus监控SpringBoot应用非常简单,只需要按照上述步骤进行配置和启动Prometheus和Grafana即可。

    Springboot(服务监控)20181207_微服务_微服务;springboot_

    通过添加Prometheus的Spring Boot Starter,我们可以方便地暴露监控指标,并使用Prometheus服务器收集这些数据,进行可视化和警报设置。 3. **Grafana**: Grafana是一个开源的数据可视化平台,可以与Prometheus等...

    详解关于springboot-actuator监控的401无权限访问

    在本篇文章中,我们将详解关于Spring Boot Actuator监控的401无权限访问问题,该问题是Spring Boot开发中常见的错误之一。我们将通过实践演示如何解决该问题,并提供相应的配置参数和解决方案。 什么是Spring Boot ...

Global site tag (gtag.js) - Google Analytics