2012年3月1日 星期四

Linux運維不可不知的性能監控和調試工具(二)

1 nagios Nagios是一個開源監控解決方案,我覺得他可以監控一切 ,可以看一下我以前的文章:NAGIOS 2 ps #用來查看程式的運行情況 ps -ef |grep svr.py|grep -v grep |awk '{print $2}' #查看svr.py的進程pid號 14554 dongwm@linux-b8lh:~> ps -e -o pid,args --forest #層次結構中的進程ID 3 free #查看系統的物理(RAM)和交換記憶體的資訊 dongwm@linux-b8lh:~> free -mto #MB值顯示,顯示總計 total used free shared buffers cached Mem: 3196 2947 249 0 264 1436 Swap: 2053 88 1965 Total: 5250 3035 2215 4 top #顯示所有正在運行的進程的資訊,類似于windows的資源管理器 詳細的清參看:關於top命令的研究 5 pmap #顯示一個給定的進程的記憶體映射 dongwm@linux-b8lh:~> pmap 14443 14443: bash START SIZE RSS PSS DIRTY SWAP PERM MAPPING 08048000 580K 476K 74K 0K 0K r-xp /bin/bash 080d9000 4K 4K 4K 4K 0K r--p /bin/bash 080da000 8K 8K 8K 8K 0K rw-p /bin/bash 080dc000 1076K 976K 976K 976K 0K rw-p [heap] b744c000 8K 8K 8K 8K 0K rw-p [anon] b744e000 252K 32K 6K 0K 0K r--p /usr/lib/locale/zh_CN.utf8/LC_CTYPE b748d000 1344K 24K 2K 0K 0K r--p /usr/lib/locale/zh_CN.utf8/LC_COLLATE 6 nestat #顯示各種網路相關資訊,如網路連接,路由表,介面統計等,這個很常用,比如判斷某程式的埠是否在監聽 dongwm@linux-b8lh:~> sudo /bin/netstat -ap |grep ssh #-a 表示所有埠 -p顯示pid root's password: tcp 0 0 linux-b8lh.site:59073 mta1:61002 ESTABLISHED 29323/ssh tcp 0 0 linux-b8lh.site:35252 10.14.22.26:61300 ESTABLISHED 11986/ssh tcp 0 0 linux-b8lh.site:57146 mta1:61002 ESTABLISHED 9138/ssh tcp 0 0 linux-b8lh.site:32997 10.14.22.26:61300 ESTABLISHED 15122/ssh tcp 0 0 linux-b8lh.site:45807 10.14.22.26:61300 ESTABLISHED 29240/ssh tcp 0 0 linux-b8lh.site:35865 mta1:61002 ESTABLISHED 28751/ssh unix 2 [ ACC ] STREAM LISTENING 13182 2929/gnome-keyring- /tmp/keyring-TMukPL/ssh unix 3 [ ] STREAM CONNECTED 607118 29323/ssh unix 3 [ ] STREAM CONNECTED 607117 29326/sshfs unix 3 [ ] STREAM CONNECTED 608427 29240/ssh unix 3 [ ] STREAM CONNECTED 608426 29244/sshfs dongwm@linux-b8lh:~> sudo /bin/netstat -tunlp|grep name #我常用的命令 Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 172.16.180.1:53 0.0.0.0:* LISTEN 5160/named tcp 0 0 172.16.110.1:53 0.0.0.0:* LISTEN 5160/named tcp 0 0 192.168.8.46:53 0.0.0.0:* LISTEN 5160/named tcp 0 0 127.0.0.2:53 0.0.0.0:* LISTEN 5160/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 5160/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 5160/named udp 0 0 172.16.180.1:53 0.0.0.0:* 5160/named udp 0 0 172.16.110.1:53 0.0.0.0:* 5160/named udp 0 0 192.168.8.46:53 0.0.0.0:* 5160/named udp 0 0 127.0.0.2:53 0.0.0.0:* 5160/named udp 0 0 127.0.0.1:53 0.0.0.0:* dongwm@linux-b8lh:~> netstat -r #顯示路由資訊類似於'route -n'的輸出 Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 172.16.180.0 * 255.255.255.0 U 0 0 0 vmnet8 172.16.110.0 * 255.255.255.0 U 0 0 0 vmnet1 192.168.8.0 * 255.255.255.0 U 0 0 0 eth3 link-local * 255.255.0.0 U 0 0 0 eth3 loopback * 255.0.0.0 U 0 0 0 lo default 192.168.8.254 0.0.0.0 UG 0 0 0 eth3 7 IPTraf dongwm@linux-b8lh:~> sudo zypper install iptraf 網路流量即時監控工具,可以監控所有的流量,IP流量,按協議分的流量,還可以設置篩檢程式等 啟動需要root許可權,一個圖形化的工具,可以抓包,報告網卡流量情況,網卡資料包個數等,我也比較喜歡它來判斷一些網路問題 8 htop dongwm@linux-b8lh:~> sudo zypper install htop 彩色字體的top ,支援滑鼠點擊,對cpu使用情況。記憶體使用情況,當前負載情況等都直接顯示,替代了top 9 dstat dongwm@linux-b8lh:~> sudo zypper install dstat #彩色字體的vmstat dongwm@linux-b8lh:~> dstat -a ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 25 2 72 0 0 0| 43k 75k| 0 0 | 107B 839B|2066 7231 25 2 72 0 0 0| 0 40k|1328B 0 | 0 0 |2029 6175 27 2 70 1 0 0| 0 20k|2245B 1231B| 0 0 |2191 6545 28 1 70 0 0 0| 0 0 |1610B 0 | 0 0 |2243 6815 25 2 72 0 0 0| 0 104k|1224B 0 | 0 0 |2075 6610 10 Strace #i like it 用於調試和故障排除Linux環境下的可執行檔的執行。 它顯示了系統調用的進程所使用的過程中收到的信號,常用 *2 不會這個基本不要作運維了 #strace + 可執行程式 注:想要特定一個系統調用 使用‘-e’ 11 lsof #卸載移動存儲時經常提示device busy,也可能誤刪了一個正在打開的檔,lsof(list open files)是一個列出當前系統打開檔的工具.應用程式打開檔的描述符列表提供了大量關於這個應用程式本身的資訊,因此通過lsof工具能夠查看這個 清單有助於系統監測以及排錯 dongwm@linux-b8lh:~> lsof -a -u dongwm -d txt #查看所屬root使用者進程所打開的檔案類型為txt的文件 dongwm@linux-b8lh:~> lsof /home #在卸載檔案系統時,如果該檔案系統中有任何打開的檔,操作通常將會失敗。那麼通過lsof可以找出那些進程在使用當前要卸載的檔案系統 WebQQ\xe5 24090 dongwm 2u REG 8,7 7247256 12320783 /home/dongwm/.xsession-errors notificat 27261 dongwm mem REG 8,7 1512 12982245 /home/dongwm/.local/share/mime/mime.cache bluefish 29204 dongwm cwd DIR 8,7 12288 12320769 /home/dongwm bluefish 29204 dongwm DEL REG 8,7 12321855 /home/dongwm/.local/share/gvfs-metadata/home-4be5293d.log bluefish 29204 dongwm DEL REG 8,7 12320866 /home/dongwm/.local/share/gvfs-metadata/home 恢 複文件:當系統中的某個檔被意外地刪除了,只要這個時候系統中還有進程正在訪問該檔,那麼我們就可以通過lsof從/proc目錄下恢復該檔的內 容。思路就是lsof|grep 這個刪除了的檔,如果輸出了項,記住pid 和第4列的“數位+字母”其中的數位,然後, cat /proc/那個pid/fd/那個數字 > 刪掉的檔 就恢復了 12 w #查看當前登錄系統的使用者 13 uptime #查看當前負載的命令 dongwm@linux-b8lh:~> uptime 17:52 已啟動1 天 8:41,6 個使用者,平均負載:0.42, 0.26, 0.24 14 vnstat #用來統計網路流量 dongwm@linux-b8lh:~> sudo zypper install vnstat vnstati -i eth0 – -months – -output /dir/month.png #每月的流量統計圖,做成定時任務+html顯示就更OK了 dongwm@linux-b8lh:~> sudo vnstat-create-db eth0 root's password: Error: Unable to read database "/var/lib/vnstat/eth0". Info: -> A new database has been created. dongwm@linux-b8lh:~> vnstat --top10 #創建資料庫資訊,查看流量前10 15 ss #socket流量狀態情況, 我喜歡 dongwm@linux-b8lh:~> sudo /usr/sbin/ss -o state established #查看建立連接的socket Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 192.168.8.46:59073 60.2.235.195:61002 timer:(keepalive,60min,0) 0 0 192.168.8.46:52996 112.95.243.28:http 0 0 192.168.8.46:51066 128.121.22.144:http 0 0 192.168.8.46:38547 112.95.240.222:http 0 0 192.168.8.46:49295 74.125.71.154:http 0 0 192.168.8.46:46500 10.14.22.26:61300 timer:(keepalive,48min,0) dongwm@linux-b8lh:~> sudo /usr/sbin/ss -l #顯示所有的監聽通訊端 Recv-Q Send-Q Local Address:Port Peer Address:Port 0 3 172.16.180.1:domain *:* 0 3 172.16.110.1:domain *:* 0 3 192.168.8.46:domain *:* 0 3 127.0.0.2:domain *:* 0 3 127.0.0.1:domain *:* 0 128 127.0.0.1:ipp *:* 0 128 ::1:ipp :::* 0 128 127.0.0.1:953 *:* 0 50 *:mysql *:* 0 128 :::sunrpc :::* 0 128 *:sunrpc *:* 0 128 :::http dongwm@linux-b8lh:~> sudo /usr/sbin/ss -s #顯示根據類型劃分的總數值統計 Total: 719 (kernel 769) TCP: 62 (estab 5, closed 16, orphaned 4, synrecv 0, timewait 2/0), ports 42 Transport Total IP IPv6 * 769 - - RAW 1 1 0 UDP 12 10 2 TCP 46 43 3 INET 59 54 5 FRAG 0 0 0

沒有留言: