[步骤] Linux 提高触发 Kdump 的几率

注意:

在提高触发 Kdump 的几率之前要先开启 Kdump:

正文:

步骤一:配置提高触发 Kdump 几率的参数

1.1 配置提高触发 Kdump 几率的参数

# vim /etc/sysctl.conf

添加以下内容:

......
kernel.softlockup_panic = 1

1.2 让刚刚配置的参数生效

# sysctl -p

(注意:此时每有一次软锁都会触发 Kdump)

步骤二:当 Kdmup 触发后分析奔溃的信息

步骤三;删除提高触发 Kdump 几率的参数 (重要)

3.1 删除提高触发 Kdump 几率的参数 (重要)

# vim /etc/sysctl.conf

删除以下内容:

......
kernel.softlockup_panic = 1

3.2 让刚刚删除参数的配置生效 (重要)

# sysctl -p

(注意:此时每有一次软锁都会触发 Kdump)

参考文献:

https://www.suse.com/support/kb/doc/?id=000019217

[工具] Shell 监控普通登录记录 (排除 SFTP 登录记录只监控普通登录记录)

注意:

在排除 SFTP 登录记录只监控普通登录记录前要先开启 SFTP 日志:

正文:

介绍

基本信息

作者:朱明宇
名称:监控普通登录记录 (排除 SFTP 登录记录只监控普通登录记录)
作用:监控普通登录记录 (排除 SFTP 登录记录只监控普通登录记录)

使用方法

1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本
4. 普通登录记录会同时记录在系统日志和 $logfile 里

脚本分割线里的变量

1. logfile=logfile.txt #用户保存记录的文件
2. prompt=”and no sftp info” #记录里普通登录记录的文件

脚本

#!/bin/bash

####################### Separator ########################

logfile=logfile.txt
prompt="and no sftp info"

####################### Separator ########################

checktime=`date +%Y-%m-%dT%H -d "-1 day"`

for i in `cat -n /var/log/messages | grep $check_time | grep 'Started Session' | grep -v 'root' | awk '{print $1}'`

do
   line=`sed -n $[i]p /var/log/messages`
   time=`echo $line | awk '{print $1}'`
   session=`echo $line | awk '{print $6}'`
   user=`echo $line | awk '{print $9}'`
   user=${user%.}

   message="ACCESS CHECK LOG: Time:$time Session:$session $user has accessed `hostname`, $prompt"

   let sftpline=i+3

   sed -n $[sftpline]p /var/log/messages | grep sftp-server &> /dev/null
   if [ $? -ne 0 ];then
           echo $message
           echo $message >> $logfile.txt
           logger $message
   fi
   echo
done

[命令] Linux 命令 logger (手动向系统日志写入信息)

内容一:手动向系统日志写入信息

# logger [This is test message]

(补充:这里以往系统日志里写入一条包含 This is test message 内容的信息为例)

内容二:显示手动向系统日志写入信息

# grep "This is test message" /var/log/messages

(补充:这里在系统里查找一条包含 This is test message 内容的信息为例)

[步骤] Linux Kdump 内核奔溃信息的分析 (Rocky Linux & RHEL 版)

步骤一:开启 Kdump

1.1 确保 crash 和 kernel-debuginfo 两个软件包已安装

# rpm -qa | grep crash || dnf install crash ; rpm -qa | grep kernel-debug || dnf install kernel-debug

1.2 给 Kdump 分配保留内存

1.2.1 通过在 /etc/default/grub 配置文件里修改 crashkernel 参数
# vim /etc/default/grub

在这一行里:

GRUB_CMDLINE_LINUX_DEFAULT="......"

添加:

GRUB_CMDLINE_LINUX_DEFAULT="...... crashkernel=auto"


补充:这里的 auto 代表系统会根据内存大小自动设置一个值,也可以指定一个值,例如:crashkernel=128M,high、crashkernel=256M,high 等等。如果设置成一个固定值,建议
1) 1 GB 到 4 GB 内存设置成 160 M
2) 4 GB 到 64 GB 内存设置成 192 M
3) 64 GB 到 1 TB 内存设置成 256 M
4) 大于 1 TB 内存设置成 512 M

1.2.2 让刚刚修改的内核参数生效
# grub2-mkconfig -o /boot/grub2/grub.cfg;reboot
1.2.3 显示给 Kdump 预留内存的大小
# makedumpfile --mem-usage /proc/kcore

步骤二:触发 Kdump 内核奔溃

# echo 1 > /proc/sys/kernel/sysrq
# echo c > /proc/sysrq-trigger

步骤三:分析 KDUMP 生成的内核奔溃信息

3.1 进入存放 KDUMP 内核奔溃信息的目录

# cd /var/crash/<date>/

3.2 解析 KDUMP 生成内核崩溃信息

# crash vmlinux-2.6.32.12-0.7-default vmcore

(补充:这里以使用 2.6.32.12-0.7-default 版本的 kernel-debuginfo 解析为例)

3.3 确认生成了 vmlinux-2.6.32.12-0.7-default.gz 压缩包

# ls vmlinux-2.6.32.12-0.7-default.gz

(注意:如果这里生成了 vmlinux-2.6.32.12-0.7-default.gz 压缩包的话,这里会有 vmlinux-2.6.32.12-0.7-default.gz 信息的显示)

(补充:这里以确认 2.6.32.12-0.7-default 版本的 kernel-debuginfo 生成的压缩包为例)

3.4 解压 vmlinux-2.6.32.12-0.7-default.gz 压缩包

# gzip -d vmlinux-2.6.32.12-0.7-default.gz

(补充:这里以解压 2.6.32.12-0.7-default 版本的 kernel-debuginfo 生成的压缩包为例)

3.5 分析 KDUMP 生成的内核奔溃信息

(步骤略)

参考文献:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_monitoring_and_updating_the_kernel/analyzing-a-core-dump_managing-monitoring-and-updating-the-kernel