Python编写的监控工具——dstat


1.多功能系统资源统计工具dstat

根据官方文档的介绍,dstat是一个用Python语言实现的多功能系统资源统计工具,用来取代Linux下的vmstat、iostat、netstat和ifstat等命令。并且,dstat克服了这些命令的限制,增加了额外的功能,以及更多的计数器与更好的灵活性。dstat可以在一个界面上展示非常全面的监控信息,因此,在系统监控、基准测试和故障排查等应用场景下特别有用。

我们可以使用dstat监控所有系统资源的使用情况,并且用不同的颜色尽心输出,以可读性较强的单位展示监控数值。例如,对于字节数值,dstat自动根据数值的大小,以K、M、G等单位进行显示,避免了开发者使用其他命令时因为数值太大造成 的困惑和错误。此外,使用dstat还可以非常方便地编写插件用来收集默认情况下没有收集的监控信息、dstat是专门为人们实时查看监控信息设计的,因此,默认将监控结果输出到屏幕终端。我们也可以将监控信息以CSV格式输出到文件中,以便后续进行处理。

作为一个多功能的系统资源统计工具,dstat具有以下特性:

※综合了vmstat、iostat、ifstat、netstat等监控工具的功能,并且提供了更多的监控信息;
※实时显示监控数据;
※在问题分析和故障排查时,可以监视嘴重要的计数器,也可以对计数器进行排序;
※模块化设计;
※使用Python语言编写,更方便扩展现有的工作任务;
※容易扩展,便于添加自定义的计数器;
※包含许多扩展插件;
※可以分组统计块设备/网络设备,并给出汇总信息;
※可以显示每台设备中断信息;
※非常精确的时间精度,即便是系统负荷较高也不会延迟显示;
※准确显示单位,限制转换误差范围;
※用不同的颜色显示不同的单位,增加可读性;
※支持CSV格式输出,便于将监控信息导入Gnumeric和Excel以生成图形。

如果操作系统没有默认安装dstat,那么,需要我们手动进行安装。(Ubuntu)

sudo apt-get install dstat #Ubuntu系统使用

Linux中,本人使用CentOS7.5版本,应使用yum命令。

sudo yum install dstat #linux系统使用

安装完成之后,在当前系统中存在一个名为dstat的命令,我们可以在终端中查看命令的帮助信息和支持的选项。

dstat --help

与其他工具不同的是,dstat命令的--version选项,除了显示dstat的版本外,还会显示操作系统的版本、Python语言的版本、cpu的个数,以及dstat支持的插件列表等详细信息。

Dstat 0.7.2
Written by Dag Wieers <dag@wieers.com>
Homepage at http://dag.wieers.com/home- made/dstat/Platform posix/linux2
Kernel 3.10.0-862.el7.x86_64
Python 2.7.5(default.Apr 11 2018. 07:36:10)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]Terminal type: xterm- 256color (color support)
Terminal size: 24 lines, 80 columnsProcessors: 1
Pagesize: 4096
Clock tick per secs: 100

除了使用dstat命令的--version选项查看dstat的详细信息获取可支持的插件以外,还可以使用dstat命令的--list选项获取dstat的插件列表。

dstat --list

直接在终端输入dstat命令,dstat将以默认参数运行。默认情况下,dstat会收集cpu、磁盘、网络、换页和系统信息,并以一秒钟一次的频率进行输出,直到我们按Ctrl+C结束。

2.dstat常用选项

直接输入dstat,从图中可以看到,dstat会提示我们没有指定任何参数,因此使用-cdngy参数运行。

※-c:显示CPU的使用情况。这些列显示了cpu花费在各类操作的百分比,包括执行用户代码(usr)、执行系统代码(sys)、空闲(idl)和等待IO(wai)。如果usr的执行较高,说明当前系统中CPU负载较大;如果wai长期处于比较大的值,说明系统IO等待比较严重;※-d:显示磁盘的读写情况,在进行性能测试时可以使用该字段观察当前的磁盘负载;※-n:网络设备发送和接收的数据,在这一栏显示网络收发数据的总数;※-g:表示换页活动。大多数情况下你都希望看到in(换入)和out(换出)的值是0.如果不为0,则说明当前系统内存不够用,会严重影响应用程序的性能;※-y:系统设计。这一项显示的是中断(int)和上下文切换(csw)。除了前面介绍的默认参数以外,也可以使用dstat --help获取dstat的其他选项,dstat会根据选项的顺序显示监控信息。例如,在图中演示了dstat的部分选项以及选项外的顺序。※-t:显示统计系统的当前时间:※-l、--load:统计系统负载情况,包括1分钟、5分钟、15分钟平均值;※-p、--proc:统计进程信息,包括runnable,blocked和new的进程数量;※--tcp:显示常用的TCP统计;※--fs:统计文件打开数和inodes数。

如图,dstat监控系统信息

除了前面介绍的与监控项相关的参数以外,dstat还可以像vmstst和iostat一样使用参数控制报告的时间间隔,或者同时指定时间间隔与报告次数。

Usage:dstat [-afv] [options..] [delay [count]]

例如,下面的命令代表以默认的选项运行dstat,每两秒输出一条监控信息,并在的输出10条监控信息以后推出dstat

dstat 2 10

3.dstat高级用法

dstat的强大之处不仅仅是因为它聚合了多种工具的监控结果,还因为它能通过附带的插件实现一些高级功能,如找出占用资源最高的进程和用户。dstat的--top-(io|bio|cpu|cputime|cputime-avg|mem)这几个选项可以看到具体是哪个用户和哪个进程占用了相关系统资源,对系统调优非常有效。如查看当前占用I/O、cpu、内存等最高的进程信息可以使用--top-mem --top-io --top-cpu选项。如图给出了一个例子,演示了如何找出占用资源最多的进程。

dstat的插件保存在/usr/share/dstat目录下,读者可以参考的它们的实现,编写自己的插件。

4.将结果输出到CSV文件

前面说过,dstat还可以将监控信息保存到文件中,以便后续进行处理。通过--output选项指定监控数据输出的文件。如下所示:

dstat -a --ouput dstat_utput.csv

Python 监控linux之dstat相关推荐

  1. python系统监控_使用Python监控Linux系统

    阅读目录 一.Python编写的监控工具 一.多功能系统资源统计工具dstat 1.dstat介绍 dstat是一个用Python语言实现的多功能系统资源统计工具,用来取代Linux下的vmstat. ...

  2. python 监控linux硬盘,Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例...

    由于项目的需要,需要做一个简单监控服务器的CPU利用率.CPU负载.硬盘使用率.内存利用率和服务器的各个端口的开启情况的程序,并把结果通知到监控平台,如果出现异常,监控平台打电话或者发短信通知给具体的 ...

  3. python监控linux运行程序_python linux监控程序

    Pyinotify – Linux中实时监控文件系统更改 Pyinotify 是一个简单而实用的 Python 模块,它用于通过 inotify 实时监控Linux文件系统的更改.用于在Linux中实 ...

  4. python监控linux运行程序_如何在linux/tcl/python中监控正在打开或启动的应用程序?...

    我正在尝试构建一个面板应用程序,类似于avant window navigator或UbuntuUnity.在 我的问题是,一旦我用预先定义好的应用程序构建了面板,当应用程序打开或启动时,如何向面板添 ...

  5. python实时监控_使用Python监控Linux系统

    服务器名称{{ hostname }} 开机时间{{boot_time}} cpu个数{{ cpu_count }} cpu利用率{{ cpu_percent }} 内存总量{{ mem_percen ...

  6. 实例代码分享Python实现Linux监控

    本文通过实例代码给大家介绍了Python实现Linux监控的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下. 工作原理:基于/proc 文件系统 Linux 系统为管理员提供了非常好的方 ...

  7. linux监听apache代码,linux系统使用python监控apache服务器进程脚本分享

    这篇文章主要介绍了linux系统使用python监控apache服务器进程的脚本,大家参考使用吧 crtrl.py监控Apache服务器进程的Python 脚本 复制代码 代码如下: !/usr/bi ...

  8. Python监控目录文件夹,并使用SFTP上传目录及文件到linux服务器

    Python 扫描监控本地文件夹并进行超大文件上传 方案1:WebUploader大文件分块多线程并发上传 方案2:watchdog目录文件夹监控,paramiko STFP上传服务器 方案3:优化2 ...

  9. python在linux报错xe6,python出现SyntaxError: Non-ASCII character '\xe6' in file \的错误

    出现这个问题的主要原因是因为python2的编码是ASCII码,文件中有中文的话就得使用utf8编码,只需要在文件的头部加上以下其中一种标注: 一.在文件头部添加如下注释码: # coding= 例如 ...

  10. Python监控目录和文件变化

    原文:https://www.cnblogs.com/lcamry/p/8392376.html Python监控目录和文件变化 一.os.listdir import os, time path_t ...

最新文章

  1. redhat7 Oracle 12C 安装
  2. PWA之push服务
  3. Python列表的增删查改及常用操作
  4. MAX_VALUE的最大值和最小值是多少
  5. 使用命名管道进程之间通信(转)
  6. 关于苹果与摄影的事。
  7. Azure Messaging-ServiceBus Messaging消息队列技术系列1-基本概念和架构
  8. 完整安装PX4/PX4-Autopilot,无需科学上网。
  9. 大龄女程序员年薪45万,杭州两套房,相亲失败后在客厅痛哭!
  10. 目录类搜索引擎和全文搜索引擎的区别
  11. 数值分析原理课程实验——牛顿(Newton)迭代法
  12. Beyong Compare过期
  13. 2022年NOC软件创意编程(学而思赛道)选拔赛小学高年级组python,包含答案
  14. 清除www.2345.com修改首页的方法
  15. 最新QQ辅助任务平台悬赏接单源码+支持商家等功能
  16. 5、ICE Candidate Gathering and Exchange【ICE Candidate 收集和交换】
  17. ant的下载与安装(一)
  18. 22、Android之 使用手机的 GPS 功能
  19. 评分员间可信度与Kappa统计量 Inter-rater reliability Kappa statistics
  20. 技巧:XSS漏洞结合nc窃取Cookie实现免密码登录

热门文章

  1. 多通道波形记录仪自动化计量校准软件NSAT-3070
  2. STK X教程—C++/CLI
  3. HttpSession对象
  4. linux刷新解析,如何在Linux(和FreeBSD)上刷新DNS解析器缓存
  5. 数据中心供配电系统继电保护基础知识
  6. 自媒体如何一步步变成臭要饭的(其二)
  7. OpenWrt开发必备软件模块——网络管理(CWMP、SSH、QoS、SMTP、NTP、uHTTPd)
  8. 软件测试教程视频入门基础篇-千锋出品
  9. Python爬虫,超简单地实现一键提取阴阳师原画
  10. 小米浏览器 解析html5,JavaScript - 判断当前用户使用的浏览器