【prometheus】prometheus+grafana+springboot搭建监控平台
一、prometheus下载安装
官网:https://prometheus.io/
下载地址:https://prometheus.io/download/
1、将安装包上传到服务器上,并解压到 /opt/module 目录下
mkdir /opt/module
tar -zxvf prometheus-2.29.1.linux-amd64.tar.gz -C /opt/module/

2、修改目录名
cd /opt/module
mv prometheus-2.29.1.linux-amd64 prometheus-2.29.1

3、修改配置文件 prometheus.yml
cd prometheus-2.29.1/
vim prometheus.yml
可以看见配置文件如下

在 scrape_configs 配置项下添加配置:
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['192.168.81.136:9090']
# 添加 PushGateway 监控配置
- job_name: 'pushgateway'
static_configs:
- targets: ['192.168.81.136:9091']
labels:
instance: pushgateway
# 添加 Node Exporter 监控配置
- job_name: 'node exporter'
static_configs:
- targets: ['192.168.81.136:9100', '192.168.81.137:9100', '192.168.81.138:9100']
配置说明:
1、global 配置块:控制 Prometheus 服务器的全局配置
➢ scrape_interval:配置拉取数据的时间间隔,默认为 1 分钟。
➢ evaluation_interval:规则验证(生成 alert)的时间间隔,默认为 1 分钟。
2、rule_files 配置块:规则配置文件
3、scrape_configs 配置块:配置采集目标相关, prometheus 监视的目标。Prometheus 自身的运行信息可以通过 HTTP 访问,所以 Prometheus 可以监控自己的运行数据。
➢ job_name:监控作业的名称
➢ static_configs:表示静态目标配置,就是固定从某个 target 拉取数据
➢ targets : 指 定 监 控 的 目 标 , 其 实 就 是 从 哪 儿 拉 取 数 据 。 Prometheus 会 从 http://hadoop202:9090/metrics 上拉取数据。
Prometheus 是可以在运行时自动加载配置的。启动时需要添加:–web.enable-lifecycle
4、安装 Pushgateway
Prometheus 在正常情况下是采用拉模式从产生 metric 的作业或者 exporter(比如专 门监控主机的 NodeExporter)拉取监控数据。但是我们要监控的是 Flink on YARN 作业, 想要让 Prometheus 自动发现作业的提交、结束以及自动拉取数据显然是比较困难的。
PushGateway 就是一个中转组件,通过配置 Flink on YARN 作业将 metric 推到PushGateway,Prometheus 再从 PushGateway 拉取就可以了
1 上传安装包
上传 pushgateway-1.4.1.linux-amd64.tar.gz 到虚拟机的/root 目录
2 解压安装包
# 解压到/opt/module 目录下
tar -zxvf pushgateway-1.4.1.linux-amd64.tar.gz -C /opt/module

3 修改目录名
cd /opt/module
mv pushgateway-1.4.1.linux-amd64 pushgateway-1.4.1

5、安装Alertmanager(选择性安装)
1 上传安装包
上传 alertmanager-0.23.0.linux-amd64.tar.gz 到虚拟机的/root 目录
2 解压安装包
# 解压到/opt/module 目录下
tar -zxvf alertmanager-0.23.0.linux-amd64.tar.gz -C /opt/module

3 修改目录名
cd /opt/module
mv alertmanager-0.23.0.linux-amd64 alertmanager-0.23.0

6、安装 Node Exporter(选择性安装)
在 Prometheus 的架构设计中,Prometheus Server 主要负责数据的收集,存储并且 对外提供数据查询支持,而实际的监控样本数据的收集则是由 Exporter 完成。因此为了能够监控到某些东西,如主机的 CPU 使用率,我们需要使用到 Exporter。Prometheus 周期性的从 Exporter 暴露的 HTTP 服务地址(通常是/metrics)拉取监控样本数据。
Exporter 可以是一个相对开放的概念,其可以是一个独立运行的程序独立于监控目标 以外,也可以是直接内置在监控目标中。只要能够向 Prometheus 提供标准格式的监控样 本数据即可。
为了能够采集到主机的运行指标如 CPU, 内存,磁盘等信息。我们可以使用Node Exporter。Node Exporter 同样采用 Golang 编写,并且不存在任何的第三方依赖,只需要下载,解压即可运行。可以从 https://prometheus.io/download/ 获取最新的 nodeexporter 版本的二进制包。
1 上传安装包
上传 node_exporter-1.2.2.linux-amd64.tar.gz 到虚拟机的/root 目录
2 解压安装包
# 解压到/opt/module 目录下
tar -zxvf node_exporter-1.2.2.linux-amd64.tar.gz -C /opt/module

3 修改目录名
cd /opt/module
mv node_exporter-1.2.2.linux-amd64 node_exporter-1.2.2

4 启动并通过页面查看是否成功
cd node_exporter-1.2.2/
./node_exporter

浏览器输入:http://192.168.81.136:9100/metrics,可以看到当前 node exporter 获取
到的当前主机的所有监控数据。

5 节点分发
安装rsync
yum -y install rsync

编写xsync脚本
xsync同步脚本的创建及使用(以Debian10集群为例)_hhhSir’blog的博客-CSDN博客
将解压后的目录分发到要监控的节点
xsync node_exporter-1.2.2
修改 Prometheus 配置文件 prometheus.yml,在 2.1.3 的时候已经添加过配置
- targets: ['192.168.81.136:9100', '192.168.81.137:9100', '192.168.81.138:9100']
6 设置为开机自启
创建service文件
sudo vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_export
Documentation=https://github.com/prometheus/node_exporter
After=network.target
[Service]
Type=simple
User=root
ExecStart= /opt/module/node_exporter-1.2.2/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
分发文件
sudo /home/atguigu/bin/xsync /usr/lib/systemd/system/node_exporter.service
设为开机自启动(所有机器都执行)
sudo systemctl enable node_exporter.service
启动服务(所有机器都执行)
sudo systemctl start node_exporter.service
查看服务状态
systemctl status node_exporter.service

访问地址:http://192.168.81.136:9100/metrics

7、启 动 Prometheus Server 、 Pushgateway 和 Alertmanager
1 Prometheus Server 目录下执行启动命令
nohup ./prometheus --config.file=prometheus.yml > ./prometheus.log 2>&1 &

2 Pushgateway 目录下执行启动命令
nohup ./pushgateway --web.listen-address :9091 > ./pushgateway.log 2>&1 &

3 在 Alertmanager 目录下启动
nohup ./alertmanager --config.file=alertmanager.yml > ./alertmanager.log 2>&1 &

4 访问服务
请求:http://192.168.81.136:9090/

二、PromQL介绍
Prometheus 通过指标名称(metrics name)以及对应的一组标签(labelset)唯一定义一条时间序列。指标名称反映了监控样本的基本标识,而 label 则在这个基本特征上为采集到的数据提供了多种特征维度。用户可以基于这些特征维度过滤,聚合,统计从而产生新的计算后的一条时间序列。PromQL 是 Prometheus 内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。并且被广泛应用在 Prometheus 的日常应用当中,包括对数据查询、可视化、告警处理当中。可以这么说,PromQL 是 Prometheus 所有应用场景的基础,理解和掌握 PromQL 是 Prometheus 入门的第一课
1、基本用法
1 时间查询序列
当 Prometheus 通过 Exporter 采集到相应的监控指标样本数据后,我们就可以通过PromQL 对监控样本数据进行查询。当我们直接使用监控指标名称查询时,可以查询该指标下的所有时间序列。如:
prometheus_http_requests_total
等同于:
prometheus_http_requests_total{}
该表达式会返回指标名称为 prometheus_http_requests_total 的所有时间序列:
prometheus_http_requests_total{code="200",handler="alerts",instance="localhost:9090",j
ob="prometheus",method="get"}= (20889@1518096812.326)
prometheus_http_requests_total{code="200",handler="graph",instance="localhost:9090",jo
b="prometheus",method="get"}= (21287@1518096812.326)
PromQL 还支持用户根据时间序列的标签匹配模式来对时间序列进行过滤,目前主要支持两种匹配模式:完全匹配和正则匹配。
➢ PromQL 支持使用 = 和 != 两种完全匹配模式:
⚫ 通过使用 label=value 可以选择那些标签满足表达式定义的时间序列;
⚫ 反之使用 label!=value 则可以根据标签匹配排除时间序列;
例如,如果我们只需要查询所有 prometheus_http_requests_total 时间序列中满足标签 instance 为 localhost:9090 的时间 序列,则可以使用如下表达式:
prometheus_http_requests_total{instance="localhost:9090"}
反之使用 instance!=“localhost:9090” 则可以排除这些时间序列:
prometheus_http_requests_total{instance!="localhost:9090"}
➢ PromQL还可以支持使用正则表达式作为匹配条件,多个表达式之间使用 | 进行分离:
⚫ 使用 label=~regx 表示选择那些标签符合正则表达式定义的时间序列;
⚫ 反之使用 label!~regx 进行排除;
例如,如果想查询多个环节下的时间序列序列可以使用如下表达式:
prometheus_http_requests_total{environment=~"staging|testing|development",method!="GET"}
排除用法
prometheus_http_requests_total{environment!~"staging|testing|development",method!="GET"}
2 范围查询
直接通过类似于 PromQL 表达式 httprequeststotal 查询时间序列时,返回值中只会包含该时间序列中的最新的一个样本值,这样的返回结果我们称之为瞬时向量。而相应的这样的表达式称之为__瞬时向量表达式。
而如果我们想过去一段时间范围内的样本数据时,我们则需要使用区间向量表达式。区间向量表达式和瞬时向量表达式之间的差异在于在区间向量表达式中我们需要定义时间选择的范围,时间范围通过**时间范围选择器 [] **进行定义。 例如,通过以下表达式可以选择最近 5 分钟内的所有样本数据:
prometheus_http_requests_total{}[5m]
该表达式将会返回查询到的时间序列中最近 5 分钟的所有样本数据:
prometheus_http_requests_total{code="200",handler="alerts",instance="localhost:9090",j
ob="prometheus",method="get"}=[
1@1518096812.326
1@1518096817.326
1@1518096822.326
1@1518096827.326
1@1518096832.326
1@1518096837.325
] 9.
prometheus_http_requests_total{code="200",handler="graph",instance="localhost:9090",jo
b="prometheus",method="get"}=[
4@1518096812.326
4@1518096817.326
4@1518096822.326
4@1518096827.326
4@1518096832.326
4@1518096837.325
]
通过区间向量表达式查询到的结果我们称为区间向量。 除了使用 m 表示分钟以外,PromQL 的时间范围选择器支持其它时间单位:
⚫ s - 秒
⚫ m - 分钟
⚫ h - 小时
⚫ d - 天
⚫ w - 周
⚫ y - 年
3 时间位移操作
在瞬时向量表达式或者区间向量表达式中,都是以当前时间为基准:
prometheus_http_requests_total{} # 瞬时向量表达式,选择当前最新的数据
prometheus_http_requests_total{}[5m] # 区间向量表达式,选择以当前时间为基准,5 分钟内的数据
而如果我们想查询,5 分钟前的瞬时样本数据,或昨天一天的区间内的样本数据呢? 这个时候我们就可以使用位移操作,位移操作的关键字为 offset。 可以使用 offset 时间位移操作:
prometheus_http_requests_total{} offset 5m
prometheus_http_requests_total{}[1d] offset 1d
4 使用聚合操作
一般来说,如果描述样本特征的标签(label)在并非唯一的情况下,通过 PromQL 查询数据,会返回多条满足这些特征维度的时间序列。而 PromQL 提供的聚合操作可以用来对这些时间序列进行处理,形成一条新的时间序列:
# 查询系统所有 http 请求的总量
sum(prometheus_http_requests_total)
# 按照 mode 计算主机 CPU 的平均使用时间
avg(node_cpu_seconds_total) by (mode)
# 按照主机查询各个主机的 CPU 使用率
sum(sum(irate(node_cpu_seconds_total{mode!='idle'}[5m])) / sum(irate(node_cpu_seconds_total [5m]))) by (instance)
5 标量和字符串
除了使用瞬时向量表达式和区间向量表达式以外,PromQL 还直接支持用户使用标量(Scalar)和字符串(String)
➢ **标量(Scalar):一个浮点型的数字值 **
标量只有一个数字,没有时序。 例如:10
需要注意的是,当使用表达式 count(prometheus_http_requests_total),返回的数据类型,依然是瞬时向量。用户可以通过内置函数 scalar()将单个瞬时向量转换为标量。
➢ **字符串(String):一个简单的字符串值 **
直接使用字符串,作为 PromQL 表达式,则会直接返回字符串。
"this is a string"
'these are unescaped: \n \\ \t'
`these are not unescaped: \n ' " \t`
6 合法的 PromQL 表达式
所有的 PromQL 表达式都必须至少包含一个指标名称(例如 http_request_total),或者一个不会匹配到空字符串的标签过滤器(例如{code=”200”})。
因此以下两种方式,均为合法的表达式:
prometheus_http_requests_total # 合法
prometheus_http_requests_total{} # 合法
{method="get"} # 合法
而如下表达式,则不合法:
{job=~".*"} # 不合法
同时,除了使用 {label=value} 的形式以外,我们还可以使用内置的 name 标签来指定监控指标名称:
{__name__=~"prometheus_http_requests_total"} # 合法
{__name__=~"node_disk_bytes_read|node_disk_bytes_written"} # 合法
2、PromQL 操作符
使用 PromQL 除了能够方便的按照查询和过滤时间序列以外,PromQL 还支持丰富的操作符,用户可以使用这些操作符对进一步的对事件序列进行二次加工。这些操作符包括:数学运算符,逻辑运算符,布尔运算符等等
1 数学运算
PromQL 支持的所有数学运算符如下所示:
⚫ + (加法)
⚫ - (减法)
⚫ * (乘法)
⚫ / (除法)
⚫ % (求余)
⚫ ^ (幂运算)
2 布尔运算
➢ Prometheus 支持以下布尔运算符如下: **
⚫ == (相等)
⚫ != (不相等)
⚫ >(大于)
⚫ < (小于)
⚫ >= (大于等于)
⚫ <= (小于等于)
➢ 使用 bool 修饰符改变布尔运算符的行为 **
布尔运算符的默认行为是对时序数据进行过滤。而在其它的情况下我们可能需要的是真正的布尔结果。例如,只需要 知道当前模块的 HTTP 请求量是否>=1000,如果大于等于1000 则返回 1(true)否则返回 0(false)。这时可以使 用 bool 修饰符改变布尔运算的默认行为。 例如:
prometheus_http_requests_total > bool 1000
使用 bool 修改符后,布尔运算不会对时间序列进行过滤,而是直接依次瞬时向量中的各个样本数据与标量的比较结果 0 或者 1。从而形成一条新的时间序列。
prometheus_http_requests_total{code="200",handler="query",instance="localhost:9090",jo
b="prometheus",method="get"} 1
prometheus_http_requests_total{code="200",handler="query_range",instance="localhost:90
90",job="prometheus",method="get"} 0
同时需要注意的是,如果是在两个标量之间使用布尔运算,则必须使用 bool 修饰符
2 == bool 2 # 结果为 1
3 使用集合运算符
使用瞬时向量表达式能够获取到一个包含多个时间序列的集合,我们称为瞬时向量。通过集合运算,可以在两个瞬时向量与瞬时向量之间进行相应的集合操作。
目前,Prometheus 支持以下集合运算符:
⚫ and (并且)
⚫ or (或者)
⚫ unless (排除)
vector1 and vector2 会产生一个由 vector1 的元素组成的新的向量。该向量包含vector1 中完全匹配 vector2 中的元素组成。
vector1 or vector2 会产生一个新的向量,该向量包含 vector1 中所有的样本数据,以及 vector2 中没有与 vector1 匹配到的样本数据。
vector1 unless vector2 会产生一个新的向量,新向量中的元素由 vector1 中没有与vector2 匹配的元素组成。
4 操作符优先级
对于复杂类型的表达式,需要了解运算操作的运行优先级。例如,查询主机的 CPU 使用率,可以使用表达式:
100 * (1 - avg (irate(node_cpu_seconds_total{mode='idle'}[5m])) by(job) )
其中irate是PromQL中的内置函数,用于计算区间向量中时间序列每秒的即时增长率。在 PromQL 操作符中优先级由高到低依次为:
⚫ ^
⚫ *, /, %
⚫ +, -
⚫ ==, !=, <=, =, >
⚫ and, unless
⚫ or
5 PromQL 聚合操作
Prometheus 还提供了下列内置的聚合操作符,这些操作符作用域瞬时向量。可以将瞬时表达式返回的样本数据进行 聚合,形成一个新的时间序列。
⚫ sum (求和)
⚫ min (最小值)
⚫ max (最大值)
⚫ avg (平均值)
⚫ stddev (标准差)
⚫ stdvar (标准差异)
⚫ count (计数)
⚫ count_values (对 value 进行计数)
⚫ bottomk (后 n 条时序)
⚫ topk (前 n 条时序)
⚫ quantile (分布统计)
使用聚合操作的语法如下:
<aggr-op>([parameter,] <vector expression>) [without|by (<label list>)]
其中只有 count_values , quantile , topk , bottomk 支持参数(parameter)。
without 用于从计算结果中移除列举的标签,而保留其它标签。by 则正好相反,结果向量中只保留列出的标签,其余标签则移除。通过 without 和 by 可以按照样本的问题对数据进行聚合。
例如:
sum(prometheus_http_requests_total) without (instance)
等价于
sum(prometheus_http_requests_total) by (code,handler,job,method)
如果只需要计算整个应用的 HTTP 请求总量,可以直接使用表达式:
sum(prometheus_http_requests_total)
count_values 用于时间序列中每一个样本值出现的次数。count_values 会为每一个唯一的样本值输出一个时间序列,并且每一个时间序列包含一个额外的标签。 例如:
count_values("count", prometheus_http_requests_total)
topk 和 bottomk 则用于对样本值进行排序,返回当前样本值前 n 位,或者后 n 位的
时间序列。获取 HTTP 请求数前 5 位的时序样本数据,可以使用表达式
topk(5, prometheus_http_requests_total)
quantile 用于计算当前样本数据值的分布情况 quantile(φ, express)其中 0 ≤ φ ≤ 1。例如,当 φ 为 0.5 时,即表示找到当前样本数据中的中位数:
quantile(0.5, prometheus_http_requests_total)
三、prometheus集成springboot
1、引入依赖
<!--普罗米修斯监控所需依赖-->
<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、编写配置文件
server:
port: 8081
spring:
application:
name: my-prometheus
management:
endpoints:
web:
exposure:
#仅暴露普罗米修斯端口
include: 'prometheus'
metrics:
tags:
application: ${spring.application.name}
3、测试
访问地址:http://localhost:8081/actuator/prometheus
看到如下监控信息

4、自定义监控指标
1 配置类
package com.example.prometheus.config;
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* <h3>监控配置</h3>
*
* @author wangzhe
* @version 1.0.0
* @createTime 2023/3/8 11:25
*/
@Configuration
public class MicrometerConfig {
@Bean
MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName) {
return (registry) -> registry.config().commonTags("application", applicationName);
}
}
2 注册Meterics
package com.example.prometheus.config;
import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.binder.MeterBinder;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
* <h3>注册Meterics,将监控数据提供给prometheus</h3>
*
* @author wangzhe
* @version 1.0.0
* @createTime 2023/3/8 11:29
*/
@Component
public class JobMetrics implements MeterBinder {
public Counter job1Counter;
public Counter job2Counter;
public Map<String, Double> map;
JobMetrics() {
map = new HashMap<>();
}
@Override
public void bindTo(MeterRegistry meterRegistry) {
//
this.job1Counter = Counter.builder("counter_builder_job_counter1")
.tags(new String[]{"name", "tag_job_counter1"})
.description("description-Job counter1 execute count").register(meterRegistry);
this.job2Counter = Counter.builder("counter_builder_job_counter2")
.tags(new String[]{"name", "tag_job_counter2"})
.description("description-Job counter2 execute count ").register(meterRegistry);
Gauge.builder("gauge_builder_job_gauge", map, x -> x.get("x"))
.tags("name", "tag_job_gauge")
.description("description-Job gauge")
.register(meterRegistry);
}
}
3 编写定时任务
package com.example.prometheus.job;
import com.example.prometheus.config.JobMetrics;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
* <h3>定时任务</h3>
*
* @author wangzhe
* @version 1.0.0
* @createTime 2023/3/8 11:32
*/
@Component
@EnableScheduling
public class MyJob {
private Integer count1 = 0;
private Integer count2 = 0;
@Autowired
private JobMetrics jobMetrics;
@Async("main")
@Scheduled(fixedDelay = 1000)
public void doSomething() {
count1++;
jobMetrics.job1Counter.increment();
jobMetrics.map.put("x", Double.valueOf(count1));
System.out.println("task1 count:" + count1);
if(count1%2==0){
System.out.println("%5==0");
jobMetrics.map.put("x", 1.0);
}
}
@Async
@Scheduled(fixedDelay = 10000)
public void doSomethingOther() {
count2++;
jobMetrics.job2Counter.increment();
System.out.println("task2 count:" + count2);
}
}
4 启动项目并访问
如下,自定义的监控指标已经被采集到prometheus

5、修改prometheus配置
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['192.168.81.137:9090']
- job_name: 'pushgateway'
static_configs:
- targets: ['192.168.81.137:9091']
labels:
instance: pushgateway
- job_name: 'node exporter'
static_configs:
- targets: ['192.168.81.137:9100', '192.168.81.137:9100', '192.168.81.137:9100']
#SpringBoot应用配置
- job_name: 'springbootPrometheusGrafana'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['192.168.81.137:8081']
6、将springboot项目打成jar包
将jar包发送到192.168.81.137服务器上并跑起来

7、查看prometheus

四、prometheus集成grafana
grafana 是一款采用 Go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。下载地址:https://grafana.com/grafana/download
1、上传并解压
➢ 将 grafana-8.1.2.linux-amd64.tar.gz 上传至/opt/software/目录下,解压:
tar -zxvf grafana-enterprise-8.1.2.linux-amd64.tar.gz -C /opt/module/
2、启动Grafana
进入/opt/module/grafana-8.1.2
nohup ./bin/grafana-server web > ./grafana.log 2>&1 &
访问:http://192.168.81.137:3000/login,默认用户名和密码 admin

3、添加数据源prometheus
点击配置,点击 Data Sources:

点击添加按钮:

找到 Prometheus,点击 Select

配置 Prometheus Server 地址:

点击下方的 Save&Test,出现绿色的提示框,表示与 Prometheus 正常联通

点击 Back 返回即可,可以看到 Data Sources 页面,出现了添加的 Prometheus:

4、手动创建仪表盘Dashboard

添加新的仪表板,点击 Add an empty panel:

配置仪表板监控项:

添加监控项:

加好后点击apply

仪表盘出现在首页

5、使用模板创建仪表盘
手动一个个添加 Dashboard 比较繁琐,Grafana 社区鼓励用户分享 Dashboard,通过
Dashboards | Grafana Labs
网站,可以找到大量可直接使用的 Dashboard 模板。Grafana 中所有的 Dashboard 通过 JSON 进行共享,下载并且导入这些 JSON 文件,就可以直接使用这些已经定义好的 Dashboard。
1 搜索springboot,选择第一个

2 复制id

3 导入仪表盘


4 保存仪表盘

5 通过json文件导入仪表盘



魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)