性能监控神器Prometheus、Grafana、ELK 在springboot中的运用

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
可观测监控 Prometheus 版,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 【6月更文挑战第27天】在 Spring Boot 应用中,监控和日志管理是确保系统稳定性和性能的重要手段。

在 Spring Boot 应用中,监控和日志管理是确保系统稳定性和性能的重要手段。Prometheus、Grafana 和 ELK(Elasticsearch、Logstash、Kibana)是常用的开源监控和日志管理工具。以下是如何在 Spring Boot 应用中集成和使用这些工具的详细指南。

一、Prometheus 与 Grafana

Prometheus 是一个强大的时间序列数据库和监控系统,Grafana 是一个开源的可视化工具,常与 Prometheus 配合使用。

1.1 在 Spring Boot 中集成 Prometheus

  1. 添加依赖: 在 pom.xml 中添加 micrometerPrometheus 的依赖。
  2. xml复制代码
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
  1. 配置 Prometheus: 在 application.propertiesapplication.yml 文件中启用 Prometheus。
  2. properties复制代码
management.endpoints.web.exposure.include=*
management.metrics.export.prometheus.enabled=true
  1. 启动 Spring Boot 应用: 运行你的 Spring Boot 应用,并确保可以通过 /actuator/prometheus 端点访问 Prometheus 指标。例如,访问 http://localhost:8080/actuator/prometheus

1.2 在 Grafana 中配置 Prometheus 数据源

  1. 安装 Grafana: 按照 Grafana 的文档安装 Grafana。
  2. 添加 Prometheus 数据源
  • 打开 Grafana 并登录。
  • 进入 "Configuration" -> "Data Sources"。
  • 点击 "Add data source",选择 "Prometheus"。
  • 输入 Prometheus 的 URL(如 http://localhost:9090),然后点击 "Save & Test"。
  1. 创建仪表盘
  • 在 Grafana 中创建一个新的仪表盘。
  • 添加面板,并选择 Prometheus 作为数据源。
  • 配置 Prometheus 查询以获取所需的指标数据并进行可视化。

二、ELK(Elasticsearch、Logstash、Kibana)

ELK 是一个强大的日志管理和分析工具链,通常用于集中式日志管理和复杂的查询分析。

2.1 在 Spring Boot 中集成 ELK

  1. 添加依赖: 在 pom.xml 中添加 Spring Boot Starter LogbackELK 相关依赖。
  2. xml复制代码
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>6.6</version>
</dependency>
  1. 配置 Logback: 在 Spring Boot 项目中添加或修改 logback-spring.xml 文件,配置 Logstash appender。
  2. xml复制代码
<configuration>
    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>localhost:5000</destination>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>UTC</timeZone>
                </timestamp>
                <message/>
                <loggerName/>
                <threadName/>
                <logLevel/>
                <logLevelValue/>
                <stackTrace/>
                <mdc/>
                <context/>
                <pattern>
                    <pattern>
                        {
                            "appname": "spring-boot-app",
                            "custom": {
                                "property1": "value1",
                                "property2": "value2"
                            }
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="logstash"/>
    </root>
</configuration>
  1. 配置 Logstash: 创建一个 Logstash 配置文件,如 logstash.conf,用于将日志数据发送到 Elasticsearch。
  2. 复制代码
input {
    tcp {
        port => 5000
        codec => json
    }
}

output {
    elasticsearch {
        hosts => ["http://localhost:9200"]
        index => "spring-boot-logs-%{+YYYY.MM.dd}"
    }
}
  1. 启动 Logstash 和 Elasticsearch: 按照官方文档安装并启动 Logstash 和 Elasticsearch,然后使用 logstash -f logstash.conf 启动 Logstash。

2.2 在 Kibana 中配置日志可视化

  1. 安装 Kibana: 按照 Kibana 的官方文档安装并启动 Kibana。
  2. 配置 Elasticsearch 数据源
  • 打开 Kibana 并登录。
  • 在 "Management" -> "Index Patterns" 中,创建一个新的索引模式,如 spring-boot-logs-*
  1. 创建可视化和仪表盘
  • 在 "Discover" 中查看日志数据。
  • 使用 "Visualize" 创建各种图表和图形。
  • 通过 "Dashboard" 将这些图表和图形组合到一个仪表盘中,实现日志数据的可视化展示。

总结

通过集成 Prometheus、Grafana 和 ELK,您可以实现对 Spring Boot 应用的全面监控和日志管理:

  • Prometheus 与 Grafana:主要用于应用性能监控、系统指标收集和可视化。
  • ELK:主要用于集中式日志管理、查询和分析。

这些工具的结合使用,可以显著提升系统的可观测性,帮助快速定位和解决问题,确保系统的稳定性和性能。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
9天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
64 3
|
10天前
|
Prometheus 监控 Cloud Native
基于Docker安装Grafana和Prometheus
Grafana 是一款用 Go 语言开发的开源数据可视化工具,支持数据监控和统计,并具备告警功能。通过 Docker 部署 Grafana 和 Prometheus,可实现系统数据的采集、展示和告警。默认登录用户名和密码均为 admin。配置 Prometheus 数据源后,可导入主机监控模板(ID 8919)进行数据展示。
44 2
|
8天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
47 0
|
3月前
|
Prometheus 监控 Cloud Native
自定义grafana_table(数据源Prometheus)
综上所述,自定义 Grafana 表格并将 Prometheus 作为数据源的关键是理解 PromQL 的查询机制、熟悉 Grafana 面板的配置选项,并利用 Grafana 强大的转换和自定义功能使数据展示更为直观和有洞见性。随着对这些工具更深入的了解,您将可以创建出更高级的监控仪表盘,以支持复杂的业务监控需求。
256 1
|
3月前
|
Prometheus 监控 Cloud Native
prometheus学习笔记之Grafana安装与配置
prometheus学习笔记之Grafana安装与配置
|
5月前
|
Prometheus 监控 Cloud Native
基于Prometheus和Grafana的监控平台 - 环境搭建
基于Prometheus和Grafana的监控平台 - 环境搭建
|
3月前
|
存储 Prometheus 监控
Grafana 与 Prometheus 集成:打造高效监控系统
【8月更文第29天】在现代软件开发和运维领域,监控系统已成为不可或缺的一部分。Prometheus 和 Grafana 作为两个非常流行且互补的开源工具,可以协同工作来构建强大的实时监控解决方案。Prometheus 负责收集和存储时间序列数据,而 Grafana 则提供直观的数据可视化功能。本文将详细介绍如何集成这两个工具,构建一个高效、灵活的监控系统。
370 1
|
3月前
|
Prometheus 监控 Cloud Native
Spring Boot 性能护航!Prometheus、Grafana、ELK 组合拳,点燃数字化时代应用稳定之火
【8月更文挑战第29天】在现代软件开发中,保证应用性能与稳定至关重要。Spring Boot 作为流行的 Java 框架,结合 Prometheus、Grafana 和 ELK 可显著提升监控与分析能力。Prometheus 负责收集时间序列数据,Grafana 将数据可视化,而 ELK (Elasticsearch、Logstash、Kibana)则管理并分析应用日志。通过具体实例演示了如何在 Spring Boot 应用中集成这些工具:配置 Prometheus 获取度量信息、Grafana 显示结果及 ELK 分析日志,从而帮助开发者快速定位问题,确保应用稳定高效运行。
103 1
|
3月前
|
Prometheus Kubernetes 监控
Kubernetes(K8S) 监控 Prometheus + Grafana
Kubernetes(K8S) 监控 Prometheus + Grafana
229 2
|
3月前
|
Prometheus 监控 Cloud Native
在Linux中,如何使用Grafana和Prometheus进行网络监控和可视化?
在Linux中,如何使用Grafana和Prometheus进行网络监控和可视化?