[内容] Linux console 口显示日志的设置

正文:

内容一:日志消息的优先级

级别关键字描述 内容
0 EMERG 致命级 (KERN_EMESG) 紧急,系统本身已经无法再运行必须马上拯救
1 ALERT 警戒级 (KERN_ALERT) 警报,系统出现了重大错误必须马上处理的情况
2 CRIT 临界级 (KERN_CRIT) 严重,系统出现了严重的情况
3ERR 错误级 (KERN_ERR) 错误,系统出现了错误的情况
4 WARNING告警级 (KERN_WARN) 警告,系统出现了需要警告的情况
5 NOTICE 注意级 (KERN_NOTICE) 注意,系统出现了需要注意的情况
6 INFO 通知级 (KERN_INFO) 信息,系统出现了一些情况
7 DEBUG 调试级 (KERN_DEGUG) 调试,系统出现了程序或服务调试的情况

内容二:查看 console 口显示日志的设置

# cat /proc/sys/kernel/printk
4       4       1       7


补充:
1) 第 1 个 4 代表只有比等级为 4 的日志更紧急的日志会显示在 console 口
2) 第 2 个 4 代表当某条日志没有等级时默认会将其日志等级设置为 4
3) 第 3 个 1 代表会显示在 console 口上的日志的最高紧急度 (在这个文件中 1 已经是所有等级中紧急度最高的等级了)
4) 第 4 个 7 代表当系统启动时,启动时所产生的日志默认的紧急等级

内容三:修改 console 口显示日志的等级

3.1 修改 console 口显示日志的等级

# sysctl -w kernel.printk=3

或者:

# echo "3" > /proc/sys/kernel/printk

(补充:这里以设置把等级为 3 或者更紧急的日志显示在 console 口为例)

3.2 查看修改 console 口显示日志的等级

# cat /proc/sys/kernel/printk
3       4       1       7


补充:
1) 第 1 个 3 代表只有比等级为 4 的日志更紧急的日志会显示在 console 口
2) 第 2 个 4 代表当某条日志没有等级时默认会将其日志等级设置为 4
3) 第 3 个 1 代表会显示在 console 口上的日志的最高紧急度 (在这个文件中 1 已经是所有等级中紧急度最高的等级了)
4) 第 4 个 7 代表当系统启动时,启动时所产生的日志默认的紧急等级

参考文献:

https://linuxconfig.org/introduction-to-the-linux-kernel-log-levels

[步骤] Linux 排错报告的生成

步骤一:新开 1 个端口开启 tcpdump 命令生成 TCP 报告

# tcpdump -s 0 -i INTERFACE -w /tmp/tcpdump.pcap

(补充:这里以生成名为 /tmp/tcpdump.pcap 的 TCP 报告为例)

步骤二:新开 1 个端口使用 strace 命令生成追踪报告

# strace -fvttTyy -s 4096 -o /tmp/strace.log

(补充:这里以生成名为 /tmp/strace.log 的追踪报告为例)

步骤三:执行会报错的步骤

# mount -vvv -t cifs -o username=<share user>,password=<share password>,domain=<share domain> //<share folder> /mnt

(补充:这里以挂载 Samba 目录为例)

步骤四:分析刚刚生成的 TCP 报告和追踪报告

(注意:在本文章中,在前面生成的 TCP 报告是 /tmp/tcpdump.pcap 追踪报告是 /tmp/strace.log)

[STEP] Linux Audit Log join /var/log/message

Main Content:

Step One: Modify /audit/plugins.d/syslog.conf file

# vim /audit/plugins.d/syslog.conf

Modify part content as follow:

Modify part content as follow:
......
active = no
......

Step Two: Restart auditd Service

# service auditd restart

Reference:

https://access.redhat.com/solutions/637863

[步骤] Linux Kdump 的开启 (用于收集内核崩溃时的信息) (CentOS 7 & Rocky Linux 8 & RHEL 7 & RHEL 8 版)

步骤一:开启 Kdump

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

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

1.2 设置内核崩溃信息的存放位置

# vim /etc/kdump.conf

修改以下内容:

......
path /var/crash
......


补充:
1) 默认的存放位置是 /var/crash
2) 把这里修改成想要存放内核崩溃信息的目录
3) 为了保险起见存放内核崩溃信息的位置最好有大于内存大小的剩余空间

1.3 重新启动 kdump 服务并设置为开机自启

# systemctl restart kdump ; systemctl enable kdump

1.4 确保 kdump 服务已经开启

# systemctl status kdump

(补充:当显示输出结果里包含 operational 或者 Active: active (exited) 时,则说明 Kdump 已经启用)

步骤二:设置收集内核崩溃信息的触发条件

2.1 当内核崩溃时自动收集内核崩溃信息

2.1.1 修改 /etc/sysctl.conf 文件
# vim /etc/sysctl.conf

添加以下内容:

......
kernel.hung_task_panic=1
2.1.2 让修改的 /etc/sysctl.conf 文件生效
# sysctl -p /etc/sysctl.conf
2.1.3 当内核崩溃时,系统会自动收集内核崩溃信息并重启

(步骤略)


注意:
1) 只有 task hang 住,或者处理器线程 soft lock 时才会自动产生 dump
2) 此过程系统会自动重启

2.2 当内核崩溃时使用魔术键收集内核崩溃信息

2.2.1 修改 /etc/sysctl.conf 文件
# vim /etc/sysctl.conf

添加以下内容:

......
kernel.sysrq = 1
2.2.2 让修改的 /etc/sysctl.conf 文件生效
# sysctl -p /etc/sysctl.conf
2.2.3 当内核崩溃时,使用魔术键收集内核崩溃信息并让系统自动重启

同时先后按下以下三个按键:

ALT + PRINTSCREEN + C


注意:
1) 此过程会让系统自动重启
2) 只是系统死机并不代表有 kernel panic

2.3 当内核崩溃时使用硬件发送 NMI 收集内核崩溃信息

2.3.1 修改 /etc/sysctl.conf 文件
# vim /etc/sysctl.conf

添加以下内容:

......
kernel.unknown_nmi_panic = 1
kernel.panic_on_unrecovered_nmi = 1
kernel.panic_on_io_nmi = 1
2.3.2 让修改的 /etc/sysctl.conf 文件生效
# sysctl -p /etc/sysctl.conf
2.3.3 当内核崩溃时,联系硬件技术支持使用硬件发送 NMI 收集内核崩溃信息

(步骤略)

步骤三:手动触发内核崩溃测试 Kdmup

# echo c > /proc/sysrq-trigger

(注意:此操作会造成系统重启)

参考文献:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/system_design_guide/installing-and-configuring-kdump_system-design-guide
https://access.redhat.com/solutions/916043
https://access.redhat.com/solutions/3698411
https://access.redhat.com/solutions/6038
https://access.redhat.com/solutions/23069