Linux性能监控:sar的可视化方案
在当今的IT环境中,系统性能监控是确保应用程序稳定运行和快速响应问题的关键。Linux作为一种广泛使用的操作系统,拥有多种性能监控工具,其中sar(System Activity Reporter)因其全面性和灵活性被广泛采用。然而,传统的sar输出格式为文本,虽然有生成图的功能 ,但不易于快速分析和实时监控。为了克服这一不足,本文设计了一套完整的可视化方案,通过实时展示sar的数据,极大地提升了性能监控的效率和直观性。
方案设计
- sar:sysstat中的性能监控工具
sar是sysstat工具包中的一个核心组件,能够从系统的多个方面(如CPU、内存、I/O、网络等)收集性能数据。使用命令sar -A 1可以每秒采集一次系统的全面性能数据,这为实时监控提供了坚实的数据基础。sar不仅能提供实时数据,还能存储历史数据,便于后续分析。建议使用较新的sysstat版本。
Github链接 - vsar:自研的sar数据处理程序
为了实现sar数据的可视化和实时性,开发了一款名为vsar的小型程序,可免费用于非商业用途。具备极低的资源占用,能够高效处理实时输出的sar数据以及离线存储的sar日志,并将这些数据写入InfluxDB数据库。vsar的引入,使得sar数据的流式处理成为可能,从而为数据可视化奠定了基础。
Github链接 - InfluxDB:时序数据库
InfluxDB是一款高性能的时序数据库,专为处理时间序列数据而设计。在本文的方案中,InfluxDB用于存储来自vsar的数据。这种结构化的存储方式,使得性能数据的检索和分析更加高效。InfluxDB的灵活性和可扩展性确保了其能够应对大规模数据处理需求。
Github链接 - Grafana:数据可视化平台
Grafana是一个开源的数据可视化和监控平台,支持多种数据源,包括InfluxDB。在本文的方案中,Grafana用于将存储在InfluxDB中的性能数据进行可视化展示。用户可以通过Grafana的仪表板实时查看系统性能指标,以图形化的方式轻松识别系统状态、趋势和异常。
Github链接
部署方案
在本章节中,我们将详细介绍如何部署这套Linux性能监控方案。整个方案涉及多台机器,分别用于数据采集和可视化展示。我们需要将sar和vsar部署在被监控的机器上,而InfluxDB和Grafana则可以部署在同一台机器上。
部署sar
首先,在被监控的机器上安装sysstat工具包,以便使用sar命令:
对于Debian/Ubuntu系统:
sudo apt install sysstat
对于Red Hat/CentOS系统:
sudo yum install sysstat
或者,也可以源码安装,到Github链接下载sysstat包,本文以sysstat-12.7.6.tgz为例:
(1)先进行解压
tar zxvf sysstat-12.7.6.tgz
(2)进入解压后的sysstat目录后,进行配置
cd sysstat-12.7.6
sh ./configure
(3)编译,确保编译机上安装了gcc
make
(4)安装
make install
(5)查看安装情况
[root@VM-8-2-centos sysstat-12.7.6]# which sar
/usr/local/bin/sar
[root@VM-8-2-centos sysstat-12.7.6]# sar -V
sysstat version 12.7.6
(C) Sebastien Godard (sysstat <at> orange.fr)
[root@VM-8-2-centos sysstat-12.7.6]#
部署vsar
接下来在被监控的机器上安装vsar。打开vsar的Github链接下载vsar包,本文以
vsar_0.0.2.20240725_beta_x64_centos8.tgz 为例,直接拷贝到安装目录解压即可:
tar zxvf vsar_0.0.2.20240725_beta_x64_centos8.tgz
部署influxdb
找一台机器用于部署influxdb。
首先,制作一个源,Debian源和yum源的制作请参考官方指导。
然后,安装influxdb:
对于Debian/Ubuntu系统:
sudo apt install influxdb
对于Red Hat/CentOS系统:
sudo yum install influxdb
部署Grafana
grafana软件可以与influxdb部署在同一台机器上。
首先,制作一个源,Debian源和yum源的制作请参考官方指导。
然后,安装grafana:
对于Debian/Ubuntu系统:
sudo apt install grafana
对于Red Hat/CentOS系统:
sudo yum install grafana
启动程序
启动influxdb
第一步,启动influxdb服务:
sudo systemctl start influxdb
sudo systemctl enable influxdb
第二步,创建数据库:
通过influx命令进行数据库使命行,创建用于存储sar数据的数据库:
[root@VM-8-2-centos ~]# influx
Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10
>CREATE DATABASE sar_test_db;
>
启动grafana
第一步,启动grafana服务:
sudo systemctl start grafana
sudo systemctl enable grafana
第二步,访问Grafana:
打开浏览器,访问Grafana Web界面(默认端口为3000):
http://82.150.141.106:3000
登录账户默认为admin,登录密码默认为admin。grafana页面如下所示:

启动vsar
第一步,进入vsar的安装目录下的bin目录
[root@VM-8-2-centos bin]# pwd
/usr/local/vsar/bin
[root@VM-8-2-centos bin]# ls
start.sh stop.sh vsar
第二步,查看此软件的用法
[root@VM-8-2-centos bin]# sh start.sh -h
Usage: sh start.sh [OPTION...]
Write sar data into influxdb.USAGE: sh start.sh [-v] [-c] [-h] [-u influxdb_url] [-b batch_cnt] [-H host] [-s sar_command]-b count Data count in one batch-H host Hostname or ip of current machine-u influxdb_url Influxdb url for writing data-s sar_command Specify a sar command instead of 'sar -A 1'-c Copyright information-h Give this help list-v Application version information
第三步,启动vsar软件
通过帮助信息可以知道,启动此软件,需要指定influxdb的写数据url(-u)、一个批次写多少条数据(-b)、主机IP或名称(-H)。
[root@VM-8-2-centos bin]# sh start.sh -u http://localhost:8086/write?db=sar_test_db -H server_centos8 -b 20
[root@VM-8-2-centos bin]# nohup: appending output to 'nohup.out'[root@VM-8-2-centos bin]#
至此,软件服务都启动完毕。
可视化展示
前文中已经启动了所有软件服务,采集到的监控数据都已被写入influxdb中了,接下来就是配置grafana对接influxdb,将数据实时展示出来。
添加数据源
- 首先,登录Grafana,按下图所示,点击"Add new connection",目的是将influxdb配置成grafana的一个数据源。
2. 然后,在下一个页面的搜索框中输入"influxdb”,点击influxDB按钮,操作如下:
3. 接下来,点“Add new data source"。
4. 输入数据源名称和influxdb的url,由于influxdb和grafana都装在一台机器上,所以influxdb的url是http://localhost:8086
5. 填写数据库名称,前文已经创建好的sar_test_db,点击"save & test"验证连通性并保存。

至此,数据库已添加完毕,influxdb已成功接入grafana。
添加dashboard
数据源准备好后,只需要配置dashboard就可以进行数据的图形化展示,步骤如下:
- 选择Dashboards页面

- 新建dashboard

- 添加一个可视化展示

-
选择刚刚创建好的数据源

-
在进入的Edit panel页面中配置查询语句,选择measurement,也就是数据库中的表名。本文以cpu_usage表为例。

-
添加field,也就是要展示的数据项,本文以cpu_usage表的%usr和%sys为例。

-
添加筛选条件,假设要看每个cpu核的情况,而不是all cpu的情况。

-
添加分组条件,以机器host作为第一级分组,以cpu核编号做为第二级分组。

-
保存

-
保存页面需要为此dashboard起个名称。

-
放大数据展示

-
选择要展示的时间段,比如实时展示近15分钟的数据。

-
最终的CPU使用率展示图

性能监控展示示例
用户可以根据自己想展示的数据灵活地编写dashboard的查询语句。以下为一些性能监控的示例:
- CPU监控
2. 内存监控
3. 硬盘监控
4. 文件系统监控
5. 负载监控
6. 网络监控
7. 块设备监控
8. swap监控
9. socket监控

意义
克服传统sar的局限性
传统的sar工具虽然强大,但其输出通常为文本格式,缺乏可视化功能。这使得用户在分析系统性能时往往需要借助其他工具来处理和解释数据,增加了复杂性。通过将sar数据实时导入到InfluxDB并使用Grafana进行可视化展示,我们的方案大大简化了数据分析流程,使得系统性能的监控变得更加直观和高效。
提高监控的实时性
在性能测试过程中,实时性是关键。传统的sar无法提供瞬时的可视化和警报,可能导致关键性能问题被延迟发现。我们的方案通过vsar程序实现了实时数据的采集和传输,使得分析人员可以在Grafana仪表板上立即查看系统状态,并在指标超过阈值时进行报警。这种实时监控能力使团队能够快速响应潜在问题,极大地减少了识别和解决性能瓶颈的时间。
增强性能测试的准确性
性能测试需要对系统在不同负载下的行为进行准确评估。通过本方案,测试人员可以在测试期间实时监控各种性能指标,如CPU利用率、内存消耗、网络带宽等。这种实时的数据反馈使得测试人员能够动态调整测试策略,并更精确地识别系统瓶颈和优化点。
简化数据分析与决策
本方案提供的可视化工具不仅仅是为了实时监控,它还能帮助用户更好地理解历史数据和趋势。通过Grafana的强大可视化功能,管理者能够快速生成报表和分析,支持更明智的决策。可视化数据直观、易懂,为团队沟通和问题解决提供了有力支持。
降低实施复杂性
本文的方案极大地简化了系统监控的部署过程。vsar程序的轻量级设计确保了其在资源消耗方面的优势,使其适用于各种规模的系统。这种降低实施复杂性的特性,不仅减少了学习和配置的成本,还加速了监控系统的部署和使用。
结束语
在现代IT基础设施中,系统性能监控已成为确保业务连续性和优化资源利用的关键环节。传统工具如sar虽然强大,但其在可视化方面的不足,限制了其在复杂和动态环境中的应用。通过引入自研的vsar程序,并结合InfluxDB和Grafana,我们的方案不仅克服了这些不足,还显著提升了监控的实时性和可视化能力。这种一体化的解决方案,使得系统性能监控变得更加直观、准确和高效,大大地提升了系统的可靠性和用户体验。
相关文章:
Linux性能监控:sar的可视化方案
在当今的IT环境中,系统性能监控是确保应用程序稳定运行和快速响应问题的关键。Linux作为一种广泛使用的操作系统,拥有多种性能监控工具,其中sar(System Activity Reporter)因其全面性和灵活性被广泛采用。然而…...
如何录制电脑屏幕视频,5招让您成为电脑录制高手
在今天,屏幕录制成为每个电脑使用者都应掌握的基础技能。不论是教学分享、会议记录还是游戏直播,屏幕录制都能帮你捕捉那些重要的瞬间,将无形的信息转化为有形的视频。那么,如何录制电脑屏幕视频呢?今天,我…...
AI届的新宠:小语言模型(SLM)?
大语言模型(LLM)在过去几年产生了巨大影响,特别是随着OpenAI的ChatGPT的出现,各种大语言模型如雨后春笋般出现,国内如KimiChat、通义千问、文心一言和智谱清言等。 然而,大语言模型通常拥有庞大的参数&…...
PMP模拟题错题本
模拟题A 错题整理 项目经理为一个具有按时完成盈利项目历史记录的组织工作。然而,由于缺乏相关方的支持以及他们未能提供信息,这些项目都经历过问题。若要避免这些问题,项目经理在新项目开始时应该做什么? A. 在启动阶段识别关键…...
Laravel Dusk:点亮自动化测试的明灯
Laravel Dusk:点亮自动化测试的明灯 在Web开发中,确保应用程序的用户体验和功能正确性至关重要。Laravel Dusk是一个强大的浏览器自动化测试工具,它允许开发者模拟用户与应用程序的交互,从而进行端到端的测试。本文将深入探讨Lar…...
Git、Gitlab以及分支管理
分布式版本控制系统 一、Git概述 Git是一种分布式版本控制系统,用于跟踪和管理代码的变更。它由Linus torvalds创建的,最初被设计用于Linux内核的开发。Git 允许开发人员跟踪和管理代码的版本,并且可以在不同的开发人员之间进行协作。 Githu…...
TCP/IP 协议栈介绍
TCP/IP 协议栈介绍 1. 引言 TCP/IP(传输控制协议/互联网协议)是一组用于数据网络中通信的协议集合,它是互联网的基础。本文将详细介绍TCP/IP协议栈的各个层次、工作原理以及其在网络通信中的作用。 2. TCP/IP 协议栈的层次结构 TCP/IP协议…...
香橙派orangepi系统没有apt,也没有apt-get,也没有yum命令,找不到apt、apt-get、yum的Linux系统
以下是一个关于如何在 Orange Pi 上的 Arch Linux 系统中发现缺失包管理器的问题并解决的详细教程。 发现问题 确认系统类型: 使用以下命令检查当前的 Linux 发行版: uname -a cat /etc/os-release如果你看到类似于 “Arch Linux” 的信息,说…...
在invidia jetpack4.5.1上运行c++版yolov8(tensorRT)
心路历程(可略过) 为了能在arm64上跑通yolov8,我试过很多很多代码,太多对库版本的要求太高了; 比如说有一个是需要依赖onnx库的,(https://github.com/UNeedCryDear/yolov8-opencv-onnxruntime-…...
Vue3 接入 i18n 实现国际化多语言
在 Vue.js 3 中实现网页的国际化多语言,最常用的包是 vue-i18n。 第一步,安装一个 Vite 下使用 <i18n> 标签的插件:unplugin-vue-i18n npm install unplugin-vue-i18n # 或 yarn add unplugin-vue-i18n 安装完成后,调整 v…...
深度学习环境坑。
前面装好了之后装pytorch之后老显示gpufalse。 https://www.jb51.net/article/247762.htm 原因就是清华源的坑。 安装的时候不要用conda, 用pip命令 我cuda12.6,4070s cudnn-windows-x86_64-8.9.7.29_cuda12-archive.zip cuda_12.5.1_555.85_windows.…...
LLM——10个大型语言模型(LLM)常见面试题以及答案解析
今天我们来总结以下大型语言模型面试中常问的问题 1、哪种技术有助于减轻基于提示的学习中的偏见? A.微调 Fine-tuning B.数据增强 Data augmentation C.提示校准 Prompt calibration D.梯度裁剪 Gradient clipping 答案:C 提示校准包括调整提示,尽量减少产生…...
MongoDB - 聚合阶段 $count、$skip、$project
文章目录 1. $count 聚合阶段2. $skip 聚合阶段3. $project 聚合阶段1. 包含指定字段2. 排除_id字段3. 排除指定字段4. 不能同时指定包含字段和排除字段5. 排除嵌入式文档中的指定字段6. 包含嵌入式文档中的指定字段7. 添加新字段8. 重命名字段 1. $count 聚合阶段 计算匹配到…...
如何获取文件缩略图(C#和C++实现)
在C中,可以有以下两种办法 使用COM接口IThumbnailCache 文档链接:IThumbnailCache (thumbcache.h) - Win32 apps | Microsoft Learn 示例代码如下: VOID GetFileThumbnail(PCWSTR path) {HRESULT hr CoInitialize(nullptr);IShellItem* i…...
create-vue项目的README中文版
使用方法 要使用 create-vue 创建一个新的 Vue 项目,只需在终端中运行以下命令: npm create vuelatest[!注意] (latest 或 legacy) 不能省略,否则 npm 可能会解析到缓存中过时版本的包。 或者,如果你需要支持 IE11,你…...
Centos 7系统(最小化安装)安装Git 、git-man帮助、补全git命令-详细文章
安装之前由于是最小化安装centos7安装一些开发环境和工具包 文章使用国内阿里源 cd /etc/yum.repos.d/ && mkdir myrepo && mv * myrepo&&lscurl -O https://mirrors.aliyun.com/repo/epel-7.repo;curl -O https://mirrors.aliyun.com/repo/Centos-7…...
Golang零基础入门课_20240726 课程笔记
视频课程 最近发现越来越多的公司在用Golang了,所以精心整理了一套视频教程给大家,这个只是其中的第一部,后续还会有很多。 视频已经录制完成,完整目录截图如下: 课程目录 01 第一个Go程序.mp402 定义变量.mp403 …...
杂记-镜像
-i https://pypi.tuna.tsinghua.edu.cn/simple 清华 pip intall 出现 error: subprocess-exited-with-error 错误的解决办法———————————pip install --upgrade pip setuptools57.5.0 ————————————————————————————————————…...
如何将WordPress文章中的外链图片批量导入到本地
在使用采集软件进行内容创作时,很多文章中的图片都是远程链接,这不仅会导致前端加载速度慢,还会在微信小程序和抖音小程序中添加各种域名,造成管理上的麻烦。特别是遇到没有备案的外链,更是让人头疼。因此,…...
primetime如何合并不同modes的libs到一个lib文件
首先,用primetime 抽 timing model 的指令如下。 代码如下(示例): #抽lib时留一些margin, setup -max/hold -min set_extract_model_margin -port [get_ports -filter "!defined(clocks)"] -max 0.1 #抽lib extract_mod…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
