十七、监控与度量-Prometheus/Grafana/Actuator

news2024/12/27 7:09:58

文章目录

  • 前言
  • 一、Spring Boot Actuator
    • 1. 简介
    • 2. 添加依赖
    • 2. 开启端点
    • 3. 暴露端点
    • 4. 总结
  • 二、Prometheus
    • 1. 简介
    • 2. Prometheus客户端
    • 3. Prometheus服务端
    • 4. 总结
  • 三、Grafana
    • 1. 简介
    • 2. Grafana安装
    • 3. Grafana配置


前言

系统监控

在企业级的应用中,系统监控至关重要,可以帮助我们预防故障,预测变化趋势,在达到阈值的时候报警,为排查生产问题提供更多的信息。
同时也能看到系统问题,早做优化,避免更大的事故发生。


一、Spring Boot Actuator

1. 简介

  Spring Boot包含了很多附加功能帮助我们监控和管理我们的应用,可以使用HTTP或者JMX等方式通过端点(endpoint)获取应用的健康状态以及其他指标收集

  Spring Boot Actuator模块就是Spring Boot提供的集成了上面所述的监控和管理的功能。像Spring Boot其他模块一样开箱即用,非常方便,通过Actuator就可以使用HTTP或者JMX来监控我们的应用。

JMX(Java Management Extensions):Java平台的管理和监控接口,任何程序只要按JMX规范访问这个接口,就可以获取所有管理与监控信息。

下面简单介绍Spring Boot Actuator是如何使用的,具体的使用方法见官方文档。

2. 添加依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>

2. 开启端点

  Spring Boot中监控应用或者与应用交互都是通过端点(endpoint)进行的,Spring Boot提供了非常多的原生端点,比如health,可以帮助我们监控应用的监控状态(是否可用),同时可以添加自定义的端点。每个端点都可以单独设置是否开启,并通过HTTP或者JMX暴露给外部系统。如果选择HTTP方式,则URL的前缀一般是/actuator,比如health的url地址就是/actuator/health

默认情况下,除了‌shutdown‌(让系统优雅的关闭) ,其他端点默认是开启的。我们可以通过 ‌management.endpoint.<id>.enabled‌ 设置某个端口的状态,比如开启shutdown端口。

management.endpoint.shutdown.enabled=true
# shutdown:开启actuator的停机组件,可以通过curl -X POST /actuator/shutdown来关闭服务。
# health:开启actuator的健康检测组件。
# metrics,prometheus:开启监控组件
management:
  server:
    # 采用与web服务不同的端口,该端口不暴露到K8S集群外部
    port: 8888
    # 开启优雅停机
    shutdown: graceful
  endpoint:
    shutdown:
      # 开启actuator的停机端口。
      enabled: true
  health:
    defaults:
      # 开启actuator的健康检测判定,默认为所有引入的组件(如redis)都作为健康与否的判定依据。
      enabled: true
    redis:
      # 关闭actuator的特定组件健康检测判定,如redis如果健康情况不影响服务的运行,可以关闭。
      enabled: false
  metrics:
    tags:
      # 配置监控的tag,指向服务名称。
      application: ${spring.application.name}

3. 暴露端点

  开启端点后还必须暴露端点给HTTP或者JMX才能正常使用,但是端口可能包含一些敏感的数据,所以Spring Boot的原生端口默认只支持HTTP或者JMX。

如果要改变端口暴露的方式,使用 ‌include‌ 或者 ‌exclude‌ 属性,比如:

management.endpoints.jmx.exposure.include=*
management.endpoints.web.exposure.include=health,info,prometheus
management:
  endpoints:
    web:
      # 设置是否暴露端点 默认只有health和info可见
      exposure:
        include: shutdown,health,metrics,prometheus
        # GET /actuator/gateway/routes 查看路由清单
        # GET /actuator/gateway/routes/{id} 查看特定Id路由详情
        # GET /actuator/gateway/globalfilters
        # GET /actuator/gateway/routefilters
        # POST /actuator/gateway/refresh 刷新路由缓存
        # POST /actuator/gateway/routes/{id} 增加路由
        # DELETE /actuator/gateway/routes/{id} 删除路由
        # GET /actuator/health 查看健康状态
        # GET /actuator/metrics 查看指标列表
        # GET /actuator/metrics/{metricsName} 查看指标

4. 总结

  到目前为止,Spring Boot Actuator就配置好了,除了上述端点的开启和暴露方式,还有HTTP,JMX,日志,指标(Metrics),权限,HTTP追踪,进程监控等功能,如果想了解更多,可以去官网进一步学习。

二、Prometheus

1. 简介

  中文名普罗米修斯,是新一代的监控系统,与其他监控系统相比,具有易于管理,监控服务的内部运行状态,强大的数据模型,强大的查询语言PromQL,高效,可扩展,易于集成,可视化,开放性等众多功能。详细内容可见官网。

2. Prometheus客户端

  在Spring Boot中,原生支持了prometheus端口,只需要通过如下配置,就可集成Prometheus,暴露给HTTP。
还需要配置 metrics ,因为如果没有这个参数,很多报表不能正常显示。

management:
  endpoints:
    web:
      exposure:
        include: "prometheus"
  metrics:
    tags:
      application: ${spring.application.name}

这样通过,Spring Boot Actuator配置,开启和暴露prometheus和metrics端点,就把Prometheus的客户端配置好了。

3. Prometheus服务端

  服务端,这里我们使用docker方式。

  1. prometheus.yml

需要配置文件prometheus.yml。

scrape_configs:
  # 任意写,建议英文,不要包含特殊字符
  - job_name: 'jobName'
    # 采集的间隔时间
    scrape_interval: 15s
    # 采集时的超时时间
    scrape_timeout: 10s
    # 采集路径
    metrics_path: '/actuator/prometheus'
    # 采集服务的地址,也就是我们应用的地址
    static_configs:
      - targets: ['localhost:8080']
  1. docker-compose.yml

创建docker-compose.yml,注意prometheus.yml与docker-compose.yml的相对路径,如果放在同样的目录下,volumes则为- ‘./prometheus.yml:/etc/prometheus/config.yml’。

version: '3.3'
services:
  prometheus:
    image: 'prom/prometheus:v2.14.0'
    ports:
      - '9090:9090'
    command: '--config.file=/etc/prometheus/config.yml'
    volumes:
      - './prometheus.yml:/etc/prometheus/config.yml'
  1. 启动

直接使用命令docker-compose up -d启动即可。

  1. 测试

启动之后,在浏览器中访问http://localhost:9090。

Prometheus启动测试然后,通过查询关键字,可以查看不同指标的监控数据,比如jvm_memory_used_bytes。

Prometheus查询测试

4. 总结

这样,就通过Prometheus已经可以看到Spring Boot不同指标的监控数据了。但Prometheus的可视化还是比较粗糙,需要通过Grafana,才可以实现完美的可视化仪表盘。

三、Grafana

1. 简介

  Grafana是一个可视化面板,可以展示非常漂亮的图标和布局,支持Prometheus,SQL(MySQL,PostgreSQL)等作为数据源。

有如下特点:

  • 可视化:非常精美的各种组件可供选择,比如图表,文本,提醒事项,还有灵活的布局,可以自由配置你的可视化面板。

  • 数据源:目前支持Prometheus,Graphite,Loki,Elasticsearch,MySQL,PostgreSQL,Stackdriver和TestData DB等多种数据源。

  • 通知提醒:通过可视化的方式配置通知规则,在数据达到阈值时,将配置好的信息发送给指定管理员。

  • 混合数据源:在同一个图中混合不同的数据源,基于每个查询指定数据源。

2. Grafana安装

使用docker compose的方式安装。

  1. docker-compose.yml

此处可以与Prometheus合并到一个docker compose中:

version: '3.3'
services:
  prometheus:
    image: 'prom/prometheus:v2.14.0'
    ports:
      - '9090:9090'
    command: '--config.file=/etc/prometheus/config.yml'
    volumes:
      - './prometheus.yml:/etc/prometheus/config.yml'

  grafana:
    image: 'grafana/grafana:6.5.0'
    ports:
      - '3000:3000'
  1. 启动

通过命令docker-compose up -d启动。

  1. 测试

启动之后,在浏览器中访问http://localhost:3000,并使用初始账号admin:admin登录。

Grafana启动测试

3. Grafana配置

  1. 配置数据源

登录Grafana之后,选择添加数据源,选择Prometheus。

Grafana添加数据源输入数据源名称(任意),Prometheus的url地址,然后点击添加保存。

Grafana配置数据源

  1. 配置仪表盘

在这里有两个选择,其一是创建新的仪表盘,选择不同的组件,设置布局,还有一种方式是选择Grafana官方或者社区提供的仪表盘,而且他们的样式都十分精美,可以直接导入。这里我们选择导入仪表盘,因为我们是Java应用,重点关注的肯定是JVM相关的指标,所以我们搜索JVM,通过安装量进行排序。

Grafana添加仪表盘点击第一个,这个仪表盘包含了JVM,线程,CPU等指标,我们就导入这个,当然你也可以选择其他的仪表盘或者自建。

Grafana提供仪表盘在Grafana.com Dashboard处输入4701。

在这里插入图片描述
选择数据源,点击导入。

在这里插入图片描述
最终呈现的仪表盘就如下图:

在这里插入图片描述


本文的引用仅限自我学习如有侵权,请联系作者删除。
参考知识
使用 Prometheus + Grafana + Spring Boot Actuator 监控应用


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2254491.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHP语法学习(第六天)

&#x1f4a1;依照惯例&#xff0c;回顾一下昨天讲的内容 PHP语法学习(第五天)主要讲了PHP中的常量和运算符的运用。 &#x1f525; 想要学习更多PHP语法相关内容点击“PHP专栏” 今天给大家讲课的角色是&#x1f34d;菠萝吹雪&#xff0c;“我菠萝吹雪吹的不是雪&#xff0c;而…

关于遥感图像镶嵌后出现斑点情况的解决方案

把几张GF1的影像镶嵌在一起后&#xff0c;结果在Arcgis里出现了明显的斑点情况&#xff08;在ENVI里显示则不会出现&#xff09;&#xff0c;个人觉得可能是斑点噪声问题&#xff0c;遂用Arcgis的滤波工具进行滤波处理&#xff0c;但由于该工具本身没有直接设置对多波段处理方式…

【嵌套查询】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

单链表---合并两个链表

将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 struct ListNode {int val;struct ListNode* next; }; w 方法一---不使用哨兵位 我们创建一个新链表用于合并两个升序链表&#xff0c; 将两个链表中最小的结点依次尾插到…

vue聊天对话语音消息播放动态特效

vue2写法&#xff0c;vue3也能用&#xff0c;粘之即走&#xff1a; 示例&#xff1a; <template><div class"voice-hidden"><divclass"voice-play-chat":class"[className, { animate-stop: !isPlaying }]"><div class&q…

深度学习7 梯度下降优化、过拟合、手机价格预测

三、BP算法 3、梯度下降 w w - lr * grad&#xff1a; w 表示权重&#xff0c;lr表示学习率&#xff0c;grad表示梯度 传统下降方式分三类&#xff1a;&#xff08;BGD&#xff09;批量梯度下降、&#xff08;MBGD&#xff09;小批量梯度下降、&#xff08;SGD&#xff09;随…

跑一下pyapp

文档&#xff1a;How-to - PyApp 首先没有rust要安装 安装 Rust - Rust 程序设计语言 查看是否安装成功 然后clone下pyapp https://github.com/ofek/pyapp/releases/latest/download/source.zip -OutFile pyapp-source.zip 进入目录中&#xff0c;cmd&#xff0c;设置环境…

Django模板系统

1.常用语法 Django模板中只需要记两种特殊符号&#xff1a; {{ }}和 {% %} {{ }}表示变量&#xff0c;在模板渲染的时候替换成值&#xff0c;{% %}表示逻辑相关的操作。 2.变量 {{ 变量名 }} 变量名由字母数字和下划线组成。 点&#xff08;.&#xff09;在模板语言中有…

【人工智能】Transformers之Pipeline(二十七):蒙版生成(mask-generation)

​​​​​​​ 目录 一、引言 二、蒙版生成&#xff08;mask-generation&#xff09; 2.1 概述 2.2 facebook/sam-vit-base 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 2.3.3 pipeline对象返回参数 2.4 pipeline实战 2.5 模型排…

gpt-computer-assistant - 极简的 GPT-4o 客户端

更多AI开源软件&#xff1a; AI开源 - 小众AIhttps://www.aiinn.cn/sources gpt-computer-assistant是一个将 ChatGPT MacOS 应用程序提供给 Windows 和 Linux 的替代工作。因此&#xff0c;这是一个全新且稳定的项目。此时&#xff0c;您可以轻松地将其作为 Python 库安装&am…

高通---Camera调试流程及常见问题分析

文章目录 一、概述二、Camera配置的整体流程三、Camera的代码架构图四、Camera数据流的传递五、camera debug FAQ 一、概述 在调试camera过程中&#xff0c;经常会遇到各种状况&#xff0c;本篇文章对camera调试的流程进行梳理。对常见问题的提供一些解题思路。 二、Camera配…

软件/游戏运行提示xrnm.dll丢失无法继续执行怎么办?xrnm.dll缺少最佳解决方法

xrnm.dll 文件并不是一个标准的Windows系统文件&#xff0c;也不是广泛已知的第三方应用程序的一部分。因此&#xff0c;如果你遇到了提示 xrnm.dll 文件丢失或缺失的问题&#xff0c;这可能是由于特定软件或游戏的要求&#xff0c;或者是某种错误配置、恶意软件感染或其他问题…

流媒体之linux下离线部署FFmpeg 和 SRS

前言 用户对网络做了限制&#xff0c;只能访问指定的网址&#xff0c;和没网没啥区别&#xff0c;导致无法连接外网&#xff0c;无法获取安装包&#xff0c;还有一些编译需要的开源工具 用户需要用平台查看库房的海康摄像头实时监控&#xff0c;只能在库房里一台纯净的ubantu…

在LabVIEW中实现HARQ协议

HARQ&#xff08;Hybrid Automatic Repeat reQuest&#xff09;可以在LabVIEW中实现。HARQ是一种结合了前向纠错&#xff08;FEC&#xff09;和自动重传请求&#xff08;ARQ&#xff09;的技术&#xff0c;用于提高数据传输的可靠性&#xff0c;尤其是在无线通信和数据链路中。…

网络协议(TCP/IP模型)

目录 网络初识 网络协议 协议分层 协议拆分 分层 协议分层的优势 1.封装效果 2.解耦合 TCP/IP五层模型 协议之间配合工作&#xff08;详解&#xff09; 网络初识 网络核心概念&#xff1a; 局域网&#xff1a;若干电脑连接在一起&#xff0c;通过路由器进行组网。 …

PH热榜 | 2024-12-05

1. Oopsie 标语&#xff1a;用AI和会话回放调试Flutter和React Native应用 介绍&#xff1a;Zipy推出的Oopsie是一款你唯一需要的AI赋能移动端调试工具&#xff0c;它能提供▶️会话回放、&#x1f916;错误监控、&#x1f4a1;AI生成的概要分析&#xff0c;以及&#x1f525…

文化央企再一次声明

央企再次声明 中传国华&#xff08;北京&#xff09;科技有限公司&#xff0c;成立于2023年5月29日&#xff0c;原法定代表人曹忠喜&#xff0c;统一社会信用代码&#xff1a;91110117MACL4B9A91&#xff0c;我司中传世纪控股&#xff08;北京&#xff09;有限公司系该司的原股…

如何延长相机电池续航时间

如果你曾在拍摄过程中突然发现相机电池电量不足&#xff0c;就会知道那有多让人紧张和沮丧了。无论你是在拍摄小朋友的生日派对、家庭聚会&#xff0c;还是作为一名专业摄影师在工作&#xff0c;保持电池有电都是至关重要的。否则&#xff0c;你就有可能错过精彩瞬间&#xff0…

day06【入门】MySQL学习(3)完结!!!!

今日学习目标&#xff0c;mysql剩余的一小部分。开始接口自动化测试的学习。 目录 1、自关联 2、子查询 2.1 标量子查询 2.2 列子查询 2.3 表级子查询 2.4 作业 3、MySQL内置函数 3.1 concat字符串连接 3.2 length(str) 3.3 left字符串 3.4 right字符串 3.5 subs…

使用 Apache Commons IO 实现文件读写

在 Java 编程中&#xff0c;文件读写是常见的操作。虽然 Java 标准库提供了基本的文件 I/O 功能&#xff0c;但使用 Apache Commons IO 库可以进一步简化这些操作&#xff0c;提高开发效率。Apache Commons IO 是一个强大的工具库&#xff0c;提供了许多实用的类和方法&#xf…