首页 Java java教程 Java 中的 Prometheus 和 Grafana 入门

Java 中的 Prometheus 和 Grafana 入门

Nov 22, 2024 am 12:58 AM

监控是应用程序性能管理的一个重要方面。随着应用程序规模的扩大,确保它们平稳运行并持续跟踪系统运行状况变得势在必行。在微服务、分布式系统和云原生应用程序中,监控工具不仅仅是一个附加组件,而且是基础设施的关键部分。

用于监控现代系统的两种最流行的工具是 Prometheus 和 Grafana。这些工具通常用于收集、存储和可视化指标,帮助开发人员和运营团队检测问题、分析性能并保持系统高效运行。

为什么我们需要监控?

监控对于在问题影响用户之前识别问题至关重要。无论您使用的是基于 Java 的后端、复杂的微服务环境还是任何其他系统,持续监控都可以提供以下见解:

  • 应用程序性能:
    跟踪关键性能指标,例如响应时间、请求和错误率。

  • 系统健康状况:
    监控服务器运行状况、CPU 使用情况、内存使用情况和磁盘空间,以确保基础设施以最佳状态运行。

  • 警报:
    为关键指标设置阈值和警报,以便在出现问题时通知您。

  • 容量规划:
    收集和分析历史数据可以帮助您规划应用程序的扩展。

Prometheus 和 Grafana 提供强大的解决方案来监控、可视化和分析系统和应用程序中的数据。

Getting Started with Prometheus and Grafana in Java

Grafana 和 Prometheus 简介

普罗米修斯
Prometheus 是一个开源监控和警报工具包,旨在提高可靠性和可扩展性。它专注于采集时序数据,支持多维数据采集,可以进行强大的查询和分析。 Prometheus 通过 HTTP 端点从目标收集指标并将其存储在时间序列数据库中。然后可以使用 Prometheus 的查询语言 PromQL 查询这些指标。

格拉法纳
Grafana 是一个用于监控和可观察性的开源平台。它允许用户可视化来自多个来源的时间序列数据,包括 Prometheus。 Grafana 能够创建仪表板、设置警报以及与各种数据源集成,这使其成为最流行的指标可视化工具之一。

Prometheus 共同收集指标,而 Grafana 以交互且具有视觉吸引力的方式显示它们。

在 Docker 中运行 Prometheus

在 Docker 中运行 Prometheus 和 Grafana 是一种简单有效的快速搭建监控环境的方法。让我们从在 Docker 中运行 Prometheus 开始。

第 1 步:在 Docker 中运行 Prometheus
您可以使用以下命令将 Prometheus 作为容器运行:

docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus
登录后复制
登录后复制

此命令将:

  • 启动一个Prometheus容器。
  • 将本地端口9090映射到容器的端口9090
  • 使用 Docker Hub 上的官方 Prometheus Docker 镜像。 您可以通过打开浏览器并导航到 http://localhost:9090/ 来验证 Prometheus 是否正在运行。

第 2 步:配置 Prometheus
如果需要将 Prometheus 配置为从特定端点(例如 Java 应用程序)抓取指标,则必须调整 Prometheus 配置文件。通过将其安装到容器中,您可以使用自定义的 prometheus.yml 文件运行 Prometheus。这是一个例子:

docker run \
    -p 9090:9090 \
    -v /prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus
登录后复制
登录后复制

这会将本地 prometheus.yml 文件挂载到容器中。启动 Prometheus 后,您可以访问 http://localhost:9090/ 访问 Prometheus 仪表板。

Getting Started with Prometheus and Grafana in Java

在 Docker 中运行 Grafana

现在 Prometheus 正在运行,添加 Grafana 来可视化数据是时候了。

第 3 步:在 Docker 中运行 Grafana
Grafana 通过 Docker 部署起来很简单。运行以下命令启动 Grafana 容器:

在 Docker 中运行 Grafana

docker run -d -p 3000:3000 grafana/grafana-enterprise

登录后复制
登录后复制

Grafana 运行后,您可以通过 http://localhost:3000/login 访问 Web UI。默认登录凭据是:

  • 用户名:admin
  • 密码:admin

Getting Started with Prometheus and Grafana in Java

第 4 步:连接 Prometheus 和 Grafana
现在 Prometheus 和 Grafana 都在运行,下一步就是连接它们。 Grafana 需要知道从哪里获取指标。以下是如何在 Grafana 中添加 Prometheus 作为数据源:

  1. 登录Grafana
  2. 点击左侧边栏的齿轮图标打开配置菜单。
  3. 选择数据源
  4. 点击添加数据源
  5. 选择Prometheus作为数据源类型。
  6. HTTP 部分中,设置您的 Prometheus 实例的 URL(例如,http://172.0.0.1:9090)。
  7. 点击保存并测试以确保Grafana能够成功连接到Prometheus。

创建示例 Java 项目

让我们创建一个简单的基于 Java 的项目,向 Prometheus 公开指标。我们将使用 Micrometer,这是一个基于 JVM 的应用程序的指标收集外观,它可以轻松地与 Prometheus 集成。

第 5 步:创建 Java 应用程序

将必要的依赖项添加到您的 pom.xml 文件中:
连接一切。

docker run --name prometheus -d -p 127.0.0.1:9090:9090 prom/prometheus
登录后复制
登录后复制

然后,在您的 Java 应用程序中,公开 Prometheus 可以抓取的端点。例如:

docker run \
    -p 9090:9090 \
    -v /prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus
登录后复制
登录后复制

此设置创建 Prometheus 可以抓取的端点/指标。它公开了 Micrometer 收集的指标,并以 Prometheus 格式提供。

第 6 步:向 Prometheus 公开指标
现在 Java 应用程序正在收集指标,我们需要告诉 Prometheus 从您的应用程序中抓取 /metrics 端点。更新您的 prometheus.yml 配置文件以包含目标:

docker run -d -p 3000:3000 grafana/grafana-enterprise

登录后复制
登录后复制

如果在同一台计算机上运行,​​请替换为 IP 地址或本地主机。 Prometheus 现在将从您的 Java 应用程序收集指标。

Getting Started with Prometheus and Grafana in Java

连接一切

此时,您已经:

  • Prometheus 从您的 Java 应用程序中抓取指标。
  • Grafana 设置为可视化工具。

第 7 步:在 Grafana 中创建仪表板
要在 Grafana 中可视化数据:

  1. 转到 Grafana 中的 仪表板 选项卡。
  2. 点击新建仪表板
  3. 添加面板并选择Prometheus作为数据源。
  4. 编写 PromQL 查询来检索指标,例如 http_requests_total.

您现在可以构建一个包含各种面板的仪表板,显示请求计数、响应时间和错误率等指标。

Getting Started with Prometheus and Grafana in Java

监控对于维持高可用性和性能至关重要。借助 Prometheus 和 Grafana 等工具,您可以轻松为 Java 应用程序设置高效的监控解决方案。

以上是Java 中的 Prometheus 和 Grafana 入门的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

公司安全软件导致应用无法运行?如何排查和解决? 公司安全软件导致应用无法运行?如何排查和解决? Apr 19, 2025 pm 04:51 PM

公司安全软件导致部分应用无法正常运行的排查与解决方法许多公司为了保障内部网络安全,会部署安全软件。...

如何使用MapStruct简化系统对接中的字段映射问题? 如何使用MapStruct简化系统对接中的字段映射问题? Apr 19, 2025 pm 06:21 PM

系统对接中的字段映射处理在进行系统对接时,常常会遇到一个棘手的问题:如何将A系统的接口字段有效地映�...

如何优雅地获取实体类变量名构建数据库查询条件? 如何优雅地获取实体类变量名构建数据库查询条件? Apr 19, 2025 pm 11:42 PM

在使用MyBatis-Plus或其他ORM框架进行数据库操作时,经常需要根据实体类的属性名构造查询条件。如果每次都手动...

如何将姓名转换为数字以实现排序并保持群组中的一致性? 如何将姓名转换为数字以实现排序并保持群组中的一致性? Apr 19, 2025 pm 11:30 PM

将姓名转换为数字以实现排序的解决方案在许多应用场景中,用户可能需要在群组中进行排序,尤其是在一个用...

IntelliJ IDEA是如何在不输出日志的情况下识别Spring Boot项目的端口号的? IntelliJ IDEA是如何在不输出日志的情况下识别Spring Boot项目的端口号的? Apr 19, 2025 pm 11:45 PM

在使用IntelliJIDEAUltimate版本启动Spring...

Java对象如何安全地转换为数组? Java对象如何安全地转换为数组? Apr 19, 2025 pm 11:33 PM

Java对象与数组的转换:深入探讨强制类型转换的风险与正确方法很多Java初学者会遇到将一个对象转换成数组的�...

电商平台SKU和SPU数据库设计:如何兼顾用户自定义属性和无属性商品? 电商平台SKU和SPU数据库设计:如何兼顾用户自定义属性和无属性商品? Apr 19, 2025 pm 11:27 PM

电商平台SKU和SPU表设计详解本文将探讨电商平台中SKU和SPU的数据库设计问题,特别是如何处理用户自定义销售属...

使用TKMyBatis进行数据库查询时,如何优雅地获取实体类变量名构建查询条件? 使用TKMyBatis进行数据库查询时,如何优雅地获取实体类变量名构建查询条件? Apr 19, 2025 pm 09:51 PM

在使用TKMyBatis进行数据库查询时,如何优雅地获取实体类变量名以构建查询条件,是一个常见的难题。本文将针...

See all articles