确保您的应用程序顺畅运行不仅仅依赖于监控,更需要对系统各方面进行全面的可见性,从日志和指标到追踪。这就是端到端可观测性大显身手的地方。它在于将系统各部分连接起来,以获得整个系统运行情况的全貌。
在这篇博客文章里,我们将探讨如何深入使用Grafana及其相关工具,如OpenTelemetry、Prometheus、Loki和Tempo,设置端到端的可观测性。让我们看看每个组件是怎么工作的,并且这些工具是如何协同工作的,以提供一个强大的可观测性解决方案。
要什么端到端可观察性,为什么我们需要它呢?
在我们深入探讨之前,了解端到端可观测性意味着什么及其重要性是很重要的。端到端可观测性提供了一个统一的视角,涵盖您整个系统的跟踪、指标及日志。它通过关联不同类型的数据帮助您更有效地监控和调试应用程序,从而全面了解系统的整体健康状况。
通过 Grafana 在可视化和分析这些数据方面扮演的关键角色,我们可以将一切整合在一起。Grafana 让我们可以在一个统一平台上关联日志、指标和跟踪信息,进而让故障排查和系统维护更加简便。下面的架构图清楚地展示了这些组件如何结合在一起,提供端到端的监控能力。
这是正在发生的事情:
- 该应用程序使用OpenTelemetry进行度量指标和跟踪,并使用Winston-Loki进行日志记录。
- 应用程序将日志发送到Loki,将指标发送到Prometheus,并将跟踪数据发送到Tempo。
- Tempo将跟踪数据转发给Tracetest代理。
- 使用Grafana可视化来自Loki的日志、来自Prometheus的指标以及来自Tempo的跟踪,提供了一个统一的观测面板。
- 最后,Tracetest代理将数据同步到Tracetest UI,进行基于跟踪的测试。
但是我们怎么把所有这些数据导入Grafana呢?第一步是为您的应用程序添加监控工具。这意味着直接在代码中嵌入跟踪、日志记录和指标功能。通过这样做,您将生成监控系统所需的指标,并找出任何性能瓶颈或问题。
1. 设置仪器在您的应用中实现端到端可观测性的第一步是为您的应用程序添加追踪、日志记录和度量的SDK或库,这包括在应用程序代码中整合这些工具。
在这次教程里,你将在根目录下搭建一个简单的[Express应用],在index.js文件中。
const express = require('express')
const app = express()
const port = 8081
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`应用正在端口 ${port} 监听`)
})
这是一个基本的 web 应用;虽然它目前还不具备可观测性,让我们假设这是你构建的应用或服务。
1. 在您的应用程序中添加指标指标通过追踪响应时间、错误率等,甚至包括自定义指标如处理的请求数,来帮助你了解应用程序的行为和性能。
在可观测性中,指标帮助识别并实时响应趋势和问题,让您能够快速应对问题。为此,我们将使用一个流行的开源可观测性框架 OpenTelemetry,对应用程序进行监控来获取这些指标。
要开始收集指标,创建一个新的文件meter.js,该文件将负责生成并把指标导出到Prometheus,一种常用的时间序列数据库,用于存储和查询指标。
// meter.js
const { MeterProvider } = require('@opentelemetry/sdk-metrics');
const { PrometheusExporter } = require('@opentelemetry/exporter-prometheus');
const { Resource } = require('@opentelemetry/resources');
const { SemanticResourceAttributes } = require('@opentelemetry/semantic-conventions');
const prometheusExporter = new PrometheusExporter({
port: 9464,
endpoint: '/metrics',
}, () => {
console.log('Prometheus 端点: http://localhost:9464/metrics');
});
const meterProvider = new MeterProvider({
resource: new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: 'hello-world-app',
}),
});
meterProvider.addMetricReader(prometheusExporter);
const meter = meterProvider.getMeter('hello-world-meter');
module.exports = meter;
通过添加这个 meter.js 文件到我们的应用程序中,我们正在为收集和导出指标打下基础。Prometheus 现在将能够抓取(爬取)这些指标并存储它们,以便稍后在 Grafana 中进行可视化和设置报警。
2. 为您的应用添加日志日志是可观察性的一个关键组成部分,提供应用程序内部事件的实时信息。它们帮助你追踪错误、追踪用户活动,并理解执行路径。通过集中处理日志,你可以更轻松地搜索、过滤,以及将它们与其他可观测性数据(如指标和追踪)关联起来。
要管理日志,你将使用Winston,这是一个流行的Node.js日志库,以及Winston-Loki 传输插件,该插件可以直接发送日志到Loki服务器。Loki是一个日志聚合系统,设计用来与Prometheus等工具配合使用,提供了一种可扩展的方法来收集和查询日志。
创建一个名为logger.js的文件来处理日志,并将日志发送至Loki服务器。
// logger.js
const winston = require('winston');
const LokiTransport = require('winston-loki');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new LokiTransport({
host: 'http://loki:3100', // Loki 地址
labels: { job: 'loki-service' },
json: true,
batching: true,
interval: 5,
}),
],
});
// 创建日志记录器
module.exports = logger; // 导出日志记录器
接下来,在 index.js 中导入 meter 和日志记录器,以便为应用程序添加日志和度量。
const express = require('express');
const logger = require('./logger');
const meter = require('./meter');
const app = express();
// 定义一个自定义指标(例如,HTTP请求计数器)
const requestCounter = meter.createCounter('http_requests', {
description: '统计HTTP请求的数量',
});
// 中间件,在每次请求时增加HTTP请求计数器的值,并记录访问的URL
app.use((req, res, next) => {
logger.info(`收到请求 ${req.url}`);
requestCounter.add(1, { method: req.method, route: req.path });
next();
});
app.get('/', (req, res) => {
// 模拟一些任务
setTimeout(() => {
res.send('Hello, World!');
}, 100);
});
// 启动服务器
app.listen(8081, () => {
logger.info('服务器正在运行于 http://localhost:8081');
});
3. 为您的应用添加日志
跟踪痕迹是理解请求在应用程序中是如何流动的关键部分。它们使您能够从请求进入系统到离开系统,全程跟踪这些信息,从而让您能够看到细节。
- 调用的服务。
- 每个服务耗时。
- 可能的瓶颈位置。
这在调试性能问题和理解分布式系统方面尤为重要。
我们将使用OpenTelemetry SDK和自动注入功能来创建和收集这些跟踪信息。自动注入功能会自动为Node.js模块添加跟踪逻辑,从而无需手动添加跟踪代码。
创建一个名为 tracer.js 的文件来设置你的应用中的 OpenTelemetry。
// tracer.js
const opentelemetry = require('@opentelemetry/sdk-node')
const { getNodeAutoInstrumentations } = require('@opentelemetry/auto-instrumentations-node')
const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-http')
const { ConsoleSpanExporter } = require('@opentelemetry/sdk-trace-node')
const dotenv = require("dotenv")
dotenv.config()
const sdk = new opentelemetry.NodeSDK({
traceExporter: new OTLPTraceExporter({
url: process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
}),
instrumentations: [getNodeAutoInstrumentations()]
})
// 开始跟踪并导出追踪数据
sdk.start()
还有一个.env文件用于设置OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
环境变量。
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="http://tempo:4318/v1/traces"
# 这里设置的是导出追踪数据到指定的OTLP端点。
一旦这段代码部署完成,并在运行 index.js
时预先加载 tracer.js
,每次请求都会自动生成跟踪,这要感谢 OpenTelemetry 的自动追踪功能。这些跟踪会被收集并发送到支持 OTLP 的后端,在这种情况下就是 Tempo。
步骤4:将应用容器化
要在容器中运行您的应用程序,请在您的根目录创建一个 Dockerfile (即 Docker 文件)。
FROM node:slim
WORKDIR /usr/src/app/ # 设置工作目录为 /usr/src/app/
COPY package*.json ./ # 复制 package*.json 文件到当前目录
RUN npm install # 安装依赖包
COPY . . # 复制当前目录下所有文件到容器中
EXPOSE 8081 # 暴露端口 8081
使用命令 docker build -t <dockerhub-username>/tracetest-app .
在根目录下构建你的应用镜像,并将它推送至 DockerHub 使用 docker push <dockerhub-username>/tracetest-app
。另外,在你的 package.json 文件中添加一个新的脚本,以便在启动服务器时自动加载 tracer.js 文件。
"scripts": {
"index-with-tracer": "node -r ./tracer.js index.js"
},
现在在 docker-compose.yml 文件中添加以下代码以运行应用程序。
services:
app:
image: <your-dockerhub-uername>/tracetest-app
build: .
command: # 此命令启动带有追踪器的npm运行
npm run index-with-tracer
ports:
- "8081:8081" # 将容器的8081端口映射到主机的8081端口
environment:
# 环境变量设置,用于OTEL导出器
- OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=${OTEL_EXPORTER_OTLP_TRACES_ENDPOINT}
depends_on:
# 服务依赖关系,确保在指定服务启动后才能运行
tempo:
condition: service_started
tracetest-agent:
condition: service_started
这样一来,你就成功地为你的应用添加了监控工具,并完成了容器化。接下来,我们来集中精力设置Prometheus、Loki和Tempo服务器,收集所有数据并在Grafana中进行可视化展示。
2. 为 Node.js 应用设置 PrometheusPrometheus 是一个开源的监控和警报工具包,旨在提高可靠性和可伸缩性。它从各种来源收集指标数据,并将这些数据存储在时间序列数据库中,提供强大的查询语言(PromQL)用于数据分析。
在可观察性的上下文中,Prometheus 被用来从你的应用程序和基础设施中收集指标,这些指标可以被用来进行可视化和分析,从而帮助我们更好地了解系统性能和健康状况。
要将Prometheus集成到您的Node.js应用程序中,请按照如下步骤操作:
1. 创建一个 Prometheus 配置文件prometheus.yml
文件指定了 Prometheus 需要怎么做才能发现并抓取到您的应用的指标。以下是配置,
```prometheus.yml
# prometheus.yml
global:
scrape_interval: 5s
scrape_configs:
- job_name: 'hello-world-app'
static_configs:
- targets: ['app:9464'] # 9464端口暴露的指标
这定义了Prometheus查找指标的目标端点位置。其中,`host.docker.internal` 指的是你的本地Docker主机,而 `9464` 是你的Node.js应用用来暴露指标的端口号。
# 2\. 运行 Prometheus 的主题:在 Docker 容器里运行 Prometheus
要在容器中运行 Prometheus 服务器,可以在 **docker-compose.yml** 文件中添加以下配置。
prometheus配置如下:
prometheus:
image: prom/prometheus # 使用prometheus官方镜像
volumes: # 挂载点:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090" # 将容器内的9090端口映射到主机的9090端口
在这里,image
指定了要用于 Prometheus 的 Docker 镜像,而 volumes
将你本地的 prometheus.yml 文件挂载到容器中的 etc/prometheus/prometheus.yml
位置。此文件包含了 Prometheus 将使用的配置内容,而 ports
将 Docker 容器的 9090 端口映射到你主机的 9090 端口。这使得你可以在 localhost:9090
访问 Prometheus 的 Web UI。
使用 Docker Compose 运行 Prometheus 服务器:输入 docker-compose up
打开您的浏览器,前往 http://localhost:9090/graph
以访问 Prometheus Web界面。在这里,您可以执行查询来验证 Prometheus 是否成功抓取(scrape)并存储了指标数据。
例如,运行这个查询 http_requests_total
,会显示出您的应用程序处理的 HTTP 请求的数量相关的数据。
配置好 Prometheus 后,你现在就有了一个收集和存储你 Node.js 应用程序的指标的监控工具。接下来,我们来配置 Loki 来获取你的应用程序的日志。(Prometheus)(Loki)
3. 为 Node.js 应用程序搭建 Loki日志对于诊断问题至关重要。了解应用程序在不同场景中的行为同样重要。它们提供了系统事件、错误和应用程序流程的详细见解,使它们成为有效故障排除和性能监控不可或缺的工具。Loki 是一个与 Grafana 无缝集成的日志聚合系统。它收集并存储日志,通过 Grafana 实现强大的查询和可视化。
要配置 Loki 从你的 Node.js 应用程序中收集日志,请按以下步骤操作。
- 在您的 Docker Compose 配置中添加 Loki
在你的 docker-compose.yml 文件中扩展以包含 Loki。这样你就可以将 Loki 作为容器与你的 Prometheus 实例一起运行:
loki:
image: 镜像 (grafana/loki:2.9.10)
ports:
- "映射端口: 3100:3100"
grafana/loki:2.9.10
是来自 Grafana 的官方 Loki 镜像 grafana/loki:2.9.10
,并且 Docker 容器上的端口 3100
映射到了你主机的端口 3100
。这样你就可以访问 Loki 的 API 并查看其状态。
在您将 Loki 添加到 Docker Compose 配置之后,重启容器即可。
docker-compose up
启动所有服务
验证Loki是否运行
洛基没有传统的网页界面来查看日志,所以你需要通过访问它的指标端点来检查其状态并确保它正常运行。
http://localhost:3100/metrics
此端点将展示与Loki相关的原始指标数据,确认Loki已经启动并正在运行。这些指标数据被Grafana用于内部,以可视化日志并监控Loki的性能。
Loki 收集和存储日志后,你可以使用 Grafana 可视化这些日志,帮助你更好地理解应用程序的行为并更高效地解决问题。
4. 配置 Node.js 应用程序的运行节奏尽管指标可以告诉你应用程序的性能,日志可以显示发生了什么,但跟踪有助于找出问题的原因,通过展示请求在系统中的详细流程来解答。Tempo 设计用于收集和存储这些跟踪。
为了确保捕获您的Node.js应用的跟踪信息,请配置Tempo来接收由OpenTelemetry导出的跟踪信息。Tempo将充当桥梁的角色,收集您的应用的跟踪信息。这些数据将被Grafana和Tracetest代理用于进一步测试。
1. 创建一个Tempo设置文件:确保 Tempo 在 tempo.yaml 文件中设置了适当的存储配置,以处理传入的追踪记录。
stream_over_http_enabled: true
server:
http_listen_port: 80
log_level: 信息
query_frontend:
search:
duration_slo: 5秒
throughput_bytes_slo: 1.073741824e+09
trace_by_id:
duration_slo: 5秒
distributor:
receivers:
jaeger:
protocols:
thrift_http:
grpc:
thrift_binary:
thrift_compact:
zipkin:
otlp:
protocols:
http:
grpc:
opencensus:
ingester:
max_block_duration: 5分钟
compactor:
compaction:
block_retention: 1小时
storage:
trace:
backend: 后端存储
wal:
path: /var/tempo/wal
local:
path: /var/tempo/blocks
让你的 Docker Compose 加速
在 docker-compose.yml 文件中添加 Tempo 服务,并将你的机器的本地端口 3200
映射到 Docker 容器的 80
端口,因为 80
是 Tempo 的默认端口。
init:
image: &tempoImage grafana/tempo:latest
user: root;
entrypoint:
- "chown"
- "10001:10001"
- "/var/tempo"
volumes:
- ./tempo-data:/var/tempo,
tempo:
image: *tempoImage
command: [ "-config.file=/etc/tempo.yaml" ],
volumes:
- ./tempo.yaml:/etc/tempo.yaml,
- ./tempo-data:/var/tempo,
ports:
- "14268:14268"
- "3200:80" # tempo
- "9095:9095"
- "4417:4317" # otlp grpc
- "4418:4318" # otlp http
- "9411:9411"
depends_on:
- init
初始化容器运行一个命令将 /var/tempo
目录的所有者更改为用户 10001
,Tempo 服务使用 grafana/tempo
镜像启动,并指定配置文件,暴露多个端口以便进行跟踪。这些端口是为了支持不同的跟踪协议。
有了普罗米修斯(Prometheus)、洛基(Loki)和 Tempo 设置好之后,我们可以与 Grafana 集成以实现可视化。
首先,在 Grafana 中添加 Prometheus 作为数据源。访问 localhost:3000
,在那里 Grafana 正在运行。在登录页面,分别输入 admin
作为用户名和密码。
在接下来的页面上,你可以更改你的密码,或跳过并继续用默认密码。
1. 在Grafana中添加数据源登录后,进入数据源,点击“添加新数据源”,然后找到Prometheus并配置它。
在“连接”部分中,将Prometheus服务器的URL输入为http://prometheus:9090
(请根据实际情况填写)。保持其他设置为默认。
往下滚动,然后点击“保存和测试”按钮,检查一下Prometheus和Grafana的连接。
同样,在新的数据源中搜索Loki数据源并进行配置。在Loki连接URL中输入http://loki:3100
,然后点击“保存并测试”来验证。
将 Tempo 添加为最终的数据来源。设置连接 URL 为 http://tempo:80
。最后,点击“保存并测试”以验证连接。
添加这些整合让你可以创建看板,集中显示指标数据、日志以及跟踪信息,全部都在一个地方。
- 配置 Grafana 进行可视化
在仪表板选项卡中创建 Grafana 仪表板,以便可视化您的指标、日志和追踪。例如,您可以创建一个显示 HTTP 请求速率、信息日志和追踪延迟的仪表板。
在接下来的面板中,点击一下“添加可视化面板”以添加Prometheus、Loki和Tempo。
从可用的数据源中选择Prometheus,配置其面板。在查询部分,选择http_request_total
,然后运行查询,以获取应用总HTTP请求的时间序列图。点击“保存”按钮保存配置,并将面板添加到仪表盘上。
在仪表盘上,你会看到一个面板,显示应用程序的总HTTP请求,以时间序列图的形式呈现。现在,在“添加”下拉菜单中选择“可视化”,同样以类似的方式添加Loki。
在数据源选择中选择Loki,在过滤器中选择job,并将右上角的可视化设置为表格。最后,应用更改并保存面板。
像处理洛基那样,再添加一个面板,将数据源设置为Tempo,将可视化方式设为表格,这样就能清晰地看到应用程序中生成的所有追踪。
创建了三个面板之后,你可以根据需要调整它们在Grafana仪表板的大小和位置。
6. 端到端测试:使用基于追踪的测试和Tracetest一旦您的可观测性栈正常运行,下一步就是确保所有内容都能正常工作。但是,如何测试您收集的所有追踪、日志和指标不仅被正确捕获,还能提供有意义的洞察?这时候,Tracetest 就能派上用场了。它通过基于追踪的测试来提升您端到端测试的水平,达到新的高度。
1. 注册试试 TraceTest我们从注册 Tracetest 开始吧。访问 Tracetest 的 注册 页面,然后用您的 Google 或 GitHub 账户登录。
在您的 Tracetest 账户中创建一个新组织。
在组织中,也必须创造一个新环境。
2. 配置 Tracetest 代理程序回到你的 docker-compose.yml
文件,并添加一个服务来运行 Tracetest 代理容器。
tracetest-agent: # 跟踪测试代理: 用于收集和分析跟踪数据的代理
image: kubeshop/tracetest-agent # 镜像: 从kubeshop仓库获取的镜像
environment: # 环境变量: 用于配置代理的环境变量
- TRACETEST_API_KEY=${TRACETEST_TOKEN} # 跟踪测试API密钥=${TRACETEST_TOKEN}
- TRACETEST_ENVIRONMENT_ID=${TRACETEST_ENVIRONMENT_ID} # 跟踪测试环境ID=${TRACETEST_ENVIRONMENT_ID}
在这里可以找到你的 [TRACETEST_TOKEN](https://app.tracetest.io/retrieve-token)
和 [TRACETEST_ENVIRONMENT_ID](https://app.tracetest.io/retrieve-token)
。
现在,在根目录下的 .env 文件中添加你从 <https://app.tracetest.io/retrieve-token>
该链接复制的 TRACETEST_API_KEY
和 TRACETEST_ENVIRONMENT_ID
。
# 设置Tracetest组织令牌
TRACETEST_TOKEN="<your-tracetest-organization-token>"
# 设置环境ID
TRACETEST_ENVIRONMENT_ID="<your-environment-id>"
# 设置OTEL导出器的端点
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="http://tempo:4318/v1/traces"
再次运行 docker-compose up
命令来运行 Tracetest Agent 以及其他服务。
在 Tracetest UI 的设置里,进入“追踪摄入功能”标签页并选择 Tempo 作为您的追踪后端。启用追踪摄入功能,选择连接类型为 HTTP,并在 URL 栏输入 http://tempo:80
。最后,点击“测试连接”按钮,然后点击“保存”以测试与 Tempo 的连接,并保存后端设置。
您也可以通过命令行(CLI)来使用它。首先,在您的终端中配置Tracetest CLI命令。
tracetest 配置命令 --token <令牌> --environment <环境 ID>
创建一个连接到Tempo的文件。
# tracetest-trace-ingestion.yaml
type: 数据存储
spec: 规格
id: current
name: Grafana Tempo
type: tempo
default: 默认
tempo:
type: HTTP
HTTP:
URL: http://tempo:80
tls:
insecure: true
运行此命令即可。
tracetest apply datastore -f tracetest-trace-ingestion.yaml
现在发送一个GET
请求到http://app:8081
来触发一个测试,在应用运行时。
前往“跟踪”选项卡,查看应用程序中的跟踪流。
4. 使用Tracetest命令行界面来自动化这些测试现在让我们来看看如何自动化这些测试。前往“自动化选项卡”,按照命令行配置步骤进行操作,这样来自动化测试。
你可以下载 untitled.yaml
,然后将其重命名为 tracetest-test.yaml
,并在文件中添加 YAML 格式的测试用例,运行 tracetest run test --file tracetest-test.yaml --output pretty
命令以自动化测试。
例如,你可以将声明添加到配置文件中,如下所示。
type: 测试 (Test)
spec:
id: eKmofseIR
name: 未命名 (Untitled)
trigger:
type: http
http 请求:
method: GET
Url: http://app:8081
headers:
- key: Content-Type
value: application/json
选择器: span[tracetest.span.type = "http"]
# 断言定义了要运行的检查。在这种情况下,所有
# http 跟踪跨度将被检查,状态码应为 200
- 断言:
- http.status_code = 200
启动测试。
tracetest run test --file ./tracetest-test.yaml --output pretty
✔ 运行组测试: #v52GDwRHR (https://app.tracetest.io/organizations/_HDptBgNg/environments/ttenv_6da9b4f817b8b9df/run/v52GDwRHR)\
总结: 1 通过的, 0 失败, \
✔ 未命名的测试 (https://app.tracetest.io/organizations/_HDptBgNg/environments/ttenv_6da9b4f817b8b9df/test/mMtWIwgNg/run/5/test) - 追踪 ID: 4362a098956f9bf8790fc4b37e1ad99f
这就是Tracetest通过测试所有生成的追踪数据,并利用这些遥测数据自动化端到端测试流程来帮助你实现端到端的可观测性的方式。
结论端到端的可观察性对于有效管理和优化复杂应用程序来说至关重要。通过将Grafana与Prometheus、Loki和Tempo集成在一起,你可以获得系统性能、日志和跟踪数据的全面视图。这种设置不仅有助于监控,还帮助你调试和优化应用程序。
通过 Tracetest,你可以通过主动测试进一步确保系统的可靠性。正如你今天所见,实施这些可观测性实践可以打造一个更加健壮和易于维护的系统,提供对现代 DevOps 实践至关重要的洞察。
常见问题(FAQ) 端到端测试都有哪些步骤?端到端测试通常包括计划阶段,定义测试用例和场景;设置环境,包括配置环境和集成必要的工具;执行,运行测试用例以模拟真实用户的行为;以及验证,分析结果以确保系统按预期运行。在基于踪迹的测试上下文中,这还包括检查踪迹以验证内部过程。
Q. Prometheus是否是一个可视化工具?不,Prometheus 不是一个可视化工具。它主要是一个指标存储和监控平台。它负责收集、存储和查询时序数据。不过,Prometheus 可以很好地与诸如 Grafana 之类的可视化工具集成,这些工具可以用来为 Prometheus 中的指标创建仪表板和可视化图表。
什么是“追踪测试”中的“追踪”?在测试环境下,一个追踪代表了请求或交易在系统中经过各种服务的过程。在分布式系统环境下,追踪有助于跟踪请求在不同组件间的流动,从而更容易识别整个过程中的性能瓶颈、错误或延迟问题。
Q. 你知道什么是Grafana和Prometheus吗?(Grafana是一个开源的数据可视化工具)和(Prometheus是一个开源的监控系统和时间序列数据库)?Grafana 是一个开源的可视化平台,用于创建监控指标、日志和跟踪的交互式仪表板。Prometheus 则是一个指标收集和存储工具。两者结合起来,形成了一套强大的监控系统,Prometheus 负责收集和存储数据,而 Grafana 负责可视化这些数据,从而提供更深入的洞察和更有效的故障排除。
共同学习,写下你的评论
评论加载中...
作者其他优质文章