文档首页 > > 故障排除> Linux操作系统> (待更新)怎样配置Linux分析工具:atop和kdump

(待更新)怎样配置Linux分析工具:atop和kdump

分享
更新时间: 2019/11/06 GMT+08:00

操作场景

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

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

配置atop:

配置kdump:

  1. 配置kdump使用须知
  2. kdump原理介绍
  3. 配置kdump操作步骤
  4. 检查kdump配置是否生效

Centos 6、RHEL6系列操作系统配置atop

  1. 下载atop包。

    # wget https://www.atoptool.nl/download/atop-2.3.0-1.el6.x86_64.rpm

  2. 安装atop。

    # rpm –ivh atop-2.3.0-1.el6.x86_64.rpm

  3. 修改配置文件。

    # vi /usr/share/atop/atop.daily

    修改配置参数INTERVAL=600。
    INTERVAL=600                    //   默认是600,改成10或者15,单位秒

    保存修改后退出编辑模式。

  4. 启动atop服务。

    # service atop restart

  5. 检查是否启动成功。

    # service atop status

    这样atop会每隔10s钟采样一次系统数据,并保存在/var/log/atop/目录

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

  1. 下载atop包。

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

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

  2. 安装atop。

    # rpm -ivh atop-2.3.0-1.el7.x86_64.rpm

  3. 修改配置文件。

    # vi /usr/share/atop/atop.daily

    将如下配置参数。

    INTERVAL=600                    //   默认是600,改成10或者15,单位秒
    ( (sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \;)& )    //  默认atop日志保存周期为28天,可以根据实际修改-mtime后的值 ,单位为天

    修改后保存并退出。

  4. 启动atop服务。

    # systemctl start atop

  5. 检查是否启动成功,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 2019-04-02 11:12:30 CST; 10s ago
    Docs: man:atop(1)
    Main PID: 6251 (atop)
    CGroup: /system.slice/atop.service
    └─6251 /usr/bin/atop -R -w /var/log/atop/atop_20190402 600
    
    4月 02 11:12:30 ecs-242c-test-lxy2 systemd[1]: Started Atop advanced performance monitor.
    4月 02 11:12:30 ecs-242c-test-lxy2 systemd[1]: Starting Atop advanced performance monitor...

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

SLES10、SLES11系列操作系统配置atop

  1. 下载包。

    # wget https://www.atoptool.nl/download/atop-1.27-3.x86_64.rpm

  2. 执行以下命令安装。

    # rpm -ivh atop-1.27-3.x86_64.rpm

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

    # vi /etc/atop/atop.daily

    修改INTERVAL为15,表示没15秒采样一次系统数据。

    ( (sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \;)& )    //  默认atop日志保存周期为28天,可以根据实际修改-mtime后的值 ,单位为天
  4. 重启服务。

    # service atop restart

  5. 执行以下命令查看atop进程,验证配置成功。

    # ps -elf |grep atop

    15表示设置的15s生效,会在/var/log/atop/目录下生产atop日志。

SLES 12操作系统

  1. 下载安装包。

    # wget https://www.atoptool.nl/download/atop-2.2-3.systemd.x86_64.rpm

  2. 执行以下命令安装。

    # rpm -ivh atop-2.2-3.systemd.x86_64.rpm

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

    # vi /etc/atop/atop.daily

    ( (sleep 3; find $LOGPATH -name 'atop_*' -mtime +28 -exec rm {} \;)& )    //  默认atop日志保存周期为28天,可以根据实际修改-mtime后的值 ,单位为天。
  4. 保存文件,重启atop服务,并设置为开机自启。

    # systemctl start atop

    # systemctl enable atop

  5. 查看服务状态。

    # 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 Thu 2019-05-16 12:34:00 CST; 1s ago
    Docs: man:atop(1)
    Main PID: 3023 (atop)
    Tasks: 3 (limit: 512)
    CGroup: /system.slice/atop.service
    ├─3023 /usr/bin/atop -a -R -w /var/log/atop/atop_20190516 600
    ├─3037 /bin/bash /etc/atop/atop.daily
    └─3039 sleep 3
    May 16 12:34:00 ecs-6a85-sles12sp2-lxy systemd[1]: Stopped Atop advanced performance monitor.
    May 16 12:34:00 ecs-6a85-sles12sp2-lxy systemd[1]: Started Atop advanced performance monitor.
  6. 查看采样周期是否正常。

    # ps -elf |grep atop

    15秒表示设置成功,与预期一致。

配置kdump使用须知

配置kdump的操作适用于EulerOS 以及Centos7系列Linux产品, 对于云服务器,虚拟化类型要求是KVM,XEN虚拟化类型的云服务器暂不支持配置kdump。

https://www.kernel.org/doc/Documentation/kdump/kdump.txt

kdump原理介绍

kdump全名kernel dump,它是将系统的数据转存到一个地方,以便分析定位问题的一种机制。

如上图所示,物理内存RAM分为2部分,一部分用来运行正常的系统normal kernel,另一分部预留给capture kernel使用。当正常系统启动后,将使用kexec(包括用户态和内核态两部分),这个服务会加载capture kernel到预留的ram空间。

当系统出现异常时(如die、panic、oops、sysrq等),normal kernel会调用crash_kexec()函数,创建/proc/vmcore文件,并启动capture kernel, 接着capture kernel将normal kernel的/proc/vmcore数据拷贝到目标路径,并重启normal kernel。

配置kdump操作步骤

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

    # rpm –q kexec-tools

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

    # yum install –y kexec-tools

  3. 开启kdump默认启动。

    # systemctl enable kdump

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

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

    # grep crashkernel /proc/cmdline

  5. 如果有显示,则表示已经设置,如果没有显示,则需要重新设置。
    设置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"
  6. 找到GRUB_CMDLINE_LINUX参数,添加crashkernel=auto,其他内容不变。
  7. 执行grub命令,使以上配置生效。

    # grub2-mkconfig -o /boot/grub2/grub.cfg

  8. 打开/etc/kdump.conf文件中找到“path”参数,添加以下内容。
    path  /var/crash

    默认是保存在/var/crash目录下,如果要保存到其他目录,则改成对应的目录,

    例如保存在/home/kdump 下,则改成:
    path   /home/kdump

    要确保指定的路径有足够的空间保存vmcore,建议剩余空间不小于RAM 大小;也可以保存在SAN,nfs等共享设备上。

  9. 设置转存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
  10. 设置内核参数。

    为了控制在哪些场景下触发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
  11. 将以上配置参数写到/etc/sysctl.conf文件,并保存。此外,还可以选择性的添加如下几个参数到/etc/sysctl.conf文件中。
    kernel.panic_on_io_nmi=1
    kernel.panic_on_warn=1
  12. 执行如下命令重启系统,使以上配置生效,注意业务不要受影响。

    # reboot

检查kdump配置是否生效

  1. 执行以下命令,确认回显信息中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
  2. 执行以下命令,并确认回显信息中粗体的配置信息正确。

    # sysctl -a |grep panic

    kernel.hardlockup_panic = 1
    kernel.hung_task_panic = 0
    kernel.panic = 5
    kernel.panic_on_io_nmi = 0
    kernel.panic_on_oops = 1
    kernel.panic_on_stackoverflow = 0
    kernel.panic_on_unrecovered_nmi = 0
    kernel.panic_on_warn = 0
    kernel.softlockup_panic = 1
    kernel.unknown_nmi_panic = 1
    vm.panic_on_oom = 0
  3. 执行以下命令,并确认回显信息中的配置信息正确。

    # grep core_collector /etc/kdump.conf |grep -v ^"#"

    core_collector makedumpfile -l --message-level 1 -d 31
  4. 执行以下命令,并确认回显信息中的配置信息正确。

    # grep path /etc/kdump.conf |grep -v ^"#"

    path /var/crash
  5. 执行以下命令,并确认回显信息中的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
  6. 执行测试命令。

    # echo c > /proc/sysrq-trigger

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

  7. 检查vmcore是否生成。

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

    # ll /var/crash/

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

    如果需要分析,压缩127.0.0.1-2019.04.09-19:30:00文件夹,提供压缩包。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区