Python 监控linux之dstat

Python 监控linux之dstat        Python编写的监控工具——dstat          1.多功能系统资源统计

大家好,又见面了,我是你们的朋友全栈君。

        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 columns

Processors: 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参数运行。

Python 监控linux之dstat

※-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数。

Python 监控linux之dstat

如图,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选项。如图给出了一个例子,演示了如何找出占用资源最多的进程。

Python 监控linux之dstat

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

    4.将结果输出到CSV文件

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

dstat -a --ouput dstat_utput.csv



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148689.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 面试官:谈谈你对IOC和AOP的理解及AOP四种实现方式[通俗易懂]

    面试官:谈谈你对IOC和AOP的理解及AOP四种实现方式[通俗易懂]一、AOP介绍面向切片编程(AOP—AspectOrientedProgramming)可以说是对OOP(面向对象编程)的补充和完善,面向对象就是将事物的特性和行为抽象为一个对象,如people类有身高、体重、年龄等属性,也有吃饭、睡觉等行为。把这些特性和行为封装成一个类,然后可以统一调用。面向切片也可以举个例子,比如people类有自己的属性和行为,但是有小一部分人生病要去医院看病,看病这个业务逻辑就不属于哪一个类,因为people泛指所有人,所有人不会都看病。AOP就是把医院看病这一个业务逻辑功能

    2022年6月22日
    31
  • 进程间通信和线程间通信的区别_有些线程包含多个进程

    进程间通信和线程间通信的区别_有些线程包含多个进程进程间通信转自https://www.cnblogs.com/LUO77/p/5816326.html线程间通信https://www.cnblogs.com/jobs1/p/10784021.html线程间通信进程和线程的区别程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体。而进程则不同,它是程序在某个数据集上的执行。进程是一个动态的实体,它有自己的生命周期。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消。反映…

    2022年10月7日
    3
  • Scrapy ip代理池

    Scrapy ip代理池一、概述在众多的网站防爬措施中,有一种是根据ip的访问频率进行限制,即在某一时间段内,当某个ip的访问次数达到一定的阀值时,该ip就会被拉黑、在一段时间内禁止访问。应对的方法有两种:1.降低爬虫的爬取频率,避免IP被限制访问,缺点显而易见:会大大降低爬取的效率。2.搭建一个IP代理池,使用不同的IP轮流进行爬取。环境说明操作系统:centos7.6ip地址:192.1…

    2022年6月9日
    47
  • 简述python中的数字类型有哪些_python中都有哪些数据类型

    简述python中的数字类型有哪些_python中都有哪些数据类型python中数据类型有:整型、长整型、浮点型、字符串类型、布尔类型、列表类型、元组类型、字典类型、集合类型。数据类型是每种编程语言必备属性,只有给数据赋予明确的数据类型,计算机才能对数据进行处理运算,因此,正确使用数据类型是十分必要的,不同的语言,数据类型类似,但具体表示方法有所不同,以下是Python编程常用的数据类型:1.数字类型Python数字类型主要包括int(整型)、long(长整型…

    2022年5月26日
    53
  • vue项目打包布署

    vue项目打包布署我们使用 Vue 做项目时 通常前端是单独部署 用户访问的也是前端项目地址 因此前端开发人员很有必要熟悉一下项目部署的流程与各类问题的解决办法了 Vue 项目打包部署本身不复杂 不过一些前端同学可能对服务器接触不多 部署过程中还是会遇到这样那样的问题 本文介绍一下使用 nginx 服务器代理前端项目的方法以及项目部署的相关问题 内容概览

    2025年7月14日
    2
  • vs2010sp1安装包_怎么安装vs2015

    vs2010sp1安装包_怎么安装vs2015微软的VisualStudio2005ServicePack1(SP1)年前就发布了,年前终于有点时间了,于是装了一下VS2005sp1,看看到底有什么好东西。这次发布的语言版本包括十个国家的语言,可谓全上阵,容量为413M修正了许多bug,其中包括了很多人最最关心中文的WebApplicationProject问题。 VS2005SP1下载地址:VS2005

    2022年10月6日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号