引入 prometheus + grafana 对 Jar 包监控

0、概述

1、基础架构

2、修改 Java(Spring)服务

2.1、引入 jar 包

2.2、修改配置

2.3、手动注入实例到容器

3、中间件安装

3.1、prometheus

相关文档

启动命令

添加拉取地址

查看信息

3.2、grafana

相关文档

启动命令

进入 grafana

导入合适的模板


0、概述

        常见服务性能监控,调研发现,目前使用较多的,有两种方案:

  1. spring-boot-admin;
  2. promethus + grafana;

        两种方式本质上都是基于 spring-boot-actuator 的方式,而基于 actuator,虽然提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP 跟踪等,帮助我们监控和管理Spring Boot 应用,但是也带来安全问题。

        相较于 promethus + grafana,admin 部署、运行较简单,但是数据化可视化方面较差一点,且更加重要一点,使用 prometheus 可将中间件的服务性能一起监控。

1、基础架构

2、修改 Java(Spring)服务

2.1、引入 jar 包

        <!-- =================== 引入性能监控 =================== -->
        <!-- actuator 配置位于 application.yaml 中的 management 下 -->
        <!-- 警惕该组件可能带来的服务安全问题 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>
        <!-- =================== /引入性能监控 =================== -->

2.2、修改配置

management:
  server:
    # 不允许远程管理连接,安全性考虑,指定的 ip 必须是部署服务器可以 ping 的通的
    address: 192.168.x.xx
    # 自定义端口
    port: 30000
  endpoints:
    web:
      exposure:
        # 允许端点
        include: "*"
        # 排除端点
        exclude: shutdown
      # 修改访问前缀,默认为 /actuator
      base-path: /testMonitor
  endpoint:
    # 从 Spring 的 ConfigurableEnvironment 中公开属性,默认开启
    env:
      enabled: false
    # 显示 db、redis 等连接情况等
    health:
      show-details: always

通过配置项进行避免引入 actuator 带来的安全问题:

  1. 配置 management.server 下的 address 与 port:
    1. address 选择局域网内部署 prometheus 的服务器地址;
      1. port 区别于 server.port;
    2. 如果多个服务部署在同一台服务器上,各个服务需要指定合适的端口;
  2. 通过 base-path 修改默认的访问前缀:/actuator;
    1. 修改为:/testMonitor;
  3. 使用账号密码(会引入 spring-security),在 prometheus 配置时,需要同步配置;(建议使用该种方式,本文不演示)
  4. 隐藏重要信息或关闭危险操作;

2.3、手动注入实例到容器

        该 bean 可不注册,但是不注册,在 grafana 处,查看 prometheus 下的 jar 包服务实例时,就会找不到 applicationName。

    @Bean
    public MeterRegistryCustomizer<MeterRegistry> meterRegistryCustomizer(@Value("${spring.application.name}") String applicationName) {
        return (registry) -> registry.config().commonTags("application", applicationName);
    }

3、中间件安装

3.1、prometheus

相关文档

官网:First steps | Prometheus

github:GitHub - prometheus/prometheus: The Prometheus monitoring system and time series database.

启动命令

        无需指定 prometheus 版本,使用最新启动即可,另外启动时,设置容器跟随 docker 生命周期。

docker run -d -p 9090:9090 --restart=always --name prometheus prom/prometheus

        如果创建时未指定 --restart=always,可通过update 命令设置。

docker update --restart=always 容器ID(或者容器名)
(容器ID或者容器名根据实际情况修改)

        并未使用 -v 挂载数据卷,配置项需要进入到容器内部中设置,生产环境可以将配置文件挂载在宿主机。

        配置文件位于 /etc/prometheus 下,即 prometheus.yaml 。

添加拉取地址

###以下内容为SpringBoot应用配置
  - job_name: 'api'
    scrape_interval: 5s
    metrics_path: '/testMonitor/prometheus'
    static_configs:
      - targets: ['192.168.x.x:30000']

        配置完,拉取地址后,重启容器即可。

查看信息

http://localhost:9090/targets?search=

3.2、grafana

相关文档

官网:Run Grafana Docker image | Grafana documentation

github:GitHub - grafana/grafana: The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.

启动命令

无需指定 grafana 版本,使用最新启动即可,另外启动时,设置容器跟随 docker 生命周期。

docker run -d -p 3000:3000 --restart=always --name grafana grafana/grafana

进入 grafana

http://localhost:3000/login,默认账号密码 admin/admin。

        添加 Datasource

http://localhost:3000/datasources/new

        填写 url 。

        保存并测试连接。

导入合适的模板

        去模板市场选择合适的模板:Dashboards | Grafana Labs

        导入模板 8919 与 16144

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值