atop配置
atop簡介
- atop是一款功能非常強大的Linux服務器監控工具。它能定期記錄系統運行狀態,并采集系統資源(如CPU、內存、磁盤、網絡)的使用情況,同時還會監控進程的運行情況。通過將這些數據保存為日志文件的方式,我們可以在服務器出現問題時獲取相應的atop日志文件進行詳細分析。無論是查看系統資源的使用情況,還是追蹤特定進程的運行狀況,atop都能提供有用的信息。
- 使用atop工具,系統管理員可以及時發現服務器的性能瓶頸、異常情況以及資源利用率等問題,從而更好地管理和優化服務器的運行。
CentOS 8系列操作系統atop配置方法
-
通過遠程登錄或本地登錄的方式登錄彈性云主機。
-
下載atop安裝包。命令如下。
# wget //www.atoptool.nl/download/atop-2.6.0-1.el8.x86_64.rpm -
執行以下命令安裝atop。
# rpm -ivh atop-2.6.0-1.el8.x86_64.rpm -
編輯配置文件,修改采樣周期,atop配置文件為/etc/default/atop。
# vi /etc/default/atop可以根據自己的實際需求修改如下配置參數,修改后保存并退出。
LOGINTERVAL=15 LOGGENERATIONS=7 LOGPATH=/var/log/atop/參數說明:
LOGINTERVAL:監控周期,單位為秒,默認600s采集一次數據,建議修改為15s。
LOGGENERATIONS:日志保留時間,單位為天,默認保留時間為28天,建議修改為7天,避免大量占用磁盤空間。
LOGPATH:日志保存路徑。默認路徑為/var/log/atop/。
-
重啟atop服務。
# systemctl restart atop -
可以設置atop服務自啟動(根據實際情況設置)。
# systemctl enable atop -
檢查是否啟動成功,active(running)表示運行正常。
# systemctl status atop
CTyunOS 、CentOS 7、EulerOS、Anolis、KylinOS系列操作系統atop配置方法
-
通過遠程登錄或本地登錄的方式登錄彈性云主機。
-
下載atop安裝包。
# wget //www.atoptool.nl/download/atop-2.6.0-1.el7.x86_64.rpm -
執行以下命令安裝atop。
# rpm -ivh atop-2.6.0-1.el7.x86_64.rpm --nodeps -
編輯配置文件,修改采樣周期,atop配置文件為/etc/default/atop。
# vi /etc/default/atop可以根據自己的實際需求修改如下配置參數,修改后保存并退出。
LOGINTERVAL=15 LOGGENERATIONS=7 LOGPATH=/var/log/atop/參數說明:
LOGINTERVAL:監控周期,單位為秒,默認600s采集一次數據,建議修改為15s。
LOGGENERATIONS:日志保留時間,單位為天,默認保留時間為28天,建議修改為7天,避免大量占用磁盤空間。
LOGPATH:日志保存路徑。默認路徑為/var/log/atop/。
-
重啟atop服務。
# systemctl restart atop -
可以設置atop服務自啟動(根據實際情況設置)。
# systemctl enable atop -
檢查是否啟動成功,active(running)表示運行正常。
# systemctl status atop
使用源碼方式安裝(適用于Fedora、Debian、Ubuntu等系列操作系統)
-
下載atop源碼。
# wget //www.atoptool.nl/download/atop-2.6.0.tar.gz -
執行以下命令解壓源碼atop。
# tar -zxvf atop-2.6.0.tar.gz -
執行以下命令查看systemctl版本。
# systemctl –version如果版本大于等于220,直接進行下一步。
否則需要修改atop的Makefile文件,刪除--now參數。
# vi atop-2.6.0/Makefile刪除systemctl命令后的--now參數。
-
安裝編譯atop依賴軟件包。
Fedora系列操作系統執行以下命令安裝:# yum install make gcc zlib-devel ncurses-devel -yDebian9、Debian10、Ubuntu系列操作系統執行以下命令安裝:
# apt install make gcc zlib1g-dev libncurses5-dev libncursesw5-dev –y -
執行以下命令編譯并安裝atop。
# cd atop-2.6.0 # make systemdinstall -
編輯配置文件,修改采樣周期,atop配置文件為/etc/default/atop。
# vi /etc/default/atop可以根據自己的實際需求修改如下配置參數,修改后保存并退出。
LOGINTERVAL=15 LOGGENERATIONS=7 LOGPATH=/var/log/atop/ -
重啟atop服務。
# systemctl restart atop -
可以設置atop服務自啟動(根據實際情況設置)。
# systemctl enable atop -
檢查是否啟動成功,active(running)表示運行正常。
# systemctl status atop
atop結果分析
-
atop啟動后,會將采集到的記錄默認存放在/var/log/atop目錄中,通過執行如下命令,查看日志文件。
atop -r /var/log/atop/atop_20230821備注:可通過ls /var/log/atop/查看所有生成的日志文件,atop_20230821為其中的一個日志文件。
atop常用指令如下所示:
c:按照進程CPU使用率進行降序篩選。
m:按照進程內存使用率進行降序篩選。
d:按照進程磁盤使用率進行降序篩選。
a:按照進程資源綜合使用率進行降序篩選。
n:按照進程網絡使用率進行降序篩選,需要額外安裝內核模塊才支持,默認不支持。
t:跳轉到下一個監控采集點。
T:跳轉到上一個監控采集點。
b:指定時間點。
-
系統資源監控字段說明。

ATOP行:主機名、采樣日期和時間點。
PRC行:進程整體運行情況。
sys及user:進程在內核態及用戶態所占CPU的時間比例。
#proc:進程總數。
#zombie:僵死進程的數量。
#exit:atop 采樣周期期間退出的進程數量。
CPU行:CPU 整體(即多核CPU作為一個整體CPU資源)的使用情況。【各字段數值相加結果為N00%,N為CPU的核數】
sys及user:CPU被用于處理進程時,進程在內核態、用戶態所占 CPU 的時間比例。
irq:CPU被用于處理中斷的時間比例。
idle:CPU處在完全空閑狀態的時間比例。
wait:CPU處在“進程等待磁盤IO導致CPU空閑”狀態的時間比例。
CPL行:CPU負載情況。
avg1、avg5 和 avg15:過去1分鐘、5分鐘和15分鐘內運行隊列中的平均進程數量。
csw:指示上下文交換次數。
intr:指示中斷發生次數。
MEM行:內存的使用情況。
tot:物理內存總量。
cache:用于頁緩存的內存大小。
buff:用于文件緩存的內存大小。
slab:系統內核占用的內存大小。
SWP行:交換空間的使用情況。
tot:交換區總量。
free:空閑交換空間大小。
PAG行:虛擬內存分頁情況
swin及swout:換入和換出內存頁數。
DSK行:磁盤使用情況,每一個磁盤設備對應一列。如果有 sdb 設備,那么增加一行 DSK 信息。
sda:磁盤設備標識。
busy:磁盤忙時比例。
read及write:讀、寫請求數量。
NET行:多列 NET 展示了網絡狀況,包括傳輸層(TCP 和 UDP)、IP層以及各活動的網口信息。
XXXi:各層或活動網口收包數目。
XXXo:各層或活動網口發包數目。
kdump配置
kdump簡介
- kdump是Linux系統中一種用于保存系統崩潰時的內存轉儲(crash dump),以便進行故障診斷和調試的工具。
- 在Linux系統中,如果遇到嚴重的內核崩潰或死鎖等問題,通常會導致系統無法繼續正常運行。為了解決這種情況,kdump允許在系統崩潰時將當前內核的內存轉儲保存到硬盤上。kdump通過一些特定的配置和設置,可以在系統崩潰時觸發一個獨立的內核(用作專用的crash內核),該內核能夠將系統的內存轉儲保存到預定義的目錄中。這個轉儲文件可以記錄包括內核代碼、進程狀態、內核堆棧跟蹤等信息,使開發人員和系統管理員能夠在崩潰發生時進行故障分析和調試。
- kdump是一種非常有用的工具,它可以幫助我們更有效地診斷系統崩潰問題,定位和解決導致系統異常的根本原因。
kdump使用須知
-
系統設置
要使用kdump功能,您的系統必須滿足一些硬件和配置要求:
- 必須有足夠的磁盤空間來存儲轉儲文件。
- 必須有足夠的內存來容納專用的crash內核。
- CPU必須支持物理地址擴展(PAE)或64位尋址模式。
-
內核配置:您的Linux內核必須正確配置以啟用kdump功能。通常,許多發行版都已經為您設置了合適的內核配置。
-
專用的crash內核:為了執行轉儲過程,kdump需要一個獨立的crash內核。這個crash內核是一個精簡的內核,只包含用于內存轉儲和調試的必要組件。
-
存儲位置:您需要選擇一個足夠大且可靠的存儲位置來保存轉儲文件。這可能是本地磁盤、NFS共享目錄或iSCSI設備等。
-
網絡配置(可選):如果您選擇將轉儲文件發送到遠程服務器進行分析,則需要配置網絡連接和遠程服務器的接收端。
kdump配置方法
以EulerOS以及CentOS 7/8系列Linux產品為例:
-
查看是否已安裝kexec-tools。
# rpm -qa | grep kexec-tools如果沒有安裝,執行下面命令安裝kexec-tools。
# yum install -y kexec-tools -
設置kdump開機啟動。
# systemctl enable kdump -
設置crashkernel參數,設置這個參數的目的是預留內存給捕獲內核(capture kernel)。
首先查看該參數是否已經設置。
# grep crashkernel /proc/cmdline如果有顯示,則表示已經設置,如果沒有顯示,則需要重新設置。
編輯/etc/default/grub文件,此文件通常包含如下內容:
GRUB_TIMEOUT=5 GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel00/root rd.lvm.lv=rhel00/swap rhgb quiet" GRUB_DISABLE_RECOVERY="true"在GRUB_CMDLINE_LINUX一行添加crashkernel=auto。
-
更新grub,執行更新grub命令,使配置生效。命令如下。
# grub2-mkconfig -o /boot/grub2/grub.cfg -
打開/etc/kdump.conf文件中找到“path”參數,添加以下內容。
path /var/crash默認是保存在/var/crash目錄下,如果要保存到其他目錄,則改成對應的目錄,例如保存在/home/kdump下,則改成:
path /home/kdump ## 請確保指定的路徑有足夠的空間保存vmcore,建議剩余空間不小于物理內存(RAM)的大小,也可以保存在SAN,NFS等共享設備上。 -
設置轉存vmcore級別,查看/etc/kdump.conf文件,是否存在以下設置,如果存在則無需添加。
core_collector makedumpfile -d 31 -c-c:表示壓縮vmcore文件,
-d:表示過濾掉部分無效的內存數據,可以根據需要調整,一般31即可,31是由如下的值與計算而成。
zero pages= 1
cache pages = 2
cache private = 4
user pages= 8
free pages= 16
-
設置內核參數(可選)。
為了控制在哪些場景下觸發kdump,內核提供了一些參數,建議設置以下參數:
kernel.hardlockup_panic=1
kernel.panic=5
kernel.panic_on_oops=1
kernel.softlockup_panic=1
kernel.unknown_nmi_panic=1
kernel.nmi_watchdog=1
將以上配置參數寫入/etc/sysctl.conf文件并保存。另外,可以選擇添加如下幾個參數到/etc/sysctl.conf文件中。
kernel.panic_on_io_nmi=1
kernel.panic_on_warn=1 -
進入天翼云控制臺-云主機詳情頁,對當前云主機進行重啟,使以上配置生效。
Kdump配置生效驗證
-
執行以下命令,確認回顯信息中crashkernel=auto。
# cat /proc/cmdline |grep crashkernel -
執行以下命令,并確認回顯信息中的配置信息正確。
# grep core_collector /etc/kdump.conf |grep -v ^"#" core_collector makedumpfile -l --message-level 1 -d 31 -
執行以下命令,并確認回顯信息中的配置信息正確。
# grep path /etc/kdump.conf |grep -v ^"#" path /var/crash -
執行以下命令,并確認回顯信息中的Active的狀態為active (exited)。
# systemctl status kdump -
執行測試命令。
# echo c > /proc/sysrq-trigger這會觸發kdump,重新啟動,并將生成的vmcore文件保存的path參數指定的位置。
-
檢查vmcore是否生成。
到所在環境path參數所指定的路徑查看是否有vmcore文件生成,例如/var/crash/目錄。
# ll /var/crash/可以看到生成了一個文件夾,里面有vmcore文件。