1. 程式人生 > >Linux系統監控工具

Linux系統監控工具

linux系統監控工具


需要監視Linux服務器的性能?試試這些內置的命令和一些附加的工具吧。大多數Linux發行版都集成了一些監視工具。這些工具可以獲取有關系統活動的信息的詳細指標。通過這些工具,你可以發現產生系統性能問題可能存在原因。下面討論的是一些最基本的命令,它涉及到系統分析和調試服務器等一些問題,如:

1. 找出系統瓶頸問題.

2. 磁盤 (儲存) 瓶頸問題.

3. CPU和內存瓶頸問題.

4. 網絡瓶頸問題.

# 1: top – 查看活動進程的命令

TOP工具能夠實時顯示系統中各個進程的資源占用狀況。默認情況下,它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU/內存的使用情況和執行時間對任務進行排序,並每五秒鐘更新一次。

技術分享技術分享

常用的快捷鍵

Top命令為我們提供了很多有用的快捷鍵,如:

快捷鍵 用法

t 切換顯示進程和CPU狀態信息。

m 切換顯示進程和CPU狀態信息。

A 分類顯示各種系統資源的消耗情況。可用於快速識別系統的性能要求極高的任務。

o 改變顯示項目的順序。

r 重新設置進程的優先級別。(系統提示用戶輸入需要改變的進程PID以及需要設置的優先級值。)

k 終止一個進程。(系統將提示用戶輸入需要終止的進程PID)

s 改變刷新的時間間隔。

u 查看指定用戶的進程。

=> Related:要了解更多關於top的用法,請參考系統幫助文檔。


# 2: vmstat – 系統活動、硬件以及系統信息

這個命令用來報告關於內核線程、虛擬內存、磁盤、陷阱和CPU活動的統計信息。

# vmstat 3

輸出樣例:

[[email protected] ~]# vmstat 3

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

0 0 0 81408 93036 418400 0 0 20 13 69 125 1 1 97 2 0

0 0 0 81316 93044 418396 0 0 0 36 46 46 0 0 99 1 0

0 0 0 81324 93044 418400 0 0 0 0 49 50 0 0 100 0 0

0 0 0 81348 93044 418400 0 0 0 0 49 44 0 0 100 0 0

0 0 0 81348 93044 418400 0 0 0 32 44 46 0 0 100 0 0

顯示內存使用情況:

# vmstat –m

=> Related: 要了解更多關於vmstat的用法,請參考系統幫助文檔。

# 3: w – 找到已登陸的用戶並且查看他們做了什麽操作

W命令用來顯示機器上最近登陸的用戶信息以及他們的進程信息。

# w username

# w vivek

輸出樣例:

[[email protected] ~]# w

17:07:28 up 7:50, 1 user, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.10.21 09:24 0.00s 1:04 0.00s w

# 4: uptime – 系統已運行的時間

Uptime命令可以查看系統已經運行了多長時間。截止當前時間日期,系統已經運行了多長時間,當前登錄的用戶有哪些,已經在過去的1,5,15分鐘,系統的平均負載值情況。

# uptime

輸出樣例:

17:09:32 up 7:52, 1 user, load average: 0.00, 0.00, 0.00

1通常被認為是最佳的負載值。系統負載值根據系統的不同而不同。對於單CPU的系統,負載值在1-3為正常,SMP的系統,負載值在6-10之間也是可以接受的。(看具體的情況)

# 5: ps – 顯示進程

ps命令用來報告當前進程的快照。要選擇所有進程,使用-A或-e選項:

# ps –A

輸出樣例:

技術分享技術分享

Ps命令跟top相似,但ps為我們提供了更多的信息。

以長格式顯示輸出:

# ps –Al

查看線程:(LWP和NLWP):

# ps –AlFH

To See Threads After Processes:

# ps –AlLm

在服務器上打印出所有進程:

# ps ax

# ps axu

打印出進程樹:

# ps –ejH

# ps axjf

# pstree

See Every Process Running As User Vivek:

# ps -U vivek -u vivek u

設置以用戶定義的格式輸出:

# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm

# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

# ps -eopid,tt,user,fname,tmout,f,wchan

只顯示lighttpd的進程樹:

# ps -C lighttpd -o pid=

Or

# pgrep lighttpd

Or

# pgrep -u vivek php-cgi

顯示pid為55977的進程名:

# ps -p 55977 -o comm=

找出最耗費內存的前10個進程:

# ps -auxf | sort -nr -k 4 | head -10

找出最耗費CPU的前10個進程:

# ps -auxf | sort -nr -k 3 | head -10

# 6: free – 查看內存的使用情況

free指令會顯示內存的使用情況,包括實體內存,虛擬的交換文件內存,共享內存區段,以及系統核心使用的緩沖區等。

參數:

 -b   以Byte為單位顯示內存使用情況。

 -k   以KB為單位顯示內存使用情況。

 -m   以MB為單位顯示內存使用情況。

 -o   不顯示緩沖區調節列。

 -s <間隔秒數>  持續觀察內存使用狀況。

 -t   顯示內存總和列。

 -V   顯示版本信息。

# free

輸出樣例:

[[email protected] ~]# free

total used free shared buffers cached

Mem: 1004412 912812 91600 0 93080 411008

-/+ buffers/cache: 408724 595688

Swap: 1048568 60 1048508

ree的輸出一共有四行,第四行為交換區的信息,分別是交換的總量(total),使用量(used)和有多少空閑的交換區(free)。

第二行和第三行是比較讓人迷惑的。這兩行都是說明內存使用情況的。第一列是總量(free),第二列是使用量(free),第三列是可用量(free)。第一行的輸出時從操作系統(OS)來看的。也就是說,從OS的角度來看,計算機上一共有:

999212KB(缺省時free的單位為KB)物理內存,即FO[2][1];

在這些物理內存中有967476KB(即FO[2][2])被使用了;

還用31736KB(即FO[2][3])是可用的;

=> Related: 要了解更多關於free的東西,請百度或者google之。

# 7: iostat – 監視CPU平均負載值,I/O狀態

該命令用於報告CPU和輸入/輸出設備,分區和網絡文件系統(NFS)的詳細統計數據。

# iostat

輸出樣例:

技術分享技術分享

基本使用:

# iostat -d -k 1 10

參數 -d 表示,顯示設備(磁盤)使用狀態;-k某些使用block為單位的列強制使用Kilobytes為單位;1 10表示,數據顯示每隔1秒刷新一次,共顯示10次。

# iostat -d -k 1 10

技術分享技術分享

# 8: sar - 收集和報告系統狀態信息

Sar 命令是用來收集,報告和保存系統活動信息的。

Sar 把自已收集的數據以二進制格式保存在[img]file:///C:\Users\ADMIN_~1\AppData\Local\Temp\[LC3U)F{0XCAB)[email protected][/img]ar/log[img]file:///C:\Users\ADMIN_~1\AppData\Local\Temp\{)_G62``_[8)(8ND1X0_M7L.gif[/img]裏

使用 sar -d 可以得到當天磁盤活動的情況匯總

sar -n DEV 則能給出網絡接口的統計信息

sar -A 可以報告所有的信息

sar 適用於快速粗略了解歷史信息。

sar 命令行的常用格式: sar [options] [-o file] t [n]

options 為命令行選項,sar命令的選項很多,下面只列出常用選項:

-A:所有報告的總和。        

-u:CPU利用率        

-v:進程、I節點、文件和鎖表狀態。        

-d:硬盤使用報告。        

-r:沒有使用的內存頁面和硬盤塊。        

-g:串口I/O的情況。

-b:緩沖區使用情況。

-a:文件讀寫情況。

-c:系統調用情況。

-R:進程的活動情況。

-y:終端設備活動情況。

-w:系統交換活動。

# 9: mpstat – 實時系統監視工具

mpstat是MultiProcessor Statistics的縮寫,是實時系統監控工具。其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPUs系統裏,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。

下面只介紹mpstat與CPU相關的參數,mpstat的語法如下:

Usage: mpstat [ options... ] [ <interval> [ <count> ] ]

Options are:

[ -P { <cpu> | ALL } ] [ -V ]

顯示每個進程對CPU的平均利用率:

# mpstat -P ALL

輸出樣例:

技術分享技術分享

#10: pmap – 查看進程使用內存的情況

pmap命令用來報告進程使用對於的相應內存的情況。使用下面命令可以查出某些內存瓶頸問題的原因。

# pmap -d PID

顯示進程號為47394的進程所用內存的信息:

# pmap -d 3315

輸出樣例:

3315: sshd: [email protected]/0

Address Kbytes Mode Offset Device Mapping

00007f1c70798000 1280 rw-s- 0000000000000000 000:00004 zero (deleted)

00007f1c708d8000 16 r-x-- 0000000000000000 008:00005 pam_limits.so

00007f1c708dc000 2044 ----- 0000000000004000 008:00005 pam_limits.so

00007f1c70adb000 4 r---- 0000000000003000 008:00005 pam_limits.so

00007f1c70adc000 4 rw--- 0000000000004000 008:00005 pam_limits.so

00007f1c70add000 8 r-x-- 0000000000000000 008:00005 pam_keyinit.so

......

......

00007fff80661000 84 rw--- 0000000000000000 000:00000 [ stack ]

00007fff80720000 4 r-x-- 0000000000000000 000:00000 [ anon ]

ffffffffff600000 4 r-x-- 0000000000000000 000:00000 [ anon ]

mapped: 100364K writeable/private: 1064K shared: 2560K

最後一行非常重要:

mapped: 100364K total amount of memory mapped to files.

writeable/private: 1064K the amount of private address space.

shared: 2560K the amount of address space this process is sharing with others.

#11 : netstat 和 ss – 查看網絡情況

netstat命令顯示網絡連接,路由表,網絡接口統計,偽裝連接,組播成員身份。ss命令類似netstat命令的信息。關於ss和netstat命令,您可以參閱系統幫助文檔或者互聯網上的資源。

#12: iptraf – 實時網絡狀況監視工具

iptraf是一款彩色的交互式的IP局域網監控工具。這是一個基於ncurses的IP LAN監視工具,它會統計網絡中產生的各種數據,包括TCP信息,UDP連接數,ICMP和OSPF信息,以太網負載信息,節點統計,IP校驗和錯誤,以及其他信息。並且提供:

Network traffic statistics by TCP connection

IP traffic statistics by network interface

Network traffic statistics by protocol

Network traffic statistics by TCP/UDP port and by packet size

Network traffic statistics by Layer2 address

技術分享技術分享

上圖是General interface statistics: IP traffic statistics by network interface

技術分享技術分享

上圖是網絡連接中建立的TCP連接信息的統計

#13: tcpdump – 網絡狀況分析工具

tcpdump用來抓包的一個的簡單命令。但是,要使用該工具,你需熟悉TCP /IP協議。例如:顯示網絡中有關DNS的信息,請輸入:

# tcpdump -i eth1 ‘udp port 53‘

顯示去往202.54.1.5的所有ftp會話信息:

# tcpdump -i eth1 ‘dst 202.54.1.5 and (port 21 or 20‘

顯示去往192.168.1.5的所有HTTP會話信息:

# tcpdump -ni eth0 ‘dst 192.168.1.5 and tcp and port http‘

使用Wireshark查看tcpdump抓包文件的詳細信息,輸入:

# tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

#14]: strace – 系統調用工具

strace是Linux環境下的一款程序調試工具,用來監察一個應用程序所使用的系統呼叫及它所接收的系統信息。strace是一個有用的小工具,它可以通過跟蹤系統調用來讓你知道一個程序在後臺所做的事情。Strace是一個基礎的調試工具,在大多數 Linux系 統上默認已經安裝;但是即便你不是在跟蹤一個問題的時候它也是一個極好的軟件。它能告訴你很多關於一個Linux程序怎樣工作的信息。

#15: /Proc 文件系統

Linux 內核提供了一種通過 /proc 文件系統,在運行時訪問內核內部數據結構、改變內核設置的機制。幾個例子:

# cat /proc/cpuinfo

# cat /proc/meminfo

# cat /proc/zoneinfo

# c。at /proc/mounts

Related: 要更詳細地去了解/proc文件系統,你可以去查看官方文檔

#16: Nagios – 服務器和網絡信息監視工具

Nagios是一款很流行的開源系統和網絡監控應用軟件。你可以很輕松地用它監控所有的主機,網絡設備和服務。在系統或服務狀態異常時會第一時間通知網站運維人員(發出郵件或短信報警),在狀態恢復正常後發出郵件或短信通知。

#17: Cacti -基於WEB的監視工具

Cacti是通過 snmpget來獲取數據,使用 RRDtool繪畫圖形,而且你完全可以不需要了解RRDtool復雜的參數。它提供了非常強大的數據和用戶管理功能,可以指定每一個用戶能查看樹狀結構、host以及任何一張圖,還可以與LDAP結合進行用戶驗證,同時也能自己增加模板,功能非常強大完善。界面友好。CACTI軟件Cacti 的發展是基於讓 RRDTool 使用者更方便使用該軟件,除了基本的 Snmp 流量跟系統資訊監控外,Cacti 也可外掛 Scripts 及加上 Templates 來作出各式各樣的監控圖。

#18: KDE System Guard – 圖形化的系統監視工具

KDE System Guard (KSysguard)是KDE的任務管理和性能監控工具。它采用client/server架構,可以監控本機也可以監控遠端主機。

一篇51CTOblog的博文,對KDE System Guard的介紹很詳細,有興趣的朋友去看看。

http://linuxshow.blog.51cto.com/1572053/371657

技術分享技術分享

#19: Gnome System Monitor – 圖形化系統監視工具

它可以顯示系統信息,監視系統進程,系統資源負載情況,以及文件系統。你也可以用它來提高系統性能。盡管功能不像KDE System Guard那麽強大,但作為Gnome桌面環境的圖形化性能分析工具,Gnome System Monitor可以圖形化顯示性能相關系統資源用於發現可能的峰值和瓶頸。產生的所有統計信息都是實時,要想做長時間的性能分析需使用其它工具來完成。

功能:

Displays various basic information about the computer‘s hardware and software.

Linux Kernel version

GNOME version

Hardware

Installed memory

Processors and speeds

System Status

Currently available disk space

Processes

Memory and swap space

Network usage

File Systems

Lists all mounted filesystems along with basic information about each.

技術分享技術分享

其他工具:

nmap – 掃描主機的端口開放情況.

lsof - 列出系統當前打開的文件,網絡連接以及更多信息。

ntop web based tool – Ntop是一款監控網絡流量工具,它顯示的網絡狀況更加直觀、詳細。Ntop甚至可以列出每個節點計算機的網絡帶寬利用率。它是一個靈活的、功能齊全的,用來監控和解決局域網問題的工具;可以自動從網絡中識別有用的信息;將截獲的數據包轉換成易於識別的格式;對網絡環境中通信失敗的情況進行分析;探測網絡通信的時間和過程等。

Conky - Conky是x-window下,一款免費的,輕量級系統監控的工具。它能夠監控許多系統環境的狀態,其中包括的CPU,內存,交換空間,磁盤存儲,溫度,進程,網絡接口,電池電量,系統消息,電子郵件收件箱等。

GKrellM – 它來用於監測CPU狀態,內存,硬盤,網絡接口,本地和遠程郵箱,以及其他的東西等。

vnstat – vnstat是一個基於控制臺的網絡流量監控軟件,它會保持每月,每天,每小時,監視並記錄所選定網絡接口的網絡通信狀況。

htop – htop是一個增強版本的top,同時也是一個交互式進程查看器,它可以以樹狀結構來顯示進程列表。

mtr – mtr在單一的網絡診斷工具上,結合了traceroute和ping程序的功能。


本文出自 “孤獨沒有顏色” 博客,請務必保留此出處http://tenderness.blog.51cto.com/8855468/1954395

Linux系統監控工具