在开发软件或监控运行的系统时,遥测和环境监测都很重要。在理解了历史情境下什么是正常行为之后,通常两个最紧迫的问题是:(1)什么发生了变化?(2)什么表现出异常?

\\

本文将介绍三个用于临时监控的流行工具,以及一种用于监控分布式系统的简单解决方案。

\\

top

\\

在几乎任何类UNIX的现代操作系统中,您都可以通过输入top来查看一些系统性能指标,这些指标每几秒钟更新一次。

\\

\$ top -b -n2 -d5

\\

\top - 09:43:05 up  1:08,  0 users,  load average: 0.52, 0.58, 0.59\Tasks:   4 total,   1 running,   3 sleeping,   0 stopped,   0 zombie\%Cpu0  :  4.1 us, 22.2 sy,  0.0 ni, 72.3 id,  0.0 wa,  1.4 hi,  0.0 si,  0.0 st\%Cpu1  :  4.3 us,  7.1 sy,  0.0 ni, 87.7 id,  0.0 wa,  0.9 hi,  0.0 si,  0.0 st\%Cpu2  :  4.4 us,  9.0 sy,  0.0 ni, 85.3 id,  0.0 wa,  1.2 hi,  0.0 si,  0.0 st\%Cpu3  :  3.6 us,  6.7 sy,  0.0 ni, 88.6 id,  0.0 wa,  1.0 hi,  0.0 si,  0.0 st\KiB Mem:  33431016 total,  9521052 used, 23909964 free,    34032 buffers\KiB Swap: 62455548 total,    27064 used, 62428484 free.   188576 cached Mem\\  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND\    1 root      20   0    8304    132    104 S   0.0  0.0   0:00.14 /init ro\    3 root      20   0    8308     96     56 S   0.0  0.0   0:00.00 /init ro\    4 mark      20   0   17856   5308   5192 S   0.0  0.0   0:00.35 -bash\  228 mark      20   0   14452   1668   1172 R   0.0  0.0   0:00.01 top -b -n2 -d5

\\

其二进制执行过程与Comcast公司的James Warner编写的top版本最相似。这个版本的top是全新的,并且是作为由包括Lockheed Martin and Heidelberg University在内的各个组织开发人员的合写版本的替代品开发而成的。

\\

top.c源代码本身相当简单,在撰写本文时,总共有约4900行C代码。目前top仍然处于开发过程中,其源代码可以在GitLab的procps仓库找到。该仓库中还包含其他工具,包括kill、ps、sysctl、uptime和watch。

\\

其默认布局一直没有改变过。但是通过过去几十年与UNIX系统打交道,每次在一台新机器上使用top,我都会习惯性地输入zc1M。

\\

top默认采用单色显示模式,使用z将切换至指定颜色模式。数字1将显示单个CPU的状态,并且能够突出显示单个CPU核的负载。我喜欢输入M,以查看基于内存容量使用压力排序后的各进程信息。top总共提供了49个供查看和排序的指标。

\\

默认情况下,命令会截断显示,输入c会显示有关其路径和参数的更多扩展信息。 我唯一不满意的是命令和参数被截断了。如果只保留每条命令和参数的开头与结尾,以便区分不同进程,会更加实用。

\\

top配置的更改只会在当前session有效。为了解决这个问题,输入大写的W会默认将当前配置保存到~/.toprc中。我对该文件唯一不满的地方是,它包含了大于0x7F的字节值,因而不易在top之外对其进行更改。

\\

\$ hexdump -C ~/.toprc | head

\\

\00000000  74 6f 70 27 73 20 43 6f  6e 66 69 67 20 46 69 6c  |top's Config Fil|\00000010  65 20 28 4c 69 6e 75 78  20 70 72 6f 63 65 73 73  |e (Linux process|\00000020  65 73 20 77 69 74 68 20  77 69 6e 64 6f 77 73 29  |es with windows)|\00000030  0a 49 64 3a 69 2c 20 4d  6f 64 65 5f 61 6c 74 73  |.Id:i, Mode_alts|\00000040  63 72 3d 30 2c 20 4d 6f  64 65 5f 69 72 69 78 70  |cr=0, Mode_irixp|\00000050  73 3d 31 2c 20 44 65 6c  61 79 5f 74 69 6d 65 3d  |s=1, Delay_time=|\00000060  33 2e 30 2c 20 43 75 72  77 69 6e 3d 30 0a 44 65  |3.0, Curwin=0.De|\00000070  66 09 66 69 65 6c 64 73  63 75 72 3d a5 a8 b3 b4  |f.fieldscur=....|\00000080  bb bd c0 c4 b7 ba b9 c5  26 27 29 2a 2b 2c 2d 2e  |........\u0026amp;')*+,-.|\00000090  2f 30 31 32 35 36 38 3c  3e 3f 41 42 43 46 47 48  |/012568\u0026lt;\u0026gt;?ABCFGH|

\\

Htop

\\

2004年,Hisham Muhammad开始致力于创建一个截然不同的系统遥测监控工具。Htop关注遥测显示的重新布局:使用条形图展示CPU和内存的关键指标;使用F5快捷键,使进程信息在扁平化列表和层次结构之间切换显示;通过鼠标点击,可以实现属性排序;并且支持7种不同的颜色模式。

\\

该软件能够很好地使您停留在应用当中。如果您想要查看一个进程使用的文件,您可以选择该进程,并只需输入l;如果您想要通过strace运行该进程,在以授权用户身份运行htop的情况下,只需输入s。

\\

在Ubuntu 16.04.2 LTS上安装和运行htop:

\\

\$ sudo apt install htop\$ htop

\\

\ 1  [                                         0.0%]   Tasks: 37, 145 thr; 1 running\ 2  [                                         0.0%]   Load average: 0.03 0.05 0.07\ 3  [                                         0.0%]   Uptime: 01:31:42\ 4  [                                         0.0%]\ Mem[||||||||||||||||||||||||||||||||  1.03G/3.84G]\ Swp[                                     0K/4.00G]\\  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command\    1 root       20   0 37556  5668  4004 S  0.0  0.1  0:03.03 /sbin/init noprompt\27884 clickhous  20   0 3716M  359M 49184 S  0.7  9.1  0:24.93 ├─ /usr/bin/clickhouse-server --config=/etc/cli\29668 clickhous  20   0 3716M  359M 49184 S  0.0  9.1  0:00.10 │  ├─ /usr/bin/clickhouse-server --config=/etc/\29667 clickhous  20   0 3716M  359M 49184 S  0.0  9.1  0:01.02 │  ├─ /usr/bin/clickhouse-server --config=/etc/\29666 clickhous  20   0 3716M  359M 49184 S  0.0  9.1  0:00.08 │  ├─ /usr/bin/clickhouse-server --config=/etc/\29665 clickhous  20   0 3716M  359M 49184 S  0.0  9.1  0:00.48 │  ├─ /usr/bin/clickhouse-server --config=/etc/\29409 clickhous  20   0 3716M  359M 49184 S  0.0  9.1  0:03.48 │  ├─ /usr/bin/clickhouse-server --config=/etc/\29408 clickhous  20   0 3716M  359M 49184 S  0.0  9.1  0:02.15 │  ├─ /usr/bin/clickhouse-server --config=/etc/

\\

至于配置方面,使用该软件的过程中,任何配置修改都会默认自动保存至~/.config/htop/htoprc。该文件是个文本文件,但是附有下面的警告:

\\

\$ head -n2 ~/.config/htop/htoprc

\\

\# Beware! This file is rewritten by htop when settings are changed in the interface.\# The parser is also very primitive, and not human-friendly.

\\

鉴于其提供的功能比较简单,它的源代码量还是相当小的。在撰写本文时,它总共有约12000行C代码,同时还包含约3000行代码的其他文件。

\\

Glances

\\

Glances是一个基于Python的系统遥测监控工具。该项目由Nicolas Hennion于2011年开始创建。Nilcolas的领英简介显示,他在法国南部的Thales Alenia Space卫星控制中心部门担任项目经理。

\\

当启动Glances时,除了常见的CPU、内存和进程列表,您还将看到云虚拟机类型以及网络、硬盘、和Docker容器活动等等。

\\

\$ glances

\\

\ubuntu (Ubuntu 16.04 64bit / Linux 4.4.0-62-generic)                                            Uptime: 18:55:00\\CPU  [  1.7%]   CPU -     1.7%  nice:     0.0%  ctx_sw:   923   MEM -   53.1%   SWAP -    0.1%   LOAD    4-core\MEM  [ 53.1%]   user:     0.8%  irq:      0.0%  inter:    587   total:  3.84G   total:   4.00G   1 min:    0.20\SWAP [  0.1%]   system:   0.7%  iowait:   0.0%  sw_int:   786   used:   2.04G   used:    3.27M   5 min:    0.14\                idle:    98.4%  steal:    0.0%                  free:   1.80G   free:    3.99G   15 min:   0.10\\NETWORK       Rx/s   Tx/s   TASKS 203 (349 thr), 1 run, 202 slp, 0 oth sorted automatically by CPU consumption\ens33         152b    3Kb\lo            59Kb   59Kb   CPU%   MEM%  VIRT  RES      PID USER          TIME+ THR  NI S  R/s W/s  Command\                            2.6    4.5   524M  178M   16470 mark          35:48 1     0 S    0 0    /home/mark/.\DISK I/O       R/s    W/s   2.3    0.6   372M  24.5M  14672 mark           0:01 1     0 R    0 0    /home/mark/.\fd0              0      0   1.0    23.7  5.42G 931M   21151 root          13:00 71    0 S    ? ?    java -Xmx1G\loop0            0      0   0.7    9.8   3.71G 385M   27884 clickhous      5:29 46    0 S    ? ?    /usr/bin/cli\loop1            0      0   0.3    2.8   3.53G 109M   12883 zookeeper      1:36 20    0 S    ? ?    /usr/bin/jav\loop2            0      0   0.3    0.2   31.4M 6.80M    333 root           0:53 1     0 S    ? ?    /lib/systemd\loop3            0      0   0.3    0.1   13.8M 2.68M   4353 mark           1:07 1     0 S    0 0    watch ifconf\loop4            0      0   0.0    0.3   186M  9.86M   1447 root           0:35 2     0 S    ? ?    /usr/bin/vmt\loop5            0      0   0.0    0.2   75.2M 8.11M   1470 root           0:00 1     0 S    ? ?    /usr/bin/VGA\loop6            0      0   0.0    0.2   90.6M 6.59M   4381 root           0:00 1     0 S    ? ?    sshd: mark [\loop7            0      0   0.0    0.1   269M  5.75M    595 root           0:13 3     0 S    ? ?    /usr/lib/acc\sda              0    78K   0.0    0.1   36.7M 5.37M      1 root           0:37 1     0 S    ? ?    /sbin/init n\sda1             0    78K   0.0    0.1   64.0M 5.31M   4246 root           0:00 1     0 S    ? ?    /usr/sbin/ss\sda2             0      0   0.0    0.1   44.3M 5.05M   3402 mark           0:00 1     0 S    0 0    /lib/systemd\sda5             0      0   0.0    0.1   21.8M 5.04M   4403 mark          27:23 1     0 S    0 0    -bash\sr0              0      0   0.0    0.1   21.8M 4.93M  21493 mark           0:10 1     0 S    0 0    /bin/bash\sr1              0      0   0.0    0.1   21.7M 4.62M  16114 mark           0:03 1     0 S    0 0    /bin/bash\                            0.0    0.1   21.7M 4.47M  21119 mark           0:00 1     0 S    0 0    /bin/bash\FILE SYS      Used  Total   0.0    0.1   90.6M 4.14M   4402 mark           0:08 1     0 S    ? ?    0\/ (sda1)     2.48G  15.6G   0.0    0.1   250M  3.97M    588 syslog         0:28 4     0 S    ? ?    /usr/sbin/rs\                            0.0    0.1   21.8M 3.87M   3407 mark           0:04 1     0 S    0 0    -bash\SENSORS                     0.0    0.1   51.5M 3.76M  21144 root           0:00 1     0 S    ? ?    sudo nohup /\Physical id          100C   0.0    0.1   41.9M 3.64M    597 messagebu      0:00 1     0 S    ? ?    /usr/bin/dbu\Core 0               100C   0.0    0.1   43.2M 3.45M    396 root           0:01 1     0 S    ? ?    /lib/systemd\Core 1               100C   0.0    0.1   64.3M 3.21M   3377 root           0:00 1     0 S    ? ?    /bin/login -\Core 2               100C   0.0    0.1   28.0M 2.91M    592 root           0:00 1     0 S    ? ?    /lib/systemd\Core 3               100C   0.0    0.1   26.7M 2.86M  16113 mark           0:06 1     0 S    ? ?    SCREEN\                            0.0    0.1   15.7M 2.81M    774 root           0:00 1     0 S    ? ?    /sbin/dhclie

\\

Glances由约1万行Python代码和约2.5万行JavaScript代码写成,并依赖于psutil软件包以用于遥测数据收集。它还含有大量插件,包括支持监控GPU、Kafka、RAID设置、文件夹监控以及WiFi等等。

\\

除了基于ncurses的界面,Glances也能以Web应用的形式运行。当您在Windows 10上通过cmd.exe运行Glances的时候,将启动一个运行在TCP端口为61209的Bottle Web应用。在浏览器中打开http://127.0.0.1:61209,您会看到一个AngularJS应用程序的欢迎页面。该页面模仿了ncurses界面。

\\

您也可以通过调用其暴露的API接口,配合其他工具使用:

\\

\$ curl http://127.0.0.1:61209/api/3/all \\\    | python -mjson.tool \\\    | head -n50\{\    \"alert\": [],\    \"amps\": [],\    \"batpercent\": [],\    \"cloud\": {},\    \"core\": {\        \"log\": 4,\        \"phys\": 4\    },\    \"cpu\": {\        \"cpucore\": 4,\        \"ctx_switches\": 182358,\        \"idle\": 82.9,\        \"interrupts\": 113134,\        \"soft_interrupts\": 0,\        \"syscalls\": 215848,\        \"system\": 12.5,\        \"time_since_update\": 8.532670974731445,\        \"total\": 9.8,\        \"user\": 3.1\    },\    \"diskio\": [\        {\            \"disk_name\": \"PhysicalDrive6\

系统监控:top vs Htop vs Glances相关推荐

  1. Linux系统监控——top命令

    1.top命令显示 top命令显示区分为两个部分,上面是系统统计信息:下面是进程信息. 2.系统统计信息 2.1 第一行 第一行,需要关注的是load avg这行,通过这三个值,我们能看出系统负载的发 ...

  2. 【性能测试】Linux系统监控-Top命令

    前面转载的三篇文章主要介绍了性能测试的相关概念,其中有提到服务器,服务器的配置是性能测试中必须考虑的,而且性能测试中也必须监控服务器. 这篇文章主要介绍一下如何通过Linux服务器自带的top命令监控 ...

  3. 【Linux】综合性命令及解析【top、htop、vmstat、dstat、glances、sar】

    文章目录 一.top – 实时显示系统运行状态 二.htop – 互动的进程查看器 三.vmstat – 显示虚拟内存状态 四.dstat – 全能系统信息统计工具 五.glances – 高层次的多 ...

  4. linux 系统监控、诊断工具之 top 详解

    接触 linux 的人对于 top 命令可能不会陌生(不同系统名字可能不一样,如 IBM 的 aix 中叫 topas ),它的作用主要用来监控系统实时负载率.进程的资源占用率及其它各项系统状态属性是 ...

  5. linux系统监控、诊断工具摘录top IO wait lsof

    linux 系统监控.诊断工具之 top 详解 http://my.oschina.net/leejun2005/blog/157910 linux系统监控.诊断工具之 IO wait http:// ...

  6. linux系统监控命令汇总

    零.Linux系统监控命令速查手册 命令 功能应用 用法举例     free 查看内存使用情况,包括物理内存和虚拟内存 free -h或free -m     vmstat 对系统的整体情况进行统计 ...

  7. Linux系统监控命令整理汇总-掌握CPU,内存,磁盘IO等找出性能瓶颈

    的性能有问题,总之,每到晚上挖站否的主机就出现了不稳定的情况,系统负载忽高忽低.利用服务器日志分析利器:ngxtop和GoAccess也能查出有一些IP一直在不断地扫描服务器端口还有WP后台. 但是, ...

  8. linux 检测wan命令,Linux系统监控常用命令

    释放双眼,带上耳机,听听看~! 1.free free 命令显示系统使用和空闲的内存情况,包括物理内存.交互区内存(swap)和内核缓冲区内存. $ free (-buffers/cache) use ...

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

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

最新文章

  1. CV05-ResNet笔记
  2. js win10语音朗读文字
  3. aptana对齐快捷键ctrl+shift+f
  4. 北京科技大学计算机科学与技术复试,【2017年整理】北京科技大学计算机科学与技术考研经验.doc...
  5. Spring.Net学习
  6. ubuntu18.04安装openresty
  7. 工程制图 (装配图)
  8. JVM从入门到精通(十一): CMS日志详解,G1日志详解,JVM常见参数总结;补充纤程知识
  9. 新的开始 和一些总结
  10. 公司管理项目管理中的技巧
  11. A + B Problem II
  12. 在ppt中怎么加入倒计时 里面怎么加入倒计时【方法】
  13. 使用 Git 管理 Vim 插件
  14. 软件人员kpi制定模板_软件开发人员月度KPI考核指标
  15. [Mysql] LEFT函数 | RIGHT函数
  16. 基线、底线、顶线、中线
  17. JavaFX+Kotlin游戏从入门到放弃:拯救蛇蛇大作战又名454行实现几何数独游戏
  18. java onfocus_[Java教程]onfocus和onblur应用代码实例
  19. 小程序提示:downloadFile:fail 发生了 SSL 错误,无法建立与该服务器的安全连接
  20. Linux进程间通信信号量

热门文章

  1. Debug不崩溃Release版本崩溃的一种原因
  2. LINUX下c语言调用math.h库函数的注意事项
  3. [Tool] 使用CodeMaid自動程式排版 - 摘自网络
  4. NetBeans 时事通讯(刊号 # 55 - May 06, 2009)
  5. 浅析Java web程序之客户端和服务器端交互原理
  6. 洛谷P1036选数(素数+组合数)
  7. 小爱童鞋@你,一起来撸个小程序吧
  8. Git Gitlab 使用指南
  9. 第一个 Hello Worlds ,打开 opener_server.pl 的大门。OPener_Server 第 3 弹
  10. 第九章 硬件抽象层:HAL 心得笔记