Linux 系统负载常用查看命令介绍

目录

  • 前言
  • 一、硬件规格
      • 1. CPU
      • 2. 磁盘
      • 3. 内存
  • 二、系统负载
      • 1. top
      • 2. glances
  • 三、数据库监控脚本


前言

本文以 MySQL 数据库为例 处理自建数据库问题时,我们需要了解更多的系统信息,如果没有监控,则需要我们使用 Linux 命令得到这些数据,本文介绍如何获得这些信息,和 Python 监控脚本设计思路。

一、硬件规格

1. CPU

关于 CPU 详细信息,可以使用下方 Linux 命令获取:

lscpu

Linux 系统负载常用查看命令介绍_第1张图片

2. 磁盘

使用 df 命令能够列出不同分区的概要信息、挂载点、已用的和可用的空间。

df -Th

Linux 系统负载常用查看命令介绍_第2张图片

3. 内存

使用 free 命令可以了解到系统的内存使用情况,如果是专用的数据库服务器,没有其它应用在跑的话 MySQL 内存使用波动不会太大,根据 innodb_buffer_pool_size 来设定。

free -h

Linux 系统负载常用查看命令介绍_第3张图片

二、系统负载

1. top

使用top命令可以查看正在运行的系统中的动态实时视图信息,显示系统摘要信息, 以及Linux内核当前正在管理的任务列表。其支持静态输出,也支持交互式输出,还可以 在启动之前读取响应的配置文件来决定如何显示进程的状态信息。

下面我们演示一下:
Linux 系统负载常用查看命令介绍_第4张图片
输出结果解读:
Linux 系统负载常用查看命令介绍_第5张图片

  • 0.0 us 用户程序工作所占用的 CPU 时间片占比,可以理解为 CPU 工作占比;
  • 0.3 sy 内核占用的 CPU 时间片占比,可以理解为系统调度资源使用 CPU 占比;
  • 99.7 id 空闲 CPU 时间片占比,可以理解为空闲的 CPU 占比;
  • 0.0 wa CPU 用来等待时间片占比,一般等待 IO 或者锁问题;

进程列表输出解读:
Linux 系统负载常用查看命令介绍_第6张图片
我们此时在进程列表可以看到 mysqld 进程 CPU 使用率为 155% 因为这台测试机器是双核心所以 CPU 使用率最高为 200% (如果想看每个核心的使用率按 1 就可以在最上面显示)

2. glances

glances 是一个基于 python 语言开发,可以为 linux 或者 UNIX 性能提供监视和分析性能数据的功能。glances 在用户的终端上显示重要的系统信息,并动态的进行更新,让管理员实时掌握系统资源的使用情况,而动态监控并不会消耗大量的系统资源,比如 CPU 资源,通常消耗小于2%,glances 默认每两秒更新一次数据。同时 glances 还可以将相同的数据捕获到一个文件,便于以后对报告进行分析和图形绘制,支持的文件格式有 .csv 电子表格格式和 html 格式。

glances 可以分析系统的:

  • CPU使用率
  • 内存使用率
  • 内核统计信息和运行队列信息
  • 磁盘I/O速度、传输和读/写比率
  • 磁盘适配器
  • 网络I/O速度、传输和读/写比率
  • 页面监控
  • 进程监控-消耗资源最多的进程
  • 计算机信息和系统资源

下面是使用 glances 监控的效果:


安装方法:

yum install -y  glances

功能介绍

个人认为 glances 比较特别的功能是 C/S 模式,被监控机运行服务端,监控端运行客户端既可以实现远程监控。

服务端:

shell>glances -s -B 172.16.104.55 &
Glances server is running on 172.16.104.55:61209

客户端:

glances -c 172.16.104.55

此时就可以在另外一台服务器监控到服务端的负载情况。

强烈建议数据库服务器,没有配置监控的话,可以安装一下 glances 系统负载情况尽收眼底。

三、数据库监控脚本

下面介绍一下数据库监控脚本的设计思路,主要分成数据采集和可视化。

系统数据采集:

Python 语言中有一个开源模块 psutil 通过它可以获得系统的信息:
Linux 系统负载常用查看命令介绍_第7张图片
如上图所示,可以非常简单的获取到服务器内存使用情况。那么使用 psutil 就可以帮助我们采集到服务器资源使用情况,比如:CPU 使用率、内存使用率、IO 使用情况、磁盘使用率、网络使用情况。

数据库信息采集:

关于数据库这部分信息,主要有 QPS/TPS 这些数据是可以从 MySQL 状态变量中得到:

show global status 
where 
  Variable_name in (
    'Com_commit', 'Com_delete', 'Com_insert', 
    'Com_rollback', 'Com_select', 'Com_update', 
    'Threads_connected', 'Open_tables', 
    'Slow_queries', 'Innodb_buffer_pool_read_requests', 
    'Innodb_buffer_pool_read_ahead', 
    'Innodb_buffer_pool_reads', 'Aborted_clients', 
    'Aborted_connects'
  );

Linux 系统负载常用查看命令介绍_第8张图片

数据可视化:

目前我的想法是使用 echarts 进行可视化,有一些模版也是非常的哇塞。
Linux 系统负载常用查看命令介绍_第9张图片
上图是我使用 echarts 简单实现的 CPU & 内存使用情况的监控图,可以自己调整显示日期。

未完待续…

你可能感兴趣的:(MySQL,mysql)