如何使用 Grafana 监控文件系统状态

当 JuiceFS 文件系统部署完成并投入生产环境,接下来就需要着手解决一个非常重要的问题 —— 如何实时监控它的运行状态?毕竟,它可能正在为关键的业务应用或容器工作负载提供持久化存储支持,任何小小的故障或性能下降都可能造成不利的影响。

JuiceFS 启动后会实时发布自身的运行状态数据,只需结合 Granafa 和 Prometheus 这两款开源工具即可相对轻松地建立一套监控系统。它将会通过采集文件系统的关键指标,例如读写吞吐量、IOPS、延迟、存储利用率、请求分布等,并汇集到一个直观的仪表板,让用户能够实现全方位的监控和可视化。

本文将详细介绍如何使用 Grafana 来监控 JuiceFS,在后续的系列文章中将为大家深入解读 JuiceFS 状态指标,敬请期待。

Grafana 是一个开源的监控和分析时间序列数据的仪表板和可视化工具,它主要用于互联网的基础设施和应用分析,传感器数据、应用程序分析以及监控。用户可以根据自己的需求创建和定制 Grafana 仪表盘来显示最关心的数据,跟踪和分析关键性能指标(KPIs)。

Grafana 支持多种数据源,包括 Prometheus、InfluxDB、Elasticsearch 等,可以从多个来源汇集数据,在统一的界面中进行分析和可视化。借助简单易用的查询编辑器,用户能够更深入地了解数据,并从中得到更多的信息。

JuiceFS 默认通过 9567 端口实时输出文件系统的状态指标,用户可以通过 Prometheus 收集这些这些指标数据,然后通过 Grafana 将这些指标以图形化的方式展现出来。

Prometheus 和 Grafana 都是开源软件,可以自行下载部署使用。但部署和维护这些系统会增加运维工作量,如果想更简单便捷地为 JuiceFS 构建可视化状态监控系统,可以尝试用 Grafana Cloud,它一站式地提供了所需地系统,而且包含一定的免费额度,足以满足起步阶段的使用需求。

Grafana Cloud

Grafana Cloud 是一项 SaaS 服务,提供免费、按量付费(Pay as you go)和高级三种订阅计划。不同的订阅计划包含不同的资源,免费与付费的主要差别在于指标数据的保留时长,免费计划会保留 14 天,付费计划则会保留 13 个月。

Grafana Cloud 的优势在于它通过 SaaS 服务直接为用户提供了 Prometheus 和 Grafana,这样就一站式地解决了数据的收集和可视化需求,而且后期维护和规模扩展都不需要用户介入。

通过 Grafana Cloud 为 JuiceFS 搭建监控系统的过程大致如下:

  1. 准备并挂载 JuiceFS 文件系统

  2. 注册 Grafana Cloud 账号,创建 Stack 资源;

  3. 在本地安装配置 grafana-agent,启动资源上报;

  4. 配置 JuiceFS Dashboard,开始使用。

第一步 准备 JuiceFS 文件系统

JuiceFS 的社区版和云服务版都会实时发布 Prometheus 格式的状态指标数据,不过这里需要注意区分:

  • 社区版默认通过客户端所在主机的 http://127.0.0.1:9567 发布 Prometheus 格式的状态指标

  • 云服务会通过 SaaS 平台地址同时发布 Prometheus 和 JSON 两种格式的指标(需将地址中的 VOLUME_NAME 替换为文件系统名,将 API_TOKEN 替换为对应的 token)。

  • Prometheus 格式地址

  • JSON 格式地址

如上图,JuiceFS 云服务控制台可以查看文件系统最近 7 天的状态指标,箭头所指的超链接对应前述的两个状态发布地址,可以直接复制给 Prometheus 使用。

另外,只有挂载的文件系统才有状态指标,所以在开始之前需要先准备好文件系统。

对于 JuiceFS 文件系统的创建方法,社区版和云服务略有差别,但原理相同。如果还不熟悉相关操作,可以先查阅官方文档了解详情。

第二步 注册 Grafana Cloud 账号

Grafana Cloud 将提供给用户的资源称之为 Stack(技术栈),因为它在 Grafana 的基础上还额外提供 Prometheus、Loki 等许多监控相关的服务。

注册账号后就会获得一个 xxx.grafana.net 专属 URL,比如 https://juicefs.grafana.net ,这个地址可以直接访问自己的 Grafana 控制台。

第三步 配置 Prometheus 代理程序

拥有了 Grafana Cloud 账号和 Stack,接下来就可以开始配置数据源了,如下图所示,Grafana Cloud 提供了一系列可以连接的数据源。

JuiceFS 默认通过 Prometheus 格式公开状态信息,因此这里选择 Hosted Prometheus metrics,然后在 Configuration Details 中根据实际情况进行配置。

1. 选择收集指标的方法

这里有两种可选的方式:

  • 第一种是在本地安装 Grafana Agent 客户端,由它负责将 JuiceFS 的状态指标上传到云上的 Prometheus 服务。

  • 第二种是从本地维护的 Prometheus 复制数据到云端。

第一种的特点是指标数据完全保存在云端,本地没有数据副本,可以结合 Grafana Cloud 的警报服务一起使用。第二种则需要在本地自行部署和维护 Prometheus 实例,数据完全保存在本地,同时会拷贝一个副本到云端使用。

本文会以第一种方式为例来介绍。另外,如果要在 Kubernetes 环境种使用,可以点击相关的按钮查看说明,本文不做相关介绍。

2. 选择系统及架构

因为要将这个 Grafana Agent 安装到本地 JuiceFS 客户端所在的主机,因此需要根据本地主机的系统和架构进行选择。

3. 下载 Grafana Agent 客户端

将这里的代码复制并粘贴到 JuiceFS 所在的本地主机运行,这段代码会将 grafana-agent 客户端下载到当前目录并赋予可执行权限。而这个 grafana-agent 程序本质上就是一个经过定制的 Prometheus 客户端。

4. 创建配置文件

这一步将为 grafana-agent 生成一个配置文件,如下图所示,这其实就是一个 Prometheus 的配置文件,但它将 Grafana Cloud 平台提供的服务地址以及相关的设置都配置好了。

将生成的命令粘贴到 JuiceFS 所在的主机,它会把相关配置信息写入当前目录的 agent-config.yaml 文件。

为了让它能够收集 JuiceFS 文件系统的状态指标,需要进一步修改这个配置文件,一方面要添加 JuiceFS 发布状态指标的地址,另一方面要调整数据 scrape_interval 抓取数据的频率。

前面已有介绍,社区版 JuiceFS 默认通过 9567 端口发布状态指标,如下图。

但是,在同一台主机上同时用不同的访问方式挂载文件系统,JuiceFS 就会随机分配一个端口给第二个访问方式。如下图,这个主机以经通过 mount 方式挂载了文件系统,同时又通过 WebDAV 方式进行挂载,这时就会分配一个随机的端口给 WebDAV 协议用做状态指标发布。

根据查到的实际信息编辑 agent-config.yaml,可以参考下面这个修改后的示例:

metrics:global:scrape_interval: 15sconfigs:- name: hosted-prometheusscrape_configs:- job_name: nodestatic_configs:- targets: ['localhost:9100']- job_name: juicefsstatic_configs:- targets: ["localhost:9567", "localhost:35013"]remote_write:- url: https://prometheus-prod-36-prod-us-west-0.grafana.net/api/prom/pushbasic_auth:username: 1480721password: glc_eyJvIjo`</pre>
  • 第三行,scrape_interval 修改为 15s (或更小)可以确保抓到 JuiceFS 的实时状态变化;

  • 第十行,添加 juicefs 相关的配置,在 targets 部分的数组中可以根据实际情况添加所有发布状态指标的地址。

5. 启动 agent

在 JuiceFS 所在的主机上粘贴并运行命令,grafana-agent 程序即可开始工作。

如有需要,还可以把 grafana-agent 客户端配置成 systemd 服务开机自动运行,下面是一个 grafana-agent.service 的配置文件示例:

[Unit]
Description=Grafana Agent
After=network-online.target[Service]
ExecStart=/opt/grafana-agent/grafana-agent-linux-amd64 --config.file=/opt/grafana-agent/agent-config.yaml
Restart=always
User=root
Group=root[Install]
WantedBy=multi-user.target

使用该自启动配置时,需要把 grafana-agent-linux-amd64 程序和配置文件 agent-config.yaml 拷贝到 /opt/grafana-agent 目录;

第四步 配置 Grafana Dashborad

前面三个步骤将本地的 JuiceFS 与 Grafana Cloud 提供的 Prometheus 服务进行了连通,grafana-agent 程序会按照配置每隔 15s 抓取一次 JuiceFS 的状态指标,然后将数据实时推送到云端。

有了实时收集的状态数据,接下来要把它们用图形化的方式展现出来,这就需要在 Grafana 上创建 Dashboard 来实现。

创建 Dashboard 有两种常用的方式:

  • 第一种,是创建一个全新 Dashboard,自己根据实际的监控需要来定义查询、图表、状态、表格等。
  • 第二种,是导入一个预先创建好的的 Dashboard 模板,可以使用 json 格式的文件模板,也可以使用 Grafana 官方库提供的公共模板。

1. 使用 Dashboard 模板

JuiceFS 官方提供了预定义的 Grafana Dashboard 模板 grafana_template.json 用于展示挂载点、S3 网关、Kubernetes 及 Hadoop Java SDK 的指标。该模板已经收录在 Grafana 官方 Dashboard 仓库,你可以直接使用这个 URL 载入,也可以使用编号 20794 载入。

在导入模板时,可以自定义 Dashboard 的名称和存放的位置,通常保持默认即可。

如上图,官方模板中包含了大量的状态信息,界面中堆叠的一个个信息块叫做 Panel,用户可以根据需要调整这些 Panel 的位置、样式或增删。

2. 手动创建 Dashboard

你可以从零开始创建一个全新的 Dashboard,也可以在 JuiceFS Dashboard 模板的基础上进行改造。

Dashboard 是由一系列 Panel 所组成的(Grafana 中也把 Panel 叫做 Visualization),添加一个 Visualization 就是添加一个 Panel。

一个 Panel 用来展示一个状态指标,在右上角的下拉菜单中可以选择数据展现的形式,比如 Chart、table 或 stat 等。

在下方的 Query 区域,选择 Data source,即收集了 JuiceFS 状态指标的 Prometheus 服务。然后在 Metrics browser 中选择要查询的指标。侧栏有一系列选项可以对显示的内容做细节微调,比如颜色,条件格式等。

如下图,你可以自由切换 Dashboard 中的 Panel,比如将 JuiceFS 官方模板中部分 Chart 图表改成 Stat 类型,当然,也可以为同一个指标创建多个不同展现形式的 Panel。

至此,JuiceFS 的可视化监控系统就搭建完毕了,你可以参考这篇文档了解各个状态指标的含义。限于篇幅,我们会另写文章来专门解读 JuiceFS 各个状态指标,欢迎感兴趣的读者保持关注。

总结

本文主要介绍了如何使用 Grafana Cloud 为 JuiceFS 搭建可视化的状态监控系统,为了满足不同经验背景的读者需要,每个环节尽量选择最简单的方式来实现。

事实上,任何 IT 系统的搭建都是一个个选择堆叠而成。不难发现,在本文介绍的步骤中,有很多环节是可以有其他的选择,比如,Prometheus 的数据上报方式,文中选择了 Grafana Agent,而读者还可以选择用本地自建的 Prometheus。所以,本文只是抛砖引玉,最终的部署和使用方法还是需要读者自己灵活选择和搭配。

最后,希望本文介绍的步骤能够对大家搭建 JuiceFS 监控系统带来一定的帮助。如果你有任何疑问,欢迎到 JuiceFS 社区用户群中进行提问和讨论。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于jmeter的性能全流程测试

01、做性能测试的步骤 1、服务器性能监控 首先要在对应服务器上面安装性能监控工具&#xff0c;比如linux系统下的服务器&#xff0c;可以选择nmon或者其他的监控工具&#xff0c;然后在jmeter模拟场景跑脚本的时候&#xff0c;同时启动监控工具&#xff0c;这样就可以获得jm…

[lesson21]对象的构造顺序

对象的构造顺序 对象的构造顺序一 对于局部对象 当程序执行流到达对象的定义语句时进行构造 对象的构造顺序二 对于堆对象 当程序执行流到达new语句时创建对象使用new创建对象将自动触发构造函数的调用 s/20230724024159.png?origin_urlimage-2.png&pos_idimg-HTOH6…

纯小白蓝桥杯备赛笔记--DAY4(数学数据结构图论)

文章目录 数学质因数分解辗转相除法求最大公约数最小公倍数&#xff1a;快速幂乘法逆元费马小定理 逆元乘法逆元素数判定与埃式筛法朴素素数判定法埃式筛法 图论并查集T3:真题--合根植物DijkstraFloyd 基础算法递归&#xff0c;循环&#xff0c;前缀和&#xff0c;差分STL 数学…

ETL结合飞书快速实现业务信息同步

一、ETL工具介绍 ETLCloud数据集成平台是一款针对IT以及数据工程师推出的全域数据集成平台产品。它是集实时数据集成和离线数据集成以及API发布为一体的数据集成平台。与其他开源数据集成工具相比&#xff0c;系统采用轻量化架构、具有更快的部署速度、更快的数据传输速度、更…

什么是RMVB视频?如何把视频转成RMVB格式?视频格式转换的方法

一&#xff0c;什么是RMVB视频格式 RMVB是一种视频文件格式&#xff0c;它基于RealNetworks公司开发的RealMedia编解码器&#xff0c;被广泛应用于互联网上的视频流媒体传输和下载。RMVB文件通常具有较小的文件大小&#xff0c;同时保持较高的视频质量&#xff0c;因此在网络传…

【Kafka】Zookeeper集群 + Kafka集群

Zookeeper 概述 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目。 Zookeeper 工作机制★★★ Zookeeper从设计模式角度来理解&#xff1a; 1&#xff09;是一个基于观察者模式设计的分布式服务管理框架&#xff1b; 它负责存储和管理大家都关…

TDengine too many open files

too many open files 是比较常见的报错&#xff0c;尤其使用TDengine 3.0 集群时&#xff0c;大概率会遇到。这个报错很简单&#xff0c;但要想顺利解决&#xff0c;却涉及到很多知识点。 目录 知识点&#xff1a;fs.nr_open知识点&#xff1a;file-max & fs.file-nr知识点…

Intrigue Core:一款功能强大的攻击面枚举引擎

关于Intrigue Core Intrigue Core是一款功能强大的开源攻击面枚举引擎&#xff0c;该工具可以帮助广大研究人员更好地管理应用程序的攻击面。 Intrigue Core集成了各种各样的安全数据源&#xff0c;可以将这些数据提取到标准化的对象模型中&#xff0c;并通过图形数据库跟踪关…

2024认证杯数学建模A题保暖纤维保暖能力原创论文讲解(含完整python代码)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了认证杯数学中国数学建模网络挑战赛第一阶段A题目保暖纤维的保暖能力完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品…

C++高级特性:柯里化过程与std::bind(六)

1、柯里化过程 1.1、operator()的引入 现在需要完成这样一个需求&#xff1a;有一个函数每次调用返回的结果不一样。例如&#xff1a;两次调用的返回值都不一样那么就可以达到这种目的 1.1.1、简单点的写法 可以给一个全局的变量&#xff08;静态变量&#xff09;&#xff…

SCI一区 | Matlab实现INFO-TCN-BiGRU-Attention向量加权算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测

SCI一区 | Matlab实现INFO-TCN-BiGRU-Attention向量加权算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现INFO-TCN-BiGRU-Attention向量加权算法优化时间卷积双向门控循环单元注意力机制多变量时间序列预测预测效果基本介绍模型描述程…

实践笔记-linux内核版本升级(centos7)

linux内核版本升级 1.查看当前内核版本信息2.采用yum方式进行版本升级2.1导入仓库源2.2选择 ML 或 LT 版本安装2.3设置内核启动 3.删除旧版本内核 1.查看当前内核版本信息 #查看操作系统版本 cat /etc/redhat-release #查看系统内核 uname -r2.采用yum方式进行版本升级 2.1导…

紫光展锐—2024上海硬核科技企业百强榜TOP2,支撑新质生产力蓄势聚能

近日&#xff0c;在上海市经济信息化委员会指导下&#xff0c;上海市产业技术创新促进会联合市科协发布了《2024上海硬核科技企业TOP100榜单》。作为芯片科技创新的先锋&#xff0c;紫光展锐凭借在5G、AI、6G、卫星通信等前沿技术领域的持续创新&#xff0c;积极支撑新质生产力…

应急响应-战前反制主机HIDSElkeid蜜罐系统HFish

知识点 战前-反制-平台部署其他更多项目&#xff1a; https://github.com/birdhan/SecurityProduct HIDS&#xff1a;主机入侵检测系统&#xff0c;通常会有一个服务器承担服务端角色&#xff0c;其他主机就是客户端角色&#xff0c;客户端加入到服务端的检测范围里&#xff…

GMSSL-通信

死磕GMSSL通信-C/C++系列(一) 最近再做国密通信的项目开发,以为国密也就简单的集成一个库就可以完事了,没想到能有这么多坑。遂写下文章,避免重复踩坑。以下国密通信的坑有以下场景 1、使用GMSSL guanzhi/GmSSL进行通信 2、使用加密套件SM2-WITH-SMS4-SM3 使用心得 ​…

OSCP靶场-- Sybaris

OSCP靶场–Sybaris 考点(redis MODULE LOAD命令执行) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.158.93 -sV -sC -Pn --min-rate 2500 -p- Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-11 04:24 EDT Nmap scan report for 192.168.158.93…

鸿蒙TypeScript学习第13天:【元组】

1、TypeScript 元组 我们知道数组中元素的数据类型都一般是相同的&#xff08;any[] 类型的数组可以不同&#xff09;&#xff0c;如果存储的元素数据类型不同&#xff0c;则需要使用元组。参考文档&#xff1a;qr23.cn/AKFP8k 元组中允许存储不同类型的元素&#xff0c;元组…

第四百五十六回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 使用方法 3. 内容总结 我们在上一章回中介绍了"overlay_tooltip用法"相关的内容&#xff0c;本章回中将介绍onBoarding包.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的onBo…

睿尔曼复合机器人之底盘操作流程

以操作流程为例&#xff0c;介绍底盘的操作流程。 开机&#xff1a;长按电源按钮&#xff0c;蜂鸣器短响两声&#xff0c;当第三声变长鸣后松开&#xff0c;等待机器开机。 使用&#xff1a; 建立通讯&#xff1a;主要采用无线WiFi与底盘进行通讯连接 无线连接方式&#xff…

docker最简单教程(使用dockerfile构建环境)

一 手里有的东西 安装好的docker+dockerfile 二 操作 只需要在你的dockerfile文件下执行命令 docker build -t="xianhu/centos:gitdir" . 将用户名、操作系统和tag进行修改就可以了,这就相当于在你本地安装了一个docker环境,然后执行 docker run -it xianhu/ce…