Linux之日志管理

日志管理

企业7之前,日志采集工具只有rsylog,而企业7之后日志采集有两个工具:journald和rsyslog。
在Linux7中查看这两个工具。
在这里插入图片描述
在这里插入图片描述
远程登陆Linux8虚拟机,查看这两个工具。
在这里插入图片描述
在这里插入图片描述

journald服务

服务名称:systemd-journald.service
查看日志的程序:journalctl
默认日志存放路径:/run/log/(该路径中的日志重启服务后自动删除)

日志是由运行程序自己产生的,systemd-journald.service的作用是按照某种格式采集程序产生的日志,并保存到默认日志路径。

systemd-journald.service服务无法关闭。

[root@localhost network-scripts]# cd /run/log
[root@localhost log]# ls
journal

journalctl命令的用法

查看日志

  1. 显示系统开始至当前时间的所有日志:journalctl
    在这里插入图片描述
  2. 查看最新的三条日志:journalctl -n 3
    在这里插入图片描述
  3. 查看从某时间开始的日志:journalctl --since 时间
    在这里插入图片描述
  4. 查看到某事件为止的日志: journalctl --until 时间
    在这里插入图片描述

以某种格式显示日志

命令:journalctl -o 类型参数(默认类型参数为short)

类型参数 含义
short 经典模式显示日志信息
verbose 显示日志的全部字节
export 适合传输和备份的二进制日志信息
json js格式显示日志信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

显示指定级别的日志

命令:journalctl -p 级别代号或参数

代号 参数 含义
0 emerg 系统的严重问题日志(内核错误)
1 alert 系统中立即要更改的信息
2 crit 严重级别日志,影响软件正常工作
3 err 程序报错日志
4 warning 程序警告日志
5 notice 重要信息的普通日志
6 info 普通信息日志
7 debug 排错信息日志

使用代号和参数的效果完全相同。
在这里插入图片描述
在这里插入图片描述

查看可控日志级别

命令:journalctl -F PRIORITY
级别0和1与内核相关,不可控制
在这里插入图片描述

查看指定程序/服务的日志

命令:journalctl -u 服务/程序
在这里插入图片描述

查看日志大小

命令:journalctl --disk-usage
在这里插入图片描述

日志回滚

系统每时每刻都在生成新的日志,为了避免越来越多的日志造成内存浪费,在记录的日志量满足某个条件时,应自动删除最早的日志信息,这就是日志回滚。

临时日志回滚

临时的日志回滚仅对系统本次运行起作用,系统重启后需要重新设置。
命令:journalctl --vacuum-size=日志存放大小 最大日志存放量
命令:journalctl --vacumm-time=时间 日志最长存放时间

永久日志回滚

配置文件地址:/etc/systemd/journald.conf
编辑该文件:vim /etc/systemd/journald.conf
在这里插入图片描述
在这里插入图片描述

监控日志

命令:journalctl -f
作用:实时显示日志文件的变动、更新。
在这里插入图片描述
重启sshd,journalctl -f的Shell界面自动更新。
在这里插入图片描述

永久保存日志

[root@localhost ~]# mkdir /var/log/journal                      ##创建目录
[root@localhost ~]# chgrp systemd-journal /var/log/journal      ##改变目录所有组权限
[root@localhost ~]# chmod 2774 /var/log/journal/				##改变目录使用权限
[root@localhost ~]# ls -ld /var/log/journal/
drwxrwsr--. 2 root systemd-journal 6 Feb 14 22:27 /var/log/journal/
[root@localhost ~]# systemctl restart systemd-journald.service  ##重启服务
[root@localhost ~]# ls /var/log/journal/                        ##查看硬盘中的日志信息(永久存放日志,新生成的日志文件也存放在这里)
8400f98d40a44352a1bc526eeed38c94
[root@localhost ~]# ls /run/log/								##查看原目录中的日志信息(空)
#####################################复原日志文件###########################################
[root@localhost ~]# rm -fr /var/log/journal/					##删除硬盘中的日志目录
[root@localhost ~]# systemctl restart systemd-journald.service  ##重启日志服务
[root@localhost ~]# ls /run/log/								##新生成的日志信息(临时存放,重启后自动删除)
journal
[root@localhost ~]# ls /run/log/journal/
8400f98d40a44352a1bc526eeed38c94

如果真的要永久改变日志文件的存放地址:仅需执行到第3步即可。

未修改前执行journalct命令。
在这里插入图片描述
修改后执行journalctl命令,日志起始时间不变,说明日志文件已永久保存,文件的保存路径为:/var/log/journal
在这里插入图片描述
复原后执行journalctl命令,日志起始时间变化,说明重启服务后之前的目录已被自动删除。
在这里插入图片描述

rsyslog服务

服务名称:rsyslog.service
在这里插入图片描述
日志存放l路径:(分类存放)

  • /var/log/messages
    存放系统服务日志、常规信息和服务报错
  • /var/log/secure
    存放系统认证信息相关日志
  • /var/log/maillog
    存放系统邮件相关信息日志
  • /var/log/cron
    存放系统定时任务信息
  • /var/log/boot.log
    存放系统启动日志信息

rsyslog服务分门别类的存放日志文件。
journald将所有文件统一存放,再设计命令查找不同类型的日志文件。

rsyslog服务的管理依赖配置文件。
配置文件路径:/etc/rsyslog.conf

自定义日志采集路径

在配置文件中自定义各种类型日志文件的存放路径:

[root@localhost ~]# vim /etc/rsyslog.conf

在第55行增加:
日志类型.日志级别 日志存放路径

日志类型参数 含义
auth 用户认证日志文件
authpriv 服务认证日志文件
cron 时间任务日志
kern 内核相关日志
mail 邮件日志
news 系统更新信息
user 用户相关日志

把系统中所有类型的日志文件存放到指定路径。
上图表示把系统中所有类型、所有级别的日志文件存放到指定路径/var/log/file
重启rsyslog.service服务后查看该路径下的日志文件。
在这里插入图片描述

[root@localhost ~]# rm -f /var/log/file
[root@localhost ~]# vim /etc/rsyslog.conf

在这里插入图片描述
上图将所有级别的服务认证相关的日志文件存放到指定路径/var/log/file
重启rsyslog.service服务后查看该路径下的日志文件。
在这里插入图片描述

日志级别参数 含义
emerg 系统的严重问题日志(内核错误)
alert 系统中立即要更改的信息
crit 严重级别日志,影响软件正常工作
err 程序报错日志
warning 程序警告日志
notice 重要信息的普通日志
info 普通信息日志
debug 排错信息日志
none 排除某个级别的日志文件

在这里插入图片描述
在这里插入图片描述

自定义日志采集格式

rsyslog.conf配置文件中定义日志格式:
在这里插入图片描述
在这里插入图片描述

  • XZ
    自定义的日志格式名称
  • %FROMHOST-IP%
    日志来源主机的IP
  • %timegenerated%
    日志的生成时间
  • %syslogtag%
    生成日志的服务
  • %msg%
    日志的内容
  • \n
    每条日志文件结束后换行

将配置文件按上图修改后,重启rsyslog.service服务。
在这里插入图片描述

日志的远程同步

准备两台虚拟机,我将Linucx7作为本地主机,Linux8作为远程主机。要求Linux8的日志要发送到Linux7的虚拟机中。

关闭Linux7的火墙

[root@localhost ~]# systemctl stop firewalld

设置Linux7的配置文件

设置Linux7的配置文件,使其接收同一网段中所有人的日志
配置文件地址:/etc/rsyslog.conf

  1. 修改配置文件:
    在这里插入图片描述
  2. 重启rsyslog.service服务,查看服务的端口:
[root@localhost ~]# systemctl restart rsyslog.service   ##重启服务
[root@localhost ~]# netstat -antlupe | grep rsyslog		##查询端口
udp        0      0 0.0.0.0:514             0.0.0.0:*                           0          267324     72749/rsyslogd      
udp6       0      0 :::514                  :::*                                0          267325     72749/rsyslogd   

设置Linux8的配置文件

设置Linux8的配置文件,使其能够发送日志到远程主机

  1. 修改配置文件
[root@localhost ~]# vim /etc/rsyslog.conf 

在这里插入图片描述
@表示使用UDP协议传输日志
@@表示使用TCP协议传输日志
@192.168.224.131表示将本地日志用UDP协议发送给远程主机

清空两台虚拟机的日志文件

[root@localhost ~]# systemctl restart rsyslog.service  #重启Linux8的服务
[root@localhost ~]# > /var/log/messages #Linux7和Linux8均执行此命令,清空日志文件

在Linux8虚拟机中添加测试日志

[root@localhost ~]# logger wuhan fighting!!!	##添加测试日志
logger wuhan fighting> /var/log/messages!
[root@localhost ~]# cat /var/log/messages		##查看Linux8的日志文件日志文件
Feb 15 02:12:31 localhost root[14166]: wuhan fighting

查看Linux7中的测试文件

在这里插入图片描述

时间管理

timedatectl

在这里插入图片描述

  • Local time
    当前时间
  • Universal time
    格林威治时间
  • RTC time
    硬件时间

设置系统时间

命令:timedatectl set-time "时间"
在这里插入图片描述

设置系统时区

  1. 命令: timedatectl list-timezones
    含义:列出系统中的所有时区
  2. 命令:timedatectl set-timezone "时区"
    在这里插入图片描述

设置系统时间的计算方式

命令:timedatectl set-local-rtc 0|1
在这里插入图片描述
执行timedatectl set-local-rtc 0,系统时间(RTC)= UTC,设置后系统的硬件时间与UTC相同。
在这里插入图片描述
执行timedatectl set-local-rtc 1,系统时间(RTC)= Local time,设置后系统的硬件时间与当地时间相同。

时间同步服务

模拟时间同步服务时,为了避免影响到同一网段的其它主机,采用VMWare中的仅主机模式下建立局域网

服务名称:chronyd.service
配置文件:/etc/chrony.conf

  1. 修改Linux7的配置文件
    在这里插入图片描述
  2. 重启服务,关闭Linux7的火墙
[root@localhost ~]# systemctl restart chronyd.service
[root@localhost ~]# systemctl stop firewalld
  1. Linux8的chronyd服务默认关闭,将其打开;
    在这里插入图片描述
  2. 查看Linux8中有无同步时间(无)
    在这里插入图片描述
  3. 在Linux8中修改配置文件chrony.conf
    在这里插入图片描述
  4. 重启服务,查看Linux8的时间
    在这里插入图片描述
  5. 查看同步时间源
    在这里插入图片描述

系统时间与当前真实时间相差8小时

一般在新建一个虚拟机时,将其时区设置为中国上海,这样就会使系统时间与当前真实时间相差8小时。

原因是:我们在安装系统的时选择的时区是上海,而Linux操作系统默认bios时间是utc时间,所以时间相差了8小时。这个时候的bios的时间和系统的时间是不一致的,一个代表 utc 时间,一个代表cst(+8时区),即上海时间。

要令此时系统的时间为真实时间,需对时间进行同步:
在这里插入图片描述
删除localtime即可。

发布了58 篇原创文章 · 获赞 3 · 访问量 2167

猜你喜欢

转载自blog.csdn.net/weixin_43936250/article/details/104295428