文档首页> 弹性云服务器 ECS> 故障排除> 操作系统类(Linux)> 怎样配置Linux分析工具:atop和kdump
更新时间:2023-03-31 GMT+08:00
分享

怎样配置Linux分析工具:atop和kdump

atop简介

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

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

  1. 下载atop安装包。

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

  2. 执行以下命令安装atop。

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

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

    # vi /etc/default/atop

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

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

    # systemctl restart atop

  2. 检查是否启动成功,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

  1. 下载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上传到目标主机。

  2. 安装atop。

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

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

    # vi /etc/default/atop

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

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

    # systemctl start atop

  5. 检查是否启动成功,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

  1. 下载atop源码安装包。

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

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

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

  3. 安装编译atop依赖软件包

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

  4. 执行以下命令编译atop

    # cd /usr/src/packages/SPECS

    # rpmbuild -bb atop-2.6.0.spec

  5. 执行以下命令安装atop

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

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

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

    # vi /etc/default/atop

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

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

    # systemctl restart atop

  2. 检查是否启动成功,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等系列操作系统)

  1. 下载atop源码。

    # wget https://www.atoptool.nl/download/atop-2.6.0.tar.gz

  1. 执行以下命令解压源码atop。

    # tar -zxvf atop-2.6.0.tar.gz

  2. 执行以下命令查看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; \
  3. 安装编译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

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

    # cd atop-2.6.0

    # make systemdinstall

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

    # vi /etc/default/atop

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

    • LOGINTERVAL默认是600,可以修改成15,单位秒。
    • 默认atop日志保存周期为28天,可以根据实际修改LOGGENERATIONS的值为3,单位为天。
      LOGOPTS=""
      LOGINTERVAL=15
      LOGGENERATIONS=3
      LOGPATH=/var/log/atop 
  1. 重启atop服务。

    # systemctl restart atop

  2. 检查是否启动成功,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操作步骤

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

    # rpm -q kexec-tools

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

    # yum install -y kexec-tools

  2. 开启kdump默认启动。

    # systemctl enable kdump

  3. 设置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,其他内容不变。

  4. 执行grub命令,使以上配置生效。

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

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

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

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

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

  6. 设置转存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
  7. 执行如下命令重启系统,使以上配置生效。

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

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

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

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

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

    # echo c > /proc/sysrq-trigger

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

  6. 检查vmcore是否生成。

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

    # ll /var/crash/

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

分享:

    相关文档

    相关产品