目标要求
1、需要展现的仪表盘:
SpringBoot或JVM仪表盘
Centos物理机服务器(实际为物理分割的虚拟服务器)仪表盘
2、展现要求:
探索Prometheus + Grafana搭建起来的展示效果,尽可能展示能展示的部分。

一、下载软件包

  1. 监控系统核心:prometheus-2.45.0.linux-amd64.tar
    下载地址:https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
  2. 测试用节点导出器:node_exporter-1.6.0.linux-amd64.tar
    下载地址:https://github.com/prometheus/node_exporter/releases/download/v1.6.0/node_exporter-1.6.0.linux-amd64.tar.gz
  3. Grafana仪表盘:
    下载地址:
    https://dl.grafana.com/enterprise/release/grafana-enterprise-10.4.1.linux-amd64.tar.gz

二、安装及编写启动脚本

  1. 新建工作目录prometheus,将下载的软件包移动到目录下。
  2. 使用“tar -zxvf 软件包包名”命令逐步接下软件包。
    如: tar -zxvf prometheus-2.45.0.linux-amd64.tar.gz
  3. 在每个解压后的软件工作目录,新建start.sh脚本,按下方表格填入启动命令。保存后,赋予脚本执行权限“chmod +x start.sh”。

关闭方式

启动脚本

prometheus

kill -9

nohup ./prometheus --web.enable-lifecycle > log.log 2>&1 &

grafana

同上

nohup ./bin/grafana-server>>./log.log &

node

同上

nohup ./node_exporter --web.listen-address=:9101 > node_log.log 2>&1 &

三、启动测试

分别执行目录下的启动脚本:start.sh

  • promethesu的UI默认访问地址:ip:9090,正常访问效果图如下:

grafana仪表盘的query解释_java

  • grafana默认访问地址:ip:3000,正常访问效果图如下:

grafana仪表盘的query解释_grafana仪表盘的query解释_02


初始账户密码:admin/admin

初次安装需要修改密码,按照提示修改即可。登录后正常访问效果图如下:

grafana仪表盘的query解释_grafana_03

四、JAVA应用添加Prometheus支持

JAVA版本:JDK17,Springboot版本:3.1.2

  1. 配置pom文件:
<!-- prometheus 导出器配置 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.1.4.RELEASE</version>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-core</artifactId>
    <version>1.11.1</version>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <version>1.11.1</version>
</dependency>
  1. 配置application.yml文件
# prometheus 配置
management:
  metrics:
    # 下面选项建议打开,以监控 http 请求的 P99/P95 等,具体的时间分布可以根据实际情况设置
    distribution:
      sla:
        http:
          server:
            requests: 1ms,5ms,10ms,50ms,100ms,200ms,500ms,1s,5s
    tags:
      application: ${spring.application.name}
  endpoints:
    prometheus:
      enabled: true
    web:
      base-path: /monitor
      exposure:
        include: "prometheus"

五、Prometheus配置文件

  1. 修改Prometheus.yml配置文件如下图:

grafana仪表盘的query解释_java_04

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
  # 添加应用节点
  - job_name: 'application'
    metrics_path: '/monitor/prometheus'
    scrape_interval: 15s
    file_sd_configs:
      - files: ['./exporter_config/application_target.json']
  # 添加硬件节点
  - job_name: 'node'
    scrape_interval: 15s
    file_sd_configs:
      - files: ['./exporter_config/node.json']

    static_configs:
      - targets: ["localhost:9090"]
  1. 在prometheus创建目录“exporter_config”
  2. 在exporter_config分别创建应用配置文件"application_target.json ",节点配置文件“node.json”。如下图

grafana仪表盘的query解释_prometheus_05

  1. 填写文件内容如下:

10.0.0.1:100x代表节点、jar包所在的机器ip以及端口号

application_target.json

[
    {
        "targets": [
            "10.0.0.1:1001"
        ],
        "labels": {
            "instance": "10.0.0.1:1001",
            "service": "jar名",
            "ip": "10.0.0.1",
            "nodeType": "application"
        }
    }
]

node.json

[
    {
        "targets":[
            "10.0.0.1:1001"
        ],
        "labels":{
            "instance":"模拟硬件节点",
            "job":"模拟硬件节点job",
            "ip": "10.0.0.1",
            "nodeType":"device"
        }
    }
]
  1. 使用postman调用热重启接口,重启prometheus,如下图,10.0.0.1:9090代表prometheus安装IP端口。返回200则代表已发送重启命令。

grafana仪表盘的query解释_java_06

  1. 访问Prometheus,地址:ip:9090:,如下图:

grafana仪表盘的query解释_jvm_07

  1. 第六步正常则代表prometheus监控系统,已将JAVA应用程序导出器、node节点导出器纳入监控。其它情况则代表未纳入监控,需要检查使得纳入Prometheus监控再往下推进。

六、Grafana配置中文与组件兼容

  1. 修改defaults.ini文件,文件处于./conf目录下,修改前建议备份。
  2. 当前版本某些组件默认不启用,导致一些开源的仪表盘显示为空。故需要配置启用

grafana仪表盘的query解释_grafana_08

  1. 汉化。

grafana仪表盘的query解释_grafana仪表盘的query解释_09

七、Grafana连接Prometheus

  1. 添加新数据源

grafana仪表盘的query解释_grafana仪表盘的query解释_10

  1. 配置

grafana仪表盘的query解释_grafana_11

  1. 成功如图

grafana仪表盘的query解释_jvm_12

八、在Grafana配置仪表盘(Dashboard)

1、导入常见的Dashboard

任意Dashboard,无需数据源可导入,但是展示的内容是默认值。
同类型的多个监控目标,例如node监控,可以在适配的Dashboard切换观看。

  1. 选择导入

grafana仪表盘的query解释_java_13

  1. 到官方查看官方提供的仪表盘

grafana仪表盘的query解释_java_14

  1. 选择一个需要的仪表盘

grafana仪表盘的query解释_grafana仪表盘的query解释_15

  1. 下载仪表盘的json配置

grafana仪表盘的query解释_grafana_16

  1. 打开下载的json文件,粘贴到第二步对应的方框内。

grafana仪表盘的query解释_prometheus_17

  1. 即可生成node常用应用程序的仪表盘

grafana仪表盘的query解释_prometheus_18

  1. 导入JVM及其它仪表盘:重复步骤1

grafana仪表盘的query解释_grafana仪表盘的query解释_19

3、自定义仪表盘(就是点点点)

  1. 新建仪表盘

grafana仪表盘的query解释_prometheus_20

  1. 添加可视化面板

grafana仪表盘的query解释_grafana_21

  1. 选择数据源

grafana仪表盘的query解释_grafana仪表盘的query解释_22

  1. 自定义仪表盘

grafana仪表盘的query解释_jvm_23

  1. 保存或应用

grafana仪表盘的query解释_prometheus_24

  1. 效果如图:添加其它可视化表重复1~6步

grafana仪表盘的query解释_grafana仪表盘的query解释_25