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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
可观测可视化 Grafana 版,10个用户账号 1个月
可观测监控 Prometheus 版,每月50GB免费额度
简介: 【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可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
|
存储 数据采集 Prometheus
Grafana Prometheus Altermanager 监控系统
Grafana、Prometheus 和 Alertmanager 是一套强大的开源监控系统组合。Prometheus 负责数据采集与存储,Alertmanager 处理告警通知,Grafana 提供可视化界面。本文简要介绍了这套系统的安装配置流程,包括各组件的下载、安装、服务配置及开机自启设置,并提供了访问地址和重启命令。适用于希望快速搭建高效监控平台的用户。
150 20
|
2月前
|
Prometheus 监控 Cloud Native
Prometheus+Grafana监控Linux主机
通过本文的步骤,我们成功地在 Linux 主机上使用 Prometheus 和 Grafana 进行了监控配置。具体包括安装 Prometheus 和 Node Exporter,配置 Grafana 数据源,并导入预设的仪表盘来展示监控数据。通过这种方式,可以轻松实现对 Linux 主机的系统指标监控,帮助及时发现和处理潜在问题。
201 7
|
2月前
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
287 3
|
2月前
|
Prometheus 监控 前端开发
Grafana 安装配置教程,让你的 Prometheus 监控数据变得更美观
《Grafana安装配置教程,让你的Prometheus监控数据变得更美观》简介: Grafana是一个开源的度量分析与可视化工具,支持多种数据源(如Prometheus),提供丰富的可视化功能和警报机制。本文详细介绍了Grafana的安装、汉化方法及模板使用,帮助用户轻松创建美观、灵活的数据面板,并实现数据的协作与共享。通过Docker镜像、配置文件修改或替换前端页面等方式实现汉化,让用户更便捷地使用中文界面。此外,还提供了导入JSON格式模板的具体步骤,方便快速搭建仪表盘。
95 2
|
2月前
|
Prometheus Cloud Native Linux
Prometheus+Grafana新手友好教程:从零开始搭建轻松掌握强大的警报系统
本文介绍了使用 Prometheus 和 Grafana 实现邮件报警的方案,包括三种主要方法:1) 使用 Prometheus 的 Alertmanager 组件;2) 使用 Grafana 的内置告警通知功能;3) 使用第三方告警组件如 OneAlert。同时,详细描述了环境准备、Grafana 安装配置及预警设置的步骤,确保用户能够成功搭建并测试邮件报警功能。通过这些配置,用户可以在系统或应用出现异常时及时收到邮件通知,保障系统的稳定运行。
167 1
|
9月前
|
SQL 运维 监控
关系型数据库性能监控工具
【5月更文挑战第21天】
161 2
|
6月前
|
监控 Java 开发者
揭秘Struts 2性能监控:选对工具与方法,让你的应用跑得更快,赢在起跑线上!
【8月更文挑战第31天】在企业级应用开发中,性能监控对系统的稳定运行至关重要。针对流行的Java EE框架Struts 2,本文探讨了性能监控的工具与方法,包括商用的JProfiler、免费的VisualVM以及Struts 2自带的性能监控插件。通过示例代码展示了如何在实际项目中实施这些监控手段,帮助开发者发现和解决性能瓶颈,确保应用在高并发、高负载环境下稳定运行。选择合适的监控工具需综合考虑项目需求、成本、易用性和可扩展性等因素。
61 0
|
6月前
|
Java 开发者 前端开发
Struts 2、Spring MVC、Play Framework 上演巅峰之战,Web 开发的未来何去何从?
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活配置备受青睐,但开发者常遇配置错误、类型转换失败、标签属性设置不当及异常处理等问题。本文通过实例解析常见难题与解决方案,如配置文件中遗漏`result`元素致页面跳转失败、日期格式不匹配需自定义转换器、`&lt;s:checkbox&gt;`标签缺少`label`属性致显示不全及Action中未捕获异常影响用户体验等,助您有效应对挑战。
121 0
|
6月前
|
SQL 监控 关系型数据库
SQL性能监控与调优工具的神奇之处:如何用最佳实践选择最适合你的那一个,让你的数据库飞起来?
【8月更文挑战第31天】在现代软件开发中,数据库性能监控与调优对应用稳定性至关重要。本文对比了数据库内置工具、第三方工具及云服务工具等几种常用SQL性能监控与调优工具,并通过示例代码展示了如何利用MySQL的EXPLAIN功能分析查询性能。选择最适合的工具需综合考虑功能需求、数据库类型及成本预算等因素。遵循了解工具功能、试用工具及定期维护工具等最佳实践,可帮助开发者更高效地管理和优化数据库性能,迎接未来软件开发中的挑战与机遇。
82 0
|
7月前
|
运维 监控 Java
(十)JVM成神路之线上故障排查、性能监控工具分析及各线上问题排错实战
经过前述九章的JVM知识学习后,咱们对于JVM的整体知识体系已经有了全面的认知。但前面的章节中,更多的是停留在理论上进行阐述,而本章节中则更多的会分析JVM的实战操作。
169 1