大傢好,我是民工哥!
玩 Linux 系統的,都應該知道想要玩轉它,就得必須玩轉 Linux 的小黑框,簡單來說就是必須搞懂 Linux 的常用命令!
所以,完全搞懂一個命令及其參數的用法,你會發現它是非常強大且牛逼的,Linux 系統就有這麼一個命令:sar,功能非常強大且牛逼,但是,很多人都沒能完全搞懂它。
今天,民工哥就和大傢一起來聊一聊這個強大且牛掰的命令:sar。
簡介
sar(System Activity Reporter 系統活動情況報告)是目前 Linux 上最為全面的系統性能分析工具之一。
它可以從多方面對系統的資源使用情況進行監控,包括:文件的讀寫情況、系統調用的使用情況、磁盤 I/O、CPU 效率、內存使用狀況、進程活動及 IPC 有關的活動等,然後將系統中的各種性能數據收集起來並顯示給用戶。
安裝
sar 命令來自於 sysstat 這個工具包,如果系統提示 sar 命令不存在,需先安裝 sysstat。
[root@CentOS7-1 ~]# sar
-bash: sar: command not found
[root@CentOS7-1 ~]# yum install sysstat -y
[root@CentOS7-1 ~]# sar
語法格式
sar -[ options ] time_interval number_of_tines_to_display
常用參數說明
-A #匯總所有的報告
-a #查看文件讀寫使用情況
-B #查看附加的緩存的使用情況
-b #查看緩存的使用情況
-c #查看系統調用的使用情況
-d #查看磁盤的使用情況
-g #查看串口的使用情況
-h #查看關於buffer使用的統計數據
-m #查看IPC消息隊列和信號量的使用情況
-n #查看命名cache的使用情況
-p #查看調頁活動的使用情況
-q #查看平均負載
-R #查看進程的活動情況
-r #查看沒有使用的內存頁面和硬盤塊
-u #查看CPU的利用率
-v #查看進程、i節點、文件和鎖表狀態
-w #查看系統交換活動狀況
-y #查看TTY設備活動狀況
常用功能介紹
sar 命令的一些常用選項和功能如下:
- CPU使用統計:使用“-u”選項可以輸出整體CPU的使用情況,包括用戶模式下的時間百分比、系統模式下的時間百分比等。
- 內存使用情況:使用“-r”選項可以查看沒有使用的內存頁面和硬盤塊的情況。
- 磁盤使用情況:使用“-d”選項可以查看每個塊設備的活動情況,包括讀取和寫入的塊數等。
- 網絡活動情況:使用“-n”選項可以查看網絡連接、傳輸速率等網絡活動情況。
- 進程活動情況:使用“-P”選項可以查看進程的創建、終止等進程活動情況。
- 上下文切換情況:使用“-w”選項可以查看系統上下文切換情況,了解系統中的進程調度情況。
- 系統負載情況:使用“-q”選項可以查看系統負載情況,包括隊列長度和負載信息等。
- 緩沖區使用情況:使用“-b”選項可以查看緩沖區的使用情況,了解系統的I/O性能。
- 文件讀寫情況:使用“-a”選項可以查看文件讀寫情況,了解磁盤的讀寫負載。
sar命令和top命令區別
兩者都是可以用於監控系統性能的工具,但它們之間存在一些區別。
- sar命令是一個系統監視和記錄工具,它可以收集、報告和保存系統活動信息,包括CPU使用情況、內存使用情況、磁盤活動、網絡活動等。sar命令可以將收集到的數據以表格或圖形方式顯示,並支持對歷史數據的查詢和分析。因此,sar命令更適合用於系統性能的長期監控和數據記錄。
- top命令則是一個動態的監視工具,它可以實時顯示系統中各個進程的資源占用情況,包括CPU使用率、內存占用、進程優先級等。top命令還可以根據用戶的需要動態地調整顯示的進程信息,並提供了一個交互式的界面供用戶進行操作。因此,top命令更適合用於短期的實時性能監控和進程管理。
應用舉例
統計網絡信息
[root@CentOS7-1 ~]# sar -n DEV 1 3
查看內存交換空間的使用率信息
[root@CentOS7-1 ~]# sar -r
Linux 3.10.0-1127.18.2.el7.x86_64 (CentOS7-1) 01/18/2024 _x86_64_ (1 CPU)
04:28:37 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
04:28:55 AM 127328 868356 87.21 0 542496 679228 21.96 350504 364784 24
04:29:00 AM 127328 868356 87.21 0 542516 679228 21.96 350504 364784 44
04:30:01 AM 126700 868984 87.28 0 542644 680828 22.01 350956 364680 0
Average: 127119 868565 87.23 0 542552 679761 21.98 350655 364749 23
輸出的結果字段說明
kbmemfree #空閑物理內存量
kbmemused #使用中的物理內存量
%memused #物理內存量使用率
kbbuffers #內核中作為緩沖區使用的物理內存容量
kbcacheed #內核中作為緩存使用的物理內存容量
kbswpfree #交換區的空閑容量
kbswpused #使用中的交換區容量
查看CPU使用率
[root@centos7 ~]# sar -u
Linux 3.10.0-1127.18.2.el7.x86_64 (centos7) 03/28/2021 _x86_64_ (1 CPU)
11:10:02 AM CPU %user %nice %system %iowait %steal %idle
11:20:01 AM all 0.03 0.00 0.18 0.02 0.00 99.77
11:30:01 AM all 0.03 0.00 0.17 0.02 0.00 99.78
Average: all 0.03 0.00 0.18 0.02 0.00 99.77
查看平均負載
[root@centos7 ~]# sar -q
Linux 3.10.0-1127.18.2.el7.x86_64 (centos7) 03/28/2021 _x86_64_ (1 CPU)
11:10:02 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
11:20:01 AM 1 108 0.00 0.01 0.05 0
11:30:01 AM 1 108 0.00 0.01 0.05 0
Average: 1 108 0.00 0.01 0.05 0
查看頁面交換發生狀況
[root@centos7 ~]# sar -w
Linux 3.10.0-1127.18.2.el7.x86_64 (centos7) 03/28/2021 _x86_64_ (1 CPU)
11:10:02 AM proc/s cswch/s
11:20:01 AM 0.02 19.10
11:30:01 AM 0.03 19.92
11:40:01 AM 0.02 19.45
Average: 0.02 19.49
查看I/O和傳送速率的統計信息
[root@centos7 ~]# sar -b
Linux 3.10.0-1127.18.2.el7.x86_64 (centos7) 03/28/2021 _x86_64_ (1 CPU)
11:10:02 AM tps rtps wtps bread/s bwrtn/s
11:20:01 AM 0.06 0.00 0.06 0.00 0.74
11:30:01 AM 0.03 0.00 0.03 0.00 0.40
Average: 0.05 0.00 0.05 0.00 0.57
輸出字段說明
tps #每秒鐘物理設備的 I/O 傳輸總量
rtps #每秒鐘從物理設備讀入的數據總量
wtps #每秒鐘向物理設備寫入的數據總量
bread/s #每秒鐘從物理設備讀入的數據量,單位為 塊/s
bwrtn/s #每秒鐘向物理設備寫入的數據量,單位為 塊/s
查看塊設備
[root@CentOS7-1 ~]# sar -d 1 2
Linux 3.10.0-1127.18.2.el7.x86_64 (CentOS7-1) 01/18/2024 _x86_64_ (1 CPU)
04:42:51 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
04:42:52 AM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:42:52 AM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:42:52 AM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:42:52 AM dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:42:52 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
04:42:53 AM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:42:53 AM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:42:53 AM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:42:53 AM dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:42:53 AM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
04:42:54 AM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:42:54 AM dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:42:54 AM dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
04:42:54 AM dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
輸出的信息說明
tps #每秒從物理磁盤 I/O 的次數。
rd_sec/s #每秒讀扇區的次數。
wr_sec/s #每秒寫扇區的次數。
avgrq-sz #平均每次設備 I/O 操作的數據大小(扇區)。
avgqu-sz #磁盤請求隊列的平均長度。
await #從請求操作到系統完成處理,每次請求的平均消耗時間,包括請求隊列等待時間,單位是毫秒(1 秒=1000 毫秒)。
svctm #系統處理每次請求的平均時間,不包括在請求隊列中消耗的時間。
%util #I/O 請求占 CPU 的百分比,比率越大,說明越飽和。
高級功能
多系統監控
sar命令可以在多個系統之間進行分佈式監控,並匯總各個系統的性能數據。用戶可以使用“-A”選項來指定要監控的系統,並使用“-f”選項指定數據文件。
生成自定義報告
sar 命令可以將收集到的數據以表格或圖形方式顯示,並支持生成自定義報告。用戶可以使用“-o”選項指定報告文件名,並使用“-f”選項指定數據文件。
報警和通知
sar命令可以配置報警和通知功能,當系統資源使用超過預設閾值時,自動發送警報或通知給相關人員。
數據導出和導入
sar 命令可以將收集到的數據導出為文件,以便在其他工具中進行進一步分析。同時,用戶也可以從文件中導入數據,以進行歷史數據比較或其他用途。
與其他工具集成
sar命令可以與其他系統管理工具集成,如Nagios、Zabbix等,以實現自動化監控和報警功能。
總結
總之,sar 命令是一個功能強大的監控工具,具有、報告生成、多系統監控、自定義監控選項、報警和通知、數據導出和導入以及與其他工具集成等高級功能。通過合理使用這些功能,用戶可以更好地了解系統性能狀況並進行相應的優化和調整。
這麼牛逼的命令行工具,你確定不整一下?
今天的分享就到這裡了,如有幫助,歡迎一鍵三連(點贊、評論、轉發)支持一下!
讀者專屬群:誠邀你加入技術交流群,一起卷!
如有錯誤或其它問題,歡迎小夥伴留言評論、指正。如有幫助,歡迎點贊 轉發分享。更多相關開源技術文章,請持續關註!資源分享(小編為你精心準備了2048G的各類學習資料。包括系統運維、數據庫、redis、MogoDB、電子書、Java基礎課程、Java實戰項目、架構師綜合教程、架構師實戰項目、大數據、Docker容器、ELK Stack、機器學習、BAT面試精講視頻等。)