CHAPTER 2 CentOS的日志系统(日志工具)

news/2024/4/26 20:27:37/文章来源:https://blog.csdn.net/u010230019/article/details/129238339

日志工具

    • 2.1 rsyslogd(syslogd)
      • 2.1.1 介绍
      • 2.1.2 语法
      • 2.1.3 配置文件syslog.conf
      • 2.1.4 syslog.conf的配置规则
      • 2.1.5 示例
    • 2.2 logrotate
      • 2.2.1 介绍
      • 2.2.2 配置文件
      • 2.2.3 示例一
      • 2.2.4 示例二
    • 2.3 dmesg
      • 2.3.1 命令简介
      • 2.3.2 使用示例
    • 2.4 关于重启/死机的日志
      • 2.4.1 last
      • 2.4.2 日志查看

2.1 rsyslogd(syslogd)

官网 https://www.rsyslog.com/doc/master/

2.1.1 介绍

rsyslog是一个开源的软件程序,它负责写入日志。它记录绝大部分的日志记录,和系统有关的、安全、认证ssh和su、计划任务at和cron等日志。

rsyslogd是syslogd的升级版,其配置语法与syslogd的配置文件一致。ubuntu-gnome-16.04使用的是rsyslogd。

syslogd记录的日志一般在/var/log/下,当然也有存储在另外的服务器上的。因为syslogd记录的信息实在是太重要了,所以还要涉及日志安全的问题。

一般系统中日志信息:

/var/log/secure: 记录系统的安全信息,比如ssh、ftp、pop3等;
/var/log/wtmp: 记录谁曾经登陆过系统,由于本日志被编码过,所以只能用last命令查看;
/var/log/boot.log: 顾名思义,记录开启或者关闭系统及武夫的信息;
/var/log/message:系统发生的错误信息都会记录在这个日志中,比如iptables中您使用log功能的日志;
/var/log/mail: 邮件信息
/var/log/httpd/、/var/log/mysqld.d ,记录的就是这些服务的日志。

2.1.2 语法

RSYSLOGD(8)                                           Linux System Administration                                          NAMErsyslogd - reliable and extended syslogdSYNOPSISrsyslogd [ -d ] [ -D ] [ -f config file ] [ -i pid file ] [ -n ] [ -N level ] [ -C ] [ -v ]DESCRIPTIONRsyslogd  is  a system utility providing support for message logging.  Support of both internet and unix domain sockets enablesthis utility to support both local and remote logging.
[root@dbc-server-554 log]# systemctl status rsyslog.service
● rsyslog.service - System Logging ServiceLoaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)Active: active (running) since Thu 2023-02-23 17:40:11 CST; 3 days ago
...
Hint: Some lines were ellipsized, use -l to show in full.

大多数情况下,我们不必使用参数启动,因为系统已经为我们启动好了。如果需要查阅参数,可以通过man rsyslog

2.1.3 配置文件syslog.conf

rsyslogd的配置文件一般在/etc/rsyslog.conf中。这个文件依然遵循你所见过的其它配置文件的规则,比如 # 是注释。您可以看看您的syslogd都在帮助您记录着什么。这是我的rsyslog.conf中的一部分

[root@zabbix-svr-2 ~]# cat /etc/rsyslog.conf
# rsyslog configuration file# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html#### MODULES ##### The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
#$ModLoad imklog # reads kernel messages (the same are read from journald)
#$ModLoad immark  # provides --MARK-- message capability# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514#### GLOBAL DIRECTIVES ##### Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat# File syncing capability is disabled by default. This feature is usually not required,
# not useful and an extreme performance hit
#$ActionFileEnableSync on# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on# File to store the position in the journal
$IMJournalStateFile imjournal.state#### RULES ##### Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.*                                                 /dev/console# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages# The authpriv file has restricted access.
authpriv.*                                              /var/log/secure# Log all the mail messages in one place.
mail.*                                                  -/var/log/maillog# Log cron stuff
cron.*                                                  /var/log/cron# Everybody gets emergency messages
*.emerg                                                 :omusrmsg:*# Save news errors of level crit and higher in a special file.
uucp,news.crit                                          /var/log/spooler# Save boot messages also to boot.log
local7.*                                                /var/log/boot.log*.warning                                               /var/log/syslog
# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
...
# ### end of the forwarding rule ###

我们为了显示syslog内容,添加的*.warning /var/log/syslog

我的配置

[root@zabbix-svr-2 ~]# cat /etc/rsyslog.conf | grep -v ^# | grep -v ^$
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log
*.warning                                               /var/log/syslog

2.1.4 syslog.conf的配置规则

配置规则:服务名称.信息等级 存放或者显示地点

服务名称

mail http at cron kern 等等。

信息等级

  • info: 一些提示信息资料;
  • notice: 需要您注意的信息;
  • warn或者waring: 警告信息;

上面三个信息虽然是提醒您注意,但是却还没有到错误的情况。下面的信息就要注意了。

  • error或者err: 错误信息。您需要仔细检查发生错误的原因了;
  • crit: 很严重的错误,到达临界点了;
  • alert: 警告! 是否想起了“Red Alert”?不过,在这里这可是相当严重的错误啊;
  • emerg或者panic:系统混乱,重做吧;

特别的:

  • debug: 将显示很多信息;
  • none: 顾名思义,什么信息也不记录。

存放或者显示地点

日志的绝对路径: 比如/var/log;
您的一个用户 ;
网络上的主机: @log.company.com
打印机: /dev/lp0

2.1.5 示例

vi /etc/rsyslog.conf#在配置中加入
*.warning /var/log/syslog#重启syslog服务,使配置生效
service rsyslog restart 或者 /bin/systemctl restart rsyslog.service
当加入如下安全策略,/var/log/syslog 就会记录vi /etc/pam.d/system-auth#增加 认证失败策略
auth required pam_tally2.so deny=6 onerr=fail no_magic_root unlock_time=120

参数:

auth 要求并验证密码
required 必须success才能进行继续
pam_tally2.so 身份验证模块
deny=6 失败登录次数超过6次后拒绝访问
onerr=fail 表示连续失败
unlock_time=120 超出失败登录次数限制后,120秒后解锁
no_magic_root 用户例外root用户不在限制范围

当配置如上策略后,用户登录时 就会在 /var/log/secure 和/var/log/syslog 就会有如下记录

2.2 logrotate

日志管理工具(日志文件的轮转/切割)

2.2.1 介绍

默认情况下,文件的日志信息会通过logrotate日志管理工具定期清理。logrotate的配置文件是/etc/logrotate.conf,此处是logrotate的缺省设置,通常不需要对它进行修改。日志文件的轮循压缩等设置存放在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下,它会覆盖缺省设置。

通俗的讲:logrotate是对日志文件做轮换。就是把现在的log命名为log.1,然后继续写log。如果存在log.1就命名log.1为log.2然后命名log为log.1,依此类推,但并非没有尽头。这个尽头就是您在logrotate的配置文件中的定义,我的系统默认的是到4。那么对log.4做什么操作呢?删除。

如果不想记录相关信息,则可以直接将相关文件删除即可。如果系统不存在该文件,则需要在此路径touch一个文件就可以继续记录相关信息了。

logrotate日志轮转

① 如果没有日志轮转,日志文件会越来越大,最后导致日志打不开或者是打开时间过长
② 将丢弃系统中最旧的日志文件,以节省空间
③ logrotate本身不是系统进程,即日志的轮转不会自动执行,它是通过写到相应的配置文件中使用计划任务crond每天执行
④ 对日志的切割,你只需要给他定义一个规则

2.2.2 配置文件

[root@logrotate ~]# rpm -qa |grep logrotatelogrotate-3.7.8-16.el6.x86_64

logrotate是一个异类,安装即可用
系统默认都是安装好了的,没有安装就安装一下,并且这个程序安装后不用开启服务,修改后写到配置文件后会自动执行

logrotate 配置文件:
主配置文件决定全局日志轮转规则,子配置文件决定特定服务(rpm安装的程序)的日志轮转规则
服务日志的轮转规则文件是在安装rpm包时就自动提供的,无需人为手动编写,只有自己创建的日志文件才需要自己编写日志轮转规则文件

logrotate主配置文件

[root@zabbix-svr-2 ~]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly# keep 4 weeks worth of backlogs
rotate 4# create new (empty) log files after rotating old ones
create# use date as a suffix of the rotated file
dateext# uncomment this if you want your log files compressed
#compress# RPM packages drop log rotation information into this directory
include /etc/logrotate.d# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {monthlycreate 0664 root utmpminsize 1Mrotate 1
}/var/log/btmp {missingokmonthlycreate 0600 root utmprotate 1
}# system-specific logs may be also be configured here.

子配置文件

[root@zabbix-svr-2 ~]# ls /etc/logrotate.d/ -l
total 40
-rw-r--r--. 1 root root  91 Sep 30  2020 bootlog
-rw-r--r--. 1 root root 160 Sep 19  2018 chrony
-rw-r--r--. 1 root root  93 Sep 30  2020 firewalld
-rw-r--r--. 1 root root 810 Oct  1  2020 mariadb
-rw-r--r--. 1 root root 351 Oct 19 06:47 nginx
-rw-r--r--. 1 root root 224 Oct 13  2020 syslog
-rw-r--r--. 1 root root 100 Oct 30  2018 wpa_supplicant
-rw-r--r--. 1 root root 103 Oct  1  2020 yum
-rw-r--r--. 1 root root 132 Jan 30 03:05 zabbix-agent
-rw-r--r--. 1 root root 131 Jan 30 03:05 zabbix-proxy
[root@zabbix-svr-2 ~]# cat /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{missingoksharedscriptspostrotate/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || trueendscript
}
[root@zabbix-svr-2 ~]# cat /etc/logrotate.d/bootlog
/var/log/boot.log
{missingokdailycopytruncaterotate 7notifempty
}

主要参数

参数参数说明
daily日志的轮替周期是毎天
weekly日志的轮替周期是每周
monthly日志的轮控周期是每月
rotate n保留的日志文件的个数。0指没有备份
compress当进行日志轮替时,对旧的日志进行压缩
create mode owner group建立新日志,同时指定新日志的权限与所有者和所属组.如create 0600 root utmp
mail address当进行日志轮替时.输出内存通过邮件发送到指定的邮件地址
missingok如果日志不存在,则忽略该日志的警告信息
nolifempty如果日志为空文件,則不进行日志轮替
minsize 大小日志轮替的最小值。也就是日志一定要达到这个最小值才会进行轮持,否则就算时间达到也不进行轮替
size大小日志只有大于指定大小才进行日志轮替,而不是按照时间轮替,如size 100k
dateext使用日期作为日志轮替文件的后缀,如secure-20130605
sharedscripts在此关键宇之后的脚本只执行一次
prerotate/endscript在日志轮替之前执行脚本命令。endscript标识prerotate脚本结束
postrotate/endscripl在日志轮替之后执行脚本命令。endscripi标识postrotate脚本结束
  hourly、daily、weekly、monthly、yearly //轮转的周期rotate 4 //保留4份create //轮转后创建新文件 create mode owner group 创建新文件、权限、属主、属组dateext //使用日期作为后缀 compress //是否压缩minsize 1M //最小达到1M才轮转,即到了规定的时间未达到大小不会轮转maxsize 100M //最大达到100M才轮状missingok //丢失不提示notifempty //如果为空,不轮转

这些参数中较为难理解的应该是 prerotate/endscript 和 postrotate/endscript,我们利用man logrotate中的例子来解释一下这两个参数。例如:

"/var/log/httpd/access.log" /var/log/httpd/error.log {
#日志轮替的是/var/log/httpd/中RPM包默认安装的apache正确访问日志和错误日志rotate 5#轮替5次mail www@my.org#把信息发送到指定邮箱size 100k#日志大于100KB时才进行日志轮替,不再按照时间轮替sharedscripts#以下脚本只执行一次postrotate#在日志轮替结束之后,执行以下脚本/usr/bin/killall -HUP httpd#重启apache 服务endscript#脚本结束
}

prerotate 和 postrotate 主要用于在日志轮替的同时执行指定的脚本,一般用于日志轮替之后重启服务。这里强调一下,如果你的日志是写入 rsyslog 服务的配置文件的,那么把新日志加入 logrotate 后,一定要重启 rsyslog 服务,否则你会发现,虽然新日志建立了,但数据还是写入了旧的日志当中。那是因为虽然 logrotate 知道日志轮替了,但是 rsyslog 服务并不知道。

同理,如果采用源码包安装了 apache、Nginx 等服务,则需要重启 apache 或 Nginx 服务,同时还要重启 rsyslog 服务,否则日志也不能正常轮替。

不过,这里有一个典型应用就是给予特定的日志加入 chattr 的 a 属性。如果系统文件加入了 a 属性,那么这个文件就只能增加数据,而不能删除和修改已有的数据,root 用户也不例外。

因此,我们会给重要的日志文件加入 a 属性,这样就可以保护日志文件不被恶意修改。不过,一旦加入了 a 属性,那么在进行日志轮替时,这个日志文件是不能被改名的,当然也就不能进行日志轮替了。我们可以利用 prerotate 和 postrotate 参数来修改日志文件的 chattr 的 a 属性。

2.2.3 示例一

如果有些日志默认没有加入日志轮替(比如源码包安装的服务的日志,或者自己添加的日志),那么这些日志默认是不会进行日志轮替的,这样当然不符合我们对日志的管理要求。如果需要把这些日志也加入日志轮替,那该如何操作呢?

这里有两种方法:

第一种方法是直接在 /etc/logrotate.conf 配置文件中写入该日志的轮替策略,从而把日志加入轮替;
第二种方法是在 /etc/logrotate.d/ 目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被包含到主配置文件中,所以也可以把日志加入轮替。

我们推荐第二种方法,因为系统中需要轮替的日志非常多,如果全部直接写入 /etc/logrotate.conf 配置文件,那么这个文件的可管理性就会非常差,不利于此文件的维护。

/var/log/alert.log为例,具体步骤如下:

[root@localhost ~]# chattr +a /var/log/alert.log #先给日志文件赋予chattr的a属性,保证日志的安全
[root@localhost ~]# vi /etc/logrotate.d/alter
#创建alter轮替文件,把/var/log/alert.log加入轮替
/var/log/alert.log {weekly#每周轮替一次rotate 6#保留6个轮替曰志sharedscripts#以下命令只执行一次prerotate#在日志轮替之前执行/usr/bin/chattr -a /var/log/alert.log#在日志轮替之前取消a属性,以便让日志可以轮替endscript#脚本结朿sharedscriptspostrotate#在日志轮替之后执行/usr/bin/chattr +a /var/log/alert.log#在日志轮替之后,重新加入a属性endscriptsharedscriptspostrotate/bin/kill -HUP $(/bin/cat /var/run/syslogd.pid 2>/dev/null) fi>/dev/nullendscript#重启rsyslog服务,保证日志轮替正常进行
}

这样我们自己生成的日志 /var/log/alert.log 也就可以进行日志轮替了,当然这些配置信息也是可以直接写入 /etc/logrotate.conf 这个配置文件的。

2.2.4 示例二

可以模仿/etc/logrotate.d/目录下面已经存在的日志切割配置格式,进行配置自己的日志文件

[root@logrotate ~]# vim /etc/logrotate.d/ssh
/mnt/ssh.log {dateextrotate 4missingoknotifemptysize 30kyearlycreate 0600 root root
}
[root@logrotate ~]# logrotate -f /etc/logrotate.conf
[root@logrotate ~]# ls /mnt
ssh.log ssh.log-20201026

说明:
当切割之后创建新文件,新文件有新的inode number
如果希望进程如rsyslog、nginx把新的日志写入新日志文件中,应该在日志切割后,告诉一下rsyslog、nginx进程reload 或 信号(1 or HUP)

  postrotatekill -1 进程pidendscript

2.3 dmesg

下面我们展示一些最负盛名的dmesg命令工具以及其实际使用举例:

2.3.1 命令简介

Linux dmesg(英文全称:display message)命令用于显示开机信息。kernel 会将开机信息存储在 ring buffer 中。您若是开机时来不及查看信息,可利用 dmesg 来查看。开机信息亦保存在 /var/log 目录中,名称为 dmesg 的文件里。

格式及参数

NAMEdmesg - print or control the kernel ring bufferSYNOPSISdmesg [options]dmesg --cleardmesg --read-clear [options]dmesg --console-level leveldmesg --console-ondmesg --console-offDESCRIPTIONdmesg is used to examine or control the kernel ring buffer.The default action is to read all messages from kernel ring buffer.
参数选项参数说明
-C, --clear清除内核环形缓冲区(ring butter)
-c, --read-clear读取并清除所有消息
-D, --console-off禁止向终端打印消息
-d, --show-delta显示打印消息之间的时间差
-e, --reltime以易读格式显示本地时间和时间差
-E, --console-on启用向终端打印消息
-F, --file <文件>用 文件 代替内核日志缓冲区
-f, --facility <列表>将输出限制为定义的设施
-H, --human易读格式输出
-k, --kernel显示内核消息
-L, --color显示彩色消息
-l, --level <列表>限制输出级别
-n, --console-level <级别>设置打印到终端的消息级别
-P, --nopager不将输出通过管道传递给分页程序
-r, --raw打印原生消息缓冲区
-S, --syslog强制使用 syslog(2) 而非 /dev/kmsg
-s, --buffer-size <大小>查询内核环形缓冲区所用的缓冲区大小
-T, --ctime显示易读的时间戳(如果您使用了SUSPEND/RESUME 则可能不准)
-t, --notime不打印消息时间戳
-u, --userspace显示用户空间消息
-w, --follow等待新消息
-x, --decode将设施和级别解码为可读的字符串
-h, --help显示此帮助并退出
-V, --version输出版本信息并退出

2.3.2 使用示例

1、查看命令版本

[root@dbc-server-554 log]# dmesg -V
dmesg from util-linux 2.23.2

2、获取命令帮助

[root@dbc-server-554 log]# dmesg -hUsage:dmesg [options]选项:-C, --clear 清除内核环形缓冲区(ring butter)-c, --read-clear 读取并清除所有消息-D, --console-off 禁止向终端打印消息-d, --show-delta 显示打印消息之间的时间差-e, --reltime 以易读格式显示本地时间和时间差

3、查看所有开机日志信息

[root@dbc-server-554 log]# dmesg|head
[    0.000000] microcode: microcode updated early to revision 0x28, date = 2019-11-12
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 3.10.0-1160.83.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Wed Jan 25 16:41:43 UTC 2023
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.10.0-1160.83.1.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x0000000000057fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000000058000-0x0000000000058fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000059000-0x000000000009efff] usable

4、过滤想查看信息
#建议使用-i参数过滤时忽略大小写

 [root@dbc-server-554 log]# dmesg|grep -i cpu
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
...
[    0.109184] mce: Detected Haswell CPU. MCE quirk HSD131, HSM142, HSW131, BDM48, or HSM142 enabled.
[    0.109294] Brought up 8 CPUs
[    0.139272] ACPI: SSDT ffff89ee3a4a1000 003D3 (v01  PmRef  Cpu0Cst 00003001 INTL 20051117)
[    0.505837] ACPI: Requesting acpi_cpufreq
[    0.552396] cpuidle: using governor menu
[    6.563464] cryptd: max_cpu_qlen set to 1000

5、便于阅读的方式显示日志日期和时间

[root@dbc-server-554 log]# dmesg -d -T |grep -i Memory
[Thu Feb 23 17:39:39 2023 <    0.000000>] Base memory trampoline at [ffff89ecc0097000] 97000 size 24576
[Thu Feb 23 17:39:39 2023 <    0.000000>] Reserving 161MB of memory at 720MB for crashkernel (System RAM: 8067MB)
[Thu Feb 23 17:39:39 2023 <    0.000000>] Early memory node ranges
[Thu Feb 23 17:39:39 2023 <    0.000000>] Reserving Intel graphics memory at [mem 0xdb200000-0xdf1fffff]
...
[Thu Feb 23 17:39:39 2023 <    0.000000>] PM: Registered nosave memory: [mem 0xff000000-0xffffffff]
[Thu Feb 23 17:39:39 2023 <    0.000000>] Memory: 5132340k/8910848k available (7988k kernel code, 649248k absent, 643056k reserved, 5756k data, 2176k init)
[Thu Feb 23 17:39:39 2023 <    0.000000>] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[Thu Feb 23 17:39:39 2023 <    0.000171>] Initializing cgroup subsys memory
[Thu Feb 23 17:39:39 2023 <    0.000050>] x86/mm: Memory block size: 128MB
[Thu Feb 23 17:39:39 2023 <    0.281043>] Freeing initrd memory: 32056k freed
[Thu Feb 23 17:39:39 2023 <    0.000307>] Non-volatile memory driver v1.3
[Thu Feb 23 17:39:39 2023 <    0.000063>] crash memory driver: version 1.1
[Thu Feb 23 17:39:39 2023 <    0.001867>] Freeing unused kernel memory: 2176k freed
[Thu Feb 23 17:39:39 2023 <    0.001101>] Freeing unused kernel memory: 192k freed
[Thu Feb 23 17:39:39 2023 <    0.002384>] Freeing unused kernel memory: 528k freed

6、实时监控查看日志末尾N行

[root@dbc-server-554 log]# watch "dmesg | tail -10"

在这里插入图片描述
7、查看指定级别格式日志

dmesg -l [list]
-l, --level listRestrict output to defined (comma separated) list of levels.  For exampledmesg --level=err,warnwill print error and warning messages only.  For all supported levels see dmesg --help output.

#支持的日志级别(优先级):

emerg - 系统无法使用
alert - 操作必须立即执行
crit - 紧急条件
err - 错误条件
warn - 警告条件
notice - 正常但重要的条件
info - 信息
debug - 调试级别的消息

[root@dbc-server-554 log]# dmesg -l warn
[    0.000000] ACPI: RSDP 00000000d8ca7000 00024 (v02 ALASKA)
[    0.000000] ACPI: XSDT 00000000d8ca7080 0007C (v01 ALASKA    A M I 01072009 AMI  00010013)
...
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x00001000-0x00ffffff]
[    0.000000]   DMA32    [mem 0x01000000-0xffffffff]
[    0.000000]   Normal   [mem 0x100000000-0x21fdfffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00001000-0x00057fff]
...
[    1.123710] ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20130517/psargs-359)
[    1.123713] ACPI Error: Method parse/execution failed [\_SB_.PCI0.SAT0.SPT5._GTF] (Node ffff89ee3ae6f5d0), AE_NOT_FOUND (20130517/psparse-536)
[    1.124550] ACPI Error: [DSSP] Namespace lookup failure, AE_NOT_FOUND (20130517/psargs-359)
[    1.124553] ACPI Error: Method parse/execution failed [\_SB_.PCI0.SAT0.SPT5._GTF] (Node ffff89ee3ae6f5d0), AE_NOT_FOUND (20130517/psparse-536)
[   49.426433] TECH PREVIEW: Overlay filesystem may not be fully supported.
Please review provided documentation for limitations.
[101569.947943] perf: interrupt took too long (2520 > 2500), lowering kernel.perf_event_max_sample_rate to 79000
[150035.568272] perf: interrupt took too long (3153 > 3150), lowering kernel.perf_event_max_sample_rate to 63000
[218334.434190] perf: interrupt took too long (3942 > 3941), lowering kernel.perf_event_max_sample_rate to 50000
[root@dbc-server-554 log]# dmesg -l err
[    0.567132] EFI: Problem loading in-kernel X.509 certificate (-129)
[    0.567212] EFI: Problem loading in-kernel X.509 certificate (-129)
[    0.642991] ip_local_port_range: prefer different parity for start/end values.
[    0.643360] systemd[1]: Failed to start Apply Kernel Variables.
[    1.007444] ERROR: Unable to locate IOAPIC for GSI 37
...
[    7.048060] kvm: disabled by bios

8、打印并清除内核环形缓冲区

]# dmesg-c

2.4 关于重启/死机的日志

2.4.1 last

last命令用于显示用户最近登录信息。

单独执行 last 指令,它会读取位于 /var/log/目录下,名称为 wtmp 的文件,并把该文件记录登录的用户名,全部显示出来。
语法

last [options] [username...] [tty...]参数说明:options:-R 省略主机名 hostname 的列-a  把从何处登入系统的主机名称或IP地址显示在最后一行。-d  将IP地址转换成主机名称。-f<记录文件>  指定记录文件。-n<显示行数>或-<显示行数>  显示名单的行数。-R  不显示登入系统的主机名称或IP地址。-x  显示系统关机,重新开机,以及执行等级的改变等信息。username:username: 显示指定用户 username 的登录信息。tty:tty 设置登录的终端,tty 的名称可以缩写, last 0 与 last tty0 相同。

2.4.2 日志查看

在程序的日常运维中,有时候也会遇到操作系统死机重启的情况,此时我们可能需要对此进行诊断
1、查看系统版本

[root@zabbix-svr-2 ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@zabbix-svr-2 ~]# uname -a
Linux zabbix-svr-2 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

2、查看过去重启日志

[root@zabbix-svr-2 ~]# last |grep reboot
reboot   system boot  3.10.0-1160.el7. Mon Feb 27 00:30 - 01:30  (00:59)
reboot   system boot  3.10.0-1160.el7. Sun Feb 26 22:07 - 01:30  (03:23)
reboot   system boot  3.10.0-1160.el7. Sun Feb 26 20:22 - 01:30  (05:07)
reboot   system boot  3.10.0-1160.el7. Thu Feb 23 20:24 - 20:22 (2+23:58)
reboot   system boot  3.10.0-1160.el7. Tue Feb 14 06:15 - 20:12 (9+13:56)
reboot   system boot  3.10.0-1160.el7. Tue Feb 14 06:11 - 20:12 (9+14:00)

3、查看最近一条重启记录

[root@zabbix-svr-2 ~]# last reboot|head -1
reboot   system boot  3.10.0-1160.el7. Mon Feb 27 00:30 - 01:31  (01:01)

4、查看上一次关机日期和时间

[root@zabbix-svr-2 ~]# last -x|grep shutdown | head -1
shutdown system down  3.10.0-1160.el7. Sun Feb 26 20:22 - 20:22  (00:00)
[root@zabbix-svr-2 ~]# last -x shutdown
shutdown system down  3.10.0-1160.el7. Sun Feb 26 20:22 - 20:22  (00:00)
shutdown system down  3.10.0-1160.el7. Thu Feb 23 20:12 - 20:24  (00:12)wtmp begins Tue Feb 14 06:11:46 2023

5、执行history查看系统执行了哪些操作

[root@zabbix-svr-2 ~]# history1  ip a2  ll /etc/sysconfig/network-scripts/ifcfg-ens333  vi /etc/sysconfig/network-scripts/ifcfg-ens334  systemctl restart network

6、查看/var/log/message
我们还可以查看/var/log/message文件,以进一步分析操作系统重启的一些信息:

# cat /var/log/messages | moreNov 8 03:37:19 midea-oss-hk-07 rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-41.el7_7.4" x-pid="1816" x-info="http://www.rsyslog.com"] rsyslogd was HUPedNov 8 03:37:19 compile-machine systemd: Removed slice User Slice of root.Nov 8 03:38:01 compile-machine systemd: Created slice User Slice of root.Nov 8 03:38:01 compile-machine systemd: Started Session 68942 of user root.Nov 8 03:38:01 compile-machine systemd: Removed slice User Slice of root.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_74954.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML#5表单标签

一. 表单标签介绍表单: 在网页中主要负责数据采集功能,使用<form>标签定义表单表单项: 不同类型的input元素, 下拉列表, 文本域<form> 定义表单<input> 定义表单项,通过typr属性控制输入形式<label> 为表单项定义标注<select> 定义下拉列表<o…

工程机械焊接件焊接结构件三维扫描检测外观质量控制-CASAIM三维扫描检测仪

焊接已发展为制造业中的一种重要的加工方法&#xff0c;广泛应用于航空、航天、冶金、石油、汽车制造以及国防等领域。工程机械焊接件品种繁多、几何形状复杂&#xff0c;焊接件质量的好坏将直接影响到产品的使用寿命长短。对焊缝表面尺寸测量及评定表面焊缝缺陷时&#xff0c;…

叠氮试剂79598-53-1,6-Azidohexanoic Acid,6-叠氮基己酸,末端羧酸可与伯胺基反应

●中文名&#xff1a;6-叠氮基己酸●英文名&#xff1a;6-Azidohexanoic Acid&#xff0c;6-Azidohexanoic COOH●外观以及性质&#xff1a;西安凯新生物科技有限公司供应的6-Azidohexanoic Acid浅黄色或者无色油状&#xff0c;叠氮化物可使用铜催化的Click化学与末端炔烃共轭&…

一文了解 requestAnimationFrame

requestAnimationFrame 的基本使用 requestAnimationFrame 是什么 window.requestAnimationFrame() 告诉浏览器——你希望执行一个动画&#xff0c;并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数作为参数&#xff0c;该回调函数会在浏…

腾讯前端二面常考vue面试题(附答案)

虚拟DOM真的比真实DOM性能好吗 首次渲染大量DOM时&#xff0c;由于多了一层虚拟DOM的计算&#xff0c;会比innerHTML插入慢。正如它能保证性能下限&#xff0c;在真实DOM操作的时候进行针对性的优化时&#xff0c;还是更快的。 MVVM的优缺点? 优点: 分离视图&#xff08;V…

MK60DX256VLQ10(256KB)MK60DN256VLQ10 Kinetis K60 MCU FLASH

MK60DX256VLQ10(256KB)MK60DN256VLQ10 Kinetis K60 MCU 32BIT 256KB FLASH 144LQFP【说明】Kinetis K6x MCU系列是一个可扩展的组合&#xff0c;具有不同级别的集成&#xff0c;提供丰富的模拟、通信、定时和控制外设套件&#xff0c;以适应广泛的需求。应用楼宇自动化控制器人…

数仓基础与hive入门

目录1、数仓数据仓库主流开发语言--SQL2、Apache Hive入门2.1 hive定义2.2 为什么使用Hive2.3 Hive和Hadoop关系2.4 场景设计&#xff1a;如何模拟实现Hive功能2.5 Apache Hive架构、组件3、Apache Hive安装部署3.1 metastore配置方式4、Hive SQL语言&#xff1a;DDL建库、建表…

【谷歌grc】recaptcha browser-error 错误

grc 谷歌人机验证错误 https://www.google.com/recaptcha/api/siteverif 返回错误信息 browser-error [{"success": false,"error-codes": ["browser-error"] }]之前都是调通能用的&#xff0c;突然之间就不能用了&#xff0c;查了半天也没有找…

蓝库云|什么是供应链管理?SCM对制造业的重要性

企业在产品的销售经营上&#xff0c;往往不会考量到供应链管理(SCM)的流程规划&#xff0c;但现今的商业环境与以往不同&#xff0c;高度竞争与客户不断提升的期望&#xff0c;藉由做好供应链管理(SCM)&#xff0c;才能更准时的提供优质产品与优良服务&#xff0c;增强企业竞争…

Qt 小项目 图片浏览系统

目录 引言 实现功能&#xff1a; 效果&#xff1a; 实现图片浏览所用知识: 实现流程&#xff1a; 实现环境和UI设计 具体实现 引言 本系统支持&#xff0c;自动播放&#xff0c;左右拖动切换&#xff0c;点击列表切换&#xff0c;点击按钮切换&#xff1b;是一个标准的…

职场性别报告,男女薪酬仍有差距,男性平均薪酬比女性高29.7%

性别是否影响职业&#xff1f;女性求职比男性更加困难&#xff1f;男性薪酬比女性更有优势&#xff1f;人们一说到警察、建筑师通常会想到高大魁梧的男性形象&#xff0c;一说到幼师、护士往往想到的都是温柔的女性形象&#xff0c;职业好似与性别挂钩&#xff1b;女性求职通常…

vue脚手架多页自动化生成实践

前言 在前端开发过程中&#xff0c;常常面对多种业务场景。到目前为止&#xff0c;前端对于不同场景的处理通常会采用不同的渲染方案来组合处理&#xff0c;常见的渲染方案包括&#xff1a;CSR(Client Side Rendering)、SSR(Server Side Rendering)、SSG(Static Site Generati…

LVGL8.3 集成 ST7789V 显示驱动和 CST816T 触摸屏驱动

LVGL8.3 集成 ST7789V 显示驱动和 CTS816S 触摸屏驱动起因效果&#xff08;正常显示&#xff0c;触摸屏可调换X&#xff0c;Y轴&#xff09;使用方式前提操作步骤最后参考起因 LVGL的ESP32 Drivers库中已经包含了大多数显示和触摸芯片的驱动&#xff0c;基本上只需要在MenuCon…

一些无线通信系统模型的概念

一些无线通信系统模型的概念 扩频通信,指的是系统的带宽WWW远大于其信息传输速率R(bits/s)R(bits/s)R(bits/s), 定义展频带因子BeWRB_e \frac{W}{R}Be​RW​, 易知在扩频通信系统中,BeB_eBe​远大于1. 在频率上产生如此大的冗余度,主要是为了减轻无线通信或卫星通信中经常产生…

SpringMVC——响应处理(1)【包含源码分析】

Controller public class JsonReturnController {ResponseBodyGetMapping("/getPet")public Pet getPet(){Pet petnew Pet();pet.setAge(5);pet.setName("lily");return pet;} }项目启动后 浏览器输入 http://localhost:8080/getPet 。 debug DispatcherS…

设备驱动模型--存储技术原理分析笔记 基于2.6.43内核

本文为读书笔记&#xff0c;详细内容参考《存储原理技术分析》1- 驱动模型2- 总线类型2.1- 重要数据结构总线bus_type 和 bus_type_private 互相可以找到对方struct bus_type {const char *name;struct bus_attribute *bus_attrs;struct device_attribute *dev_attrs;s…

BPMN2.0是什么,BPMN能解决企业流程管理中哪些问题?

一、前言&#xff1a; 在任何行业和企业中&#xff0c;一定存在着各式各样的流程&#xff0c;请假流程、报销流程、入职流程、离职流程、出差流程、合同审批流程、出入库流程等等…… 无论是管理者、技术人员还是业务人员&#xff0c;每天肯定也在使用各种流程&#xff0c;但…

Spring彻头彻尾的讲解,按照Spring框架启动流程,逐步剖析问题,不再是大杂烩!

文章目录1. 定义Spring Bean篇1.1 定义Spring Bean的几种方式1.1.1 XML文件定义Spring Bean1.1.2 JavaConfig定义Spring Bean1.1.3 Component注解定义SpringBean1.2 装配Spring Bean的四种常用方式1.2.1 手动装配 XML文件1.2.2 自动装配 XML文件1.2.3 手动装配 JavaConfig文…

C++常见类型及占用内存表

GPS生产厂家在定义数据的时候都会有一定的数据类型&#xff0c;例如double、int、float等&#xff0c;我们知道它们在内存中都对应了一定的字节大小&#xff0c;而我在实际使用时涉及到了端序的问题&#xff08;大端序高字节在前&#xff0c;小端序低字节在前&#xff09;&…

【ICCV2022】 CAPAO:一种高效的单阶段人体姿态估计模型

CAPAO&#xff1a;一种高效的单阶段人体姿态估计模型 重新思考关键点表示&#xff1a;将关键点和姿态建模作为多人姿态估计的对象&#xff08;Rethinking Keypoint Representations: Modeling Keypoints and Poses as Objects for Multi-Person Human Pose Estimation&#xf…