# Centos/Rocky/Ubuntu ## 查看系统日志(网络、系统、内核等) Rocky8默认没有syslog,需要安装: ``` $ yum install -y rsyslog # 启动 $ systemctl start rsyslog # 或者 $ systemctl start syslog ``` 查看: ``` $ cat /var/log/messages ``` Ubuntu: ``` $ cat /var/log/syslog | more $ cat /var/log/kern.log | more ``` > 注:ubuntu没有messages文件,由/var/log/syslog和/var/log/kern.log组成 ## 显示系统硬件信息 ``` $ dmesg # 带时间显示 $ dmesg -T # 清空该内存中的信息 $ dmesg -c ``` > 注:`dmesg`命令信息保存在内存,显示硬件信息,如硬盘坏了等信息。 Ubuntu: ``` $ dmesg -T | more ``` ## 系统启动日志 Centos7中查看: ``` $ cat /var/log/dmesg ``` > 注:该日志文件与`dmesg`命令信息没有关系。 Rocky8在设计之处,在启动过程中不会生成`/var/log/dmesg`日志文件。内核环形缓冲区在`systemd-journal`和日志文件`/var/log/messages`中捕获内核启动信息,通过`imjournal rsyslog`插件捕获。 Ubuntu: ``` $ cat /var/log/dmesq ``` ## 查看登陆历史 登陆成功的信息: ``` $ last ``` > 注:`last`调用的`/var/log/wtmp`文件。该文件为二进制文件,不能直接查看。 Ubuntu: ``` $ last ``` > `/var/log/wtmp` 登陆失败的信息: ``` $ lastb ``` > 注:`lastb`调用的`/var/log/btmp`文件。该文件为二进制文件,不能直接查看。 Ubuntu: ``` $ lastb ``` > `/var/log/btmp` ## 安全日志 ``` $ cat /var/log/secure ``` Ubuntu: ``` $ cat /var/log/auth.log | more ``` --------------- # 日志切割工具 **logrotate**可以对日志进行截断、压缩机删除旧的日志文件。 一般logrotate默认安装,如果没有可以使用yum或者apt进行安装: ubuntu: ``` $ apt-get install logrotate cron ``` Centos/Rocky: ``` $ yum install logrotate crontabs ``` ## 配置文件 ``` $ cat /etc/logrotate.conf # see "man logrotate" for details # rotate log files weekly # 指定分割周期,周:weekly,日:daily,月:monthly,年:yearly weekly # keep 4 weeks worth of backlogs # 指定保留分割文件数量,4配合weekly就是4周 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 # system-specific logs may be also be configured here. ``` 配置文件中的可选参数: ``` compress # 通过gzip压缩转储后的日志 nocompress # 不压缩 copytruncate # 用于还在打开中的日志文件,把当前日志备份并截断 nocopytruncate # 备份日志文件但是不截断 create 或 mode 或 owner 或 group # 转储文件,使用指定的文件模式创建新的日志文件 nocreate # 不建立新的日志文件 delaycompress # 和compress一起使用时,转储的日志文件到下一次转储时才压缩 nodelaycompress # 覆盖delaycompress选项,转储同时压缩 errors address # 专储时的错误信息发送到指定的Email地址 ifempty # 即使是空文件也转储,这个是logrotate的缺省选项 notifempty # 如果是空文件的话,不转储 mail address # 把转储的日志文件发送到指定的E-mail地址 nomail # 转储时不发送日志文件 olddir directory # 转储后的日志文件放入指定的目录,必须和minsize或者dateext一起使用 noolddir # 转储后的日志文件和原来的放在一起 prerotate/endscript # 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行 postrotate/endscript # 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行 daily # 指定转储周期为每天 weekly # 指定转储周期为每周 monthly # 指定转储周期为每月 rotate count # 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5个备份 tabootext # 忽略指定扩展名的文件,请使用空格分隔 size size # 当日志文件到达指定的大小时才转储,单位为bytes,指定0时表示关闭此选项 ``` 单独定义的日志分割条件: ``` $ cat /etc/logrotate.d/dnf /var/log/dnf.log { daily missingok rotate 0 compress delaycompress notifempty create 640 root root sharedscripts postrotate systemctl kill --user=dnf --signal=HUP dnf-3.dnf endscript } ``` # journalctl 默认journal日志是从系统启动到现在的日志。 相关路径:`/run/log/journal` 用法: ``` $ journalctl [-选项] 选项: -n 5:查看最后5行 -e:查看最后的日志 -x:增加注释 -o:设置日志格式,比如-o json,-o export,-o short -p:设置日志级别,emerg、alert、crit、err、warning、notice、info、debug -f:实时查看日志 -u:指定unit,比如-u chrony -r:倒叙查看 -k:查看内核日志 ``` ## journalctl日志持久化 - 配置文件:/etc/systemd/journald.conf - 持久化路径:/var/log/joural - 重启服务:systemctl restart systemd-journald 配置文件内容: Storage=auto 参数: auto:如果将/var/log/joural创建好后,会自动写入,如果没就不写 persistent:自动创建目录 volatile:放在/run/log/journal,系统重启后丢失 ``` 1.创建目录 [root@localhost log]# mkdir /var/log/journal 2.重启服务 [root@localhost log]# systemctl restart systemd-journald [root@localhost log]# ll /var/log/journal/ 总用量 0 drwxr-xr-x 2 root root 28 8月 10 18:04 0d6017811a72466b9f2e30eb7bf4e6ed ``` **SystemMaxUse=** 定义日志使用最大空间,如果不定义,则默认不超过磁盘分区的10%的空间,且不能大于4G。如果配置了,此值不能小于1M,如果小于1M按1M算。 **SystemMaxFileSize=** 定义每个journal文件最大尺寸,默认值为systemmaxuse/8,并且限制范围在(512k~128M),当此参数设置大于等于8M时,则会默认预产生一个8M的文件,然后逐步往里面填充日志 **SystemMaxFiles=100** 定义最多存多少个文件