华为云服务器怎样配置Linux分析工具:atop和kdump_云淘科技

操作场景

本节操作介绍atop和kdump的配置方法。

不同的Linux版本使用的atop工具版本不同,因此配置方法稍微有所不同。

配置atop:

atop简介
CentOS 8、RedHat8系列操作系统配置atop
CentOS 7、RedHat7、EulerOS系列操作系统配置atop
SUSE 15、SUSE 12系列操作系统配置atop
使用源码方式安装(适用于SUSE、Fedora、Debian、Ubuntu等系列操作系统)

配置kdump:

配置kdump使用须知
kdump简介
配置kdump操作步骤
检查kdump配置是否生效

atop简介

atop是一款用于监控Linux系统资源与进程的工具,它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况,并能以日志文件的方式保存在磁盘中,服务器出现问题后,可获取相应的atop日志文件进行分析。

CentOS 8、RedHat8系列操作系统配置atop

下载atop安装包。

# wget https://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

编辑配置文件,修改采样周期。

# vi /etc/default/atop

修改如下配置参数,修改后保存并退出。

LOGINTERVAL默认是600,可以修改成15,单位秒。
默认atop日志保存周期为28天,可以根据实际修改LOGGENERATIONS的值为3,单位为天。

LOGINTERVAL=15
LOGGENERATIONS=3 

重启atop服务。

# systemctl restart atop

检查是否启动成功,active(running) 表示运行正常。

# systemctl status atop

atop.service - Atop advanced performance monitor
Loaded: loaded (/usr/lib/systemd/system/atop.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2021-06-19 14:46:10 CST; 8s ago
Docs: man:atop(1)
Process: 6391 ExecStartPost=/usr/bin/find ${LOGPATH} -name atop_* -mtime +${LOGGENERATIONS} -exec rm -v {} ; (code=exited, status=0/SUCCESS)
Process: 6388 ExecStartPre=/bin/sh -c test -n "$LOGGENERATIONS" -a "$LOGGENERATIONS" -eq "$LOGGENERATIONS" (code=exited, status=0/SUCCESS)
Process: 6387 ExecStartPre=/bin/sh -c test -n "$LOGINTERVAL" -a "$LOGINTERVAL" -eq "$LOGINTERVAL" (code=exited, status=0/SUCCESS)
Main PID: 6390 (atop)
Tasks: 1 (limit: 23716)
Memory: 4.1M
CGroup: /system.slice/atop.service
         └─6390 /usr/bin/atop -w /var/log/atop/atop_20210619 15
 
Jun 19 14:46:10 ecs-centos8 systemd[1]: atop.service: Succeeded.
Jun 19 14:46:10 ecs-centos8 systemd[1]: Stopped Atop advanced performance monitor.
Jun 19 14:46:10 ecs-centos8 systemd[1]: Starting Atop advanced performance monitor...
Jun 19 14:46:10 ecs-centos8 systemd[1]: Started Atop advanced performance monitor.

CentOS 7、RedHat7、EulerOS系列操作系统配置atop

下载atop安装包。

# wget https://www.atoptool.nl/download/atop-2.6.0-1.el7.x86_64.rpm

将atop-2.6.0-1.el7.x86_64.rpm上传到目标主机。

安装atop。

# rpm -ivh atop-2.6.0-1.el7.x86_64.rpm –nodeps

编辑配置文件,修改采样周期。

# vi /etc/default/atop

修改如下配置参数,修改后保存并退出。

LOGINTERVAL默认是600,可以修改成15,单位秒。
默认atop日志保存周期为28天,可以根据实际修改LOGGENERATIONS的值为3,单位为天。

LOGINTERVAL=15
LOGGENERATIONS=3 

启动atop服务。

# systemctl start atop

检查是否启动成功,active(running) 表示运行正常。

# systemctl status atop

atop会根据所设定的周期去采样一次系统数据,并保存在/var/log/atop/目录

atop.service - Atop advanced performance monitor
Loaded: loaded (/usr/lib/systemd/system/atop.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2021-06-19 11:49:47 CST; 2h 27min ago
Docs: man:atop(1)
Process: 8231 ExecStartPost=/usr/bin/find ${LOGPATH} -name atop_* -mtime +${LOGGENERATIONS} -exec rm -v {} ; (code=exited, status=0/SUCCESS)
Process: 8225 ExecStartPre=/bin/sh -c test -n "$LOGGENERATIONS" -a "$LOGGENERATIONS" -eq "$LOGGENERATIONS" (code=exited, status=0/SUCCESS)
Process: 8223 ExecStartPre=/bin/sh -c test -n "$LOGINTERVAL" -a "$LOGINTERVAL" -eq "$LOGINTERVAL" (code=exited, status=0/SUCCESS)
Main PID: 8229 (atop)
CGroup: /system.slice/atop.service
         └─8229 /usr/bin/atop -w /var/log/atop/atop_20210619 15
 
Jun 19 11:49:47 ecs-centos7 systemd[1]: Stopped Atop advanced performance monitor.
Jun 19 11:49:47 ecs-centos7 systemd[1]: Starting Atop advanced performance monitor...
Jun 19 11:49:47 ecs-centos7 systemd[1]: Started Atop advanced performance monitor.

SUSE 15、SUSE 12系列操作系统配置atop

下载atop源码安装包。

# wget https://www.atoptool.nl/download/atop-2.6.0-1.src.rpm

执行以下命令安装源码atop。

# rpm -ivh atop-2.6.0-1.src.rpm

安装编译atop依赖软件包

# zypper -n install rpm-build ncurses-devel zlib-devel

执行以下命令编译atop

# cd /usr/src/packages/SPECS

# rpmbuild -bb atop-2.6.0.spec

执行以下命令安装atop

# cd /usr/src/packages/RPMS/x86_64

# rpm -ivh atop-2.6.0-1.x86_64.rpm

编辑配置文件,修改采样周期。

# vi /etc/default/atop

修改如下配置参数,修改后保存并退出。

LOGINTERVAL默认是600,可以修改成15,单位秒。
默认atop日志保存周期为28天,可以根据实际修改LOGGENERATIONS的值为3,单位为天。

LOGINTERVAL=15
LOGGENERATIONS=3 

重启atop服务。

# systemctl restart atop

检查是否启动成功,active(running) 表示运行正常。

# systemctl status atop

atop.service - Atop advanced performance monitor
Loaded: loaded (/usr/lib/systemd/system/atop.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2021-06-19 16:50:01 CST; 6s ago
Docs: man:atop(1)
Process: 2242 ExecStartPost=/usr/bin/find ${LOGPATH} -name atop_* -mtime +${LOGGENERATIONS} -exec rm -v {} ; (code=exited, status=0/SUCCESS)
Process: 2240 ExecStartPre=/bin/sh -c test -n "$LOGGENERATIONS" -a "$LOGGENERATIONS" -eq "$LOGGENERATIONS" (code=exited, status=0/SUCCESS)
Process: 2239 ExecStartPre=/bin/sh -c test -n "$LOGINTERVAL" -a "$LOGINTERVAL" -eq "$LOGINTERVAL" (code=exited, status=0/SUCCESS)
Main PID: 2241 (atop)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/atop.service
         └─2241 /usr/bin/atop -w /var/log/atop/atop_20210619 15
 
Jun 19 16:50:01 ecs-suse15 systemd[1]: Starting Atop advanced performance monitor...
Jun 19 16:50:01 ecs-suse15 systemd[1]: Started Atop advanced performance monitor. 

使用源码方式安装(适用于SUSE、Fedora、Debian、Ubuntu等系列操作系统)

下载atop源码。

# wget https://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参数

                then   /bin/systemctl disable  atop     2> /dev/null; \
                        /bin/systemctl disable  atopacct 2> /dev/null; \
                        /bin/systemctl daemon-reload;                   \
                        /bin/systemctl enable   atopacct;          \
                        /bin/systemctl enable   atop;              \
                        /bin/systemctl enable   atop-rotate.timer; \

安装编译atop依赖软件包。

SUSE12、SUSE15系列操作系统执行以下命令安装:

# zypper -n install make gcc zlib-devel ncurses-devel

Fedora系列操作系统执行以下命令安装:

# yum install make gcc zlib-devel ncurses-devel -y

Debian9、Debian10、Ubuntu系列操作系统执行以下命令安装:

# apt install make gcc zlib1g-dev libncurses5-dev libncursesw5-dev -y

执行以下命令编译并安装atop。

# cd atop-2.6.0

# make systemdinstall

编辑配置文件,修改采样周期。

# vi /etc/default/atop

添加如下配置参数,修改后保存并退出。

LOGINTERVAL默认是600,可以修改成15,单位秒。
默认atop日志保存周期为28天,可以根据实际修改LOGGENERATIONS的值为3,单位为天。

LOGOPTS=""
LOGINTERVAL=15
LOGGENERATIONS=3
LOGPATH=/var/log/atop 

重启atop服务。

# systemctl restart atop

检查是否启动成功,active(running) 表示运行正常。

# systemctl status atop

atop.service - Atop advanced performance monitor
   Loaded: loaded (/lib/systemd/system/atop.service; enabled)
   Active: active (running) since Sun 2021-07-25 19:29:40 CST; 4s ago
     Docs: man:atop(1)
  Process: 5192 ExecStartPost=/usr/bin/find ${LOGPATH} -name atop_* -mtime +${LOGGENERATIONS} -exec rm -v {} ; (code=exited, status=0/SUCCESS)
  Process: 5189 ExecStartPre=/bin/sh -c test -n "$LOGGENERATIONS" -a "$LOGGENERATIONS" -eq "$LOGGENERATIONS" (code=exited, status=0/SUCCESS)
  Process: 5188 ExecStartPre=/bin/sh -c test -n "$LOGINTERVAL" -a "$LOGINTERVAL" -eq "$LOGINTERVAL" (code=exited, status=0/SUCCESS)
 Main PID: 5191 (atop)
   CGroup: /system.slice/atop.service
           └─5191 /usr/bin/atop -w /var/log/atop/atop_20210725 15
 
Jul 25 19:29:40 atop systemd[1]: Starting Atop advanced performance monitor...
Jul 25 19:29:40 atop systemd[1]: Started Atop advanced performance monitor.

配置kdump使用须知

配置kdump的操作适用于EulerOS以及CentOS 7系列Linux产品, 且云服务器的虚拟化类型为KVM。了解更多

kdump简介

kdump是系统崩溃的时候,用来转储运行内存的一个工具。系统一旦崩溃,内核就无法正常工作了,这个时候将由kdump提供一个用于捕获当前运行信息的内核,该内核会将此时内存中的所有运行状态和数据信息收集到一个dump core文件中以便之后分析崩溃原因。

配置kdump操作步骤

查看是否已经安装kexec-tools。

# rpm -q kexec-tools

如果没有安装,则执行下面命令安装。

# yum install -y kexec-tools

开启kdump默认启动。

# systemctl enable kdump

设置craskkernel参数,设置这个参数的目的是预留内存给capture kernel。

首先查看参数是否已经设置。

# grep crashkernel /proc/cmdline

如果有显示,则表示已经设置,如果没有显示,则需要重新设置。

设置crashkernel,编辑/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命令,使以上配置生效。

# 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

执行如下命令重启系统,使以上配置生效。

# reboot

检查kdump配置是否生效

执行以下命令,确认回显信息中crashkernel=auto

# cat /proc/cmdline |grep crashkernel

BOOT_IMAGE=/boot/vmlinuz-3.10.0-514.44.5.10.h142.x86_64 root=UUID=6407d6ac-c761-43cc-a9dd-1383de3fc995 ro crash_kexec_post_notifiers softlockup_panic=1 panic=3 reserve_kbox_mem=16M nmi_watchdog=1 rd.shell=0 fsck.mode=auto fsck.repair=yes net.ifnames=0 spectre_v2=off nopti noibrs noibpb crashkernel=auto LANG=en_US.UTF-8

执行以下命令,并确认回显信息中的配置信息正确。

# 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

● kdump.service - Crash recovery kernel arming
Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
Active: active (exited) since Tue 2019-04-09 19:30:24 CST; 8min ago
Process: 495 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS)
Main PID: 495 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/system-hostos.slice/kdump.service

执行测试命令。

# echo c > /proc/sysrq-trigger

这会触发kdump,重新启动,并将生成的vmcore文件保存的path参数指定的位置。

检查vmcore是否生成。

到所在环境path参数所指定的路径查看是否有vmcore文件生成,例如/var/crash/目录。

# ll /var/crash/

可以看到生成了一个文件夹,里面有vmcore文件。

父主题: 操作系统类(Linux)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家