当前位置: 首页 > news >正文

Linux性能监控:sar的可视化方案

在当今的IT环境中,系统性能监控是确保应用程序稳定运行和快速响应问题的关键。Linux作为一种广泛使用的操作系统,拥有多种性能监控工具,其中sar(System Activity Reporter)因其全面性和灵活性被广泛采用。然而,传统的sar输出格式为文本,虽然有生成图的功能 ,但不易于快速分析和实时监控。为了克服这一不足,本文设计了一套完整的可视化方案,通过实时展示sar的数据,极大地提升了性能监控的效率和直观性。

方案设计

  1. sar:sysstat中的性能监控工具
    sar是sysstat工具包中的一个核心组件,能够从系统的多个方面(如CPU、内存、I/O、网络等)收集性能数据。使用命令sar -A 1可以每秒采集一次系统的全面性能数据,这为实时监控提供了坚实的数据基础。sar不仅能提供实时数据,还能存储历史数据,便于后续分析。建议使用较新的sysstat版本。
    Github链接
  2. vsar:自研的sar数据处理程序
    为了实现sar数据的可视化和实时性,开发了一款名为vsar的小型程序,可免费用于非商业用途。具备极低的资源占用,能够高效处理实时输出的sar数据以及离线存储的sar日志,并将这些数据写入InfluxDB数据库。vsar的引入,使得sar数据的流式处理成为可能,从而为数据可视化奠定了基础。
    Github链接
  3. InfluxDB:时序数据库
    InfluxDB是一款高性能的时序数据库,专为处理时间序列数据而设计。在本文的方案中,InfluxDB用于存储来自vsar的数据。这种结构化的存储方式,使得性能数据的检索和分析更加高效。InfluxDB的灵活性和可扩展性确保了其能够应对大规模数据处理需求。
    Github链接
  4. 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页面如下所示:
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,将数据实时展示出来。

添加数据源

  1. 首先,登录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就可以进行数据的图形化展示,步骤如下:

  1. 选择Dashboards页面
    在这里插入图片描述
  2. 新建dashboard
    在这里插入图片描述
  3. 添加一个可视化展示

在这里插入图片描述

  1. 选择刚刚创建好的数据源
    在这里插入图片描述

  2. 在进入的Edit panel页面中配置查询语句,选择measurement,也就是数据库中的表名。本文以cpu_usage表为例。
    在这里插入图片描述

  3. 添加field,也就是要展示的数据项,本文以cpu_usage表的%usr和%sys为例。
    在这里插入图片描述

  4. 添加筛选条件,假设要看每个cpu核的情况,而不是all cpu的情况。
    在这里插入图片描述

  5. 添加分组条件,以机器host作为第一级分组,以cpu核编号做为第二级分组。
    在这里插入图片描述

  6. 保存
    在这里插入图片描述

  7. 保存页面需要为此dashboard起个名称。
    在这里插入图片描述

  8. 放大数据展示
    在这里插入图片描述

  9. 选择要展示的时间段,比如实时展示近15分钟的数据。
    在这里插入图片描述

  10. 最终的CPU使用率展示图
    在这里插入图片描述

性能监控展示示例

用户可以根据自己想展示的数据灵活地编写dashboard的查询语句。以下为一些性能监控的示例:

  1. 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环境中&#xff0c;系统性能监控是确保应用程序稳定运行和快速响应问题的关键。Linux作为一种广泛使用的操作系统&#xff0c;拥有多种性能监控工具&#xff0c;其中sar&#xff08;System Activity Reporter&#xff09;因其全面性和灵活性被广泛采用。然而&#xf…...

如何录制电脑屏幕视频,5招让您成为电脑录制高手

在今天&#xff0c;屏幕录制成为每个电脑使用者都应掌握的基础技能。不论是教学分享、会议记录还是游戏直播&#xff0c;屏幕录制都能帮你捕捉那些重要的瞬间&#xff0c;将无形的信息转化为有形的视频。那么&#xff0c;如何录制电脑屏幕视频呢&#xff1f;今天&#xff0c;我…...

AI届的新宠:小语言模型(SLM)?

大语言模型&#xff08;LLM&#xff09;在过去几年产生了巨大影响&#xff0c;特别是随着OpenAI的ChatGPT的出现&#xff0c;各种大语言模型如雨后春笋般出现&#xff0c;国内如KimiChat、通义千问、文心一言和智谱清言等。 然而&#xff0c;大语言模型通常拥有庞大的参数&…...

PMP模拟题错题本

模拟题A 错题整理 项目经理为一个具有按时完成盈利项目历史记录的组织工作。然而&#xff0c;由于缺乏相关方的支持以及他们未能提供信息&#xff0c;这些项目都经历过问题。若要避免这些问题&#xff0c;项目经理在新项目开始时应该做什么&#xff1f; A. 在启动阶段识别关键…...

Laravel Dusk:点亮自动化测试的明灯

Laravel Dusk&#xff1a;点亮自动化测试的明灯 在Web开发中&#xff0c;确保应用程序的用户体验和功能正确性至关重要。Laravel Dusk是一个强大的浏览器自动化测试工具&#xff0c;它允许开发者模拟用户与应用程序的交互&#xff0c;从而进行端到端的测试。本文将深入探讨Lar…...

Git、Gitlab以及分支管理

分布式版本控制系统 一、Git概述 Git是一种分布式版本控制系统&#xff0c;用于跟踪和管理代码的变更。它由Linus torvalds创建的&#xff0c;最初被设计用于Linux内核的开发。Git 允许开发人员跟踪和管理代码的版本&#xff0c;并且可以在不同的开发人员之间进行协作。 Githu…...

TCP/IP 协议栈介绍

TCP/IP 协议栈介绍 1. 引言 TCP/IP&#xff08;传输控制协议/互联网协议&#xff09;是一组用于数据网络中通信的协议集合&#xff0c;它是互联网的基础。本文将详细介绍TCP/IP协议栈的各个层次、工作原理以及其在网络通信中的作用。 2. TCP/IP 协议栈的层次结构 TCP/IP协议…...

香橙派orangepi系统没有apt,也没有apt-get,也没有yum命令,找不到apt、apt-get、yum的Linux系统

以下是一个关于如何在 Orange Pi 上的 Arch Linux 系统中发现缺失包管理器的问题并解决的详细教程。 发现问题 确认系统类型&#xff1a; 使用以下命令检查当前的 Linux 发行版&#xff1a; uname -a cat /etc/os-release如果你看到类似于 “Arch Linux” 的信息&#xff0c;说…...

在invidia jetpack4.5.1上运行c++版yolov8(tensorRT)

心路历程&#xff08;可略过&#xff09; 为了能在arm64上跑通yolov8&#xff0c;我试过很多很多代码&#xff0c;太多对库版本的要求太高了&#xff1b; 比如说有一个是需要依赖onnx库的&#xff0c;&#xff08;https://github.com/UNeedCryDear/yolov8-opencv-onnxruntime-…...

Vue3 接入 i18n 实现国际化多语言

在 Vue.js 3 中实现网页的国际化多语言&#xff0c;最常用的包是 vue-i18n。 第一步&#xff0c;安装一个 Vite 下使用 <i18n> 标签的插件&#xff1a;unplugin-vue-i18n npm install unplugin-vue-i18n # 或 yarn add unplugin-vue-i18n 安装完成后&#xff0c;调整 v…...

深度学习环境坑。

前面装好了之后装pytorch之后老显示gpufalse。 https://www.jb51.net/article/247762.htm 原因就是清华源的坑。 安装的时候不要用conda&#xff0c; 用pip命令 我cuda12.6&#xff0c;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 提示校准包括调整提示&#xff0c;尽量减少产生…...

MongoDB - 聚合阶段 $count、$skip、$project

文章目录 1. $count 聚合阶段2. $skip 聚合阶段3. $project 聚合阶段1. 包含指定字段2. 排除_id字段3. 排除指定字段4. 不能同时指定包含字段和排除字段5. 排除嵌入式文档中的指定字段6. 包含嵌入式文档中的指定字段7. 添加新字段8. 重命名字段 1. $count 聚合阶段 计算匹配到…...

如何获取文件缩略图(C#和C++实现)

在C中&#xff0c;可以有以下两种办法 使用COM接口IThumbnailCache 文档链接&#xff1a;IThumbnailCache (thumbcache.h) - Win32 apps | Microsoft Learn 示例代码如下&#xff1a; VOID GetFileThumbnail(PCWSTR path) {HRESULT hr CoInitialize(nullptr);IShellItem* i…...

create-vue项目的README中文版

使用方法 要使用 create-vue 创建一个新的 Vue 项目&#xff0c;只需在终端中运行以下命令&#xff1a; npm create vuelatest[!注意] (latest 或 legacy) 不能省略&#xff0c;否则 npm 可能会解析到缓存中过时版本的包。 或者&#xff0c;如果你需要支持 IE11&#xff0c;你…...

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了&#xff0c;所以精心整理了一套视频教程给大家&#xff0c;这个只是其中的第一部&#xff0c;后续还会有很多。 视频已经录制完成&#xff0c;完整目录截图如下&#xff1a; 课程目录 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文章中的外链图片批量导入到本地

在使用采集软件进行内容创作时&#xff0c;很多文章中的图片都是远程链接&#xff0c;这不仅会导致前端加载速度慢&#xff0c;还会在微信小程序和抖音小程序中添加各种域名&#xff0c;造成管理上的麻烦。特别是遇到没有备案的外链&#xff0c;更是让人头疼。因此&#xff0c;…...

primetime如何合并不同modes的libs到一个lib文件

首先&#xff0c;用primetime 抽 timing model 的指令如下。 代码如下&#xff08;示例&#xff09;&#xff1a; #抽lib时留一些margin, setup -max/hold -min set_extract_model_margin -port [get_ports -filter "!defined(clocks)"] -max 0.1 #抽lib extract_mod…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...