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-server
sudo systemctl enable grafana-server

第二步,访问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,我们的方案不仅克服了这些不足,还显著提升了监控的实时性和可视化能力。这种一体化的解决方案,使得系统性能监控变得更加直观、准确和高效,大大地提升了系统的可靠性和用户体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PerfMan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值