Linux中的日志管理
实验环境
$:以下实验均需要在两台虚拟机上完成,楼主在前两章已经做过详细说明了,有问题的朋友可以移步前两章,准备好的友友,我们进入今天的学习吧。
1. journald
服务名称:systemd-journald.service
journalctl
默认日志存放路径: /run/log
实验1. journalctl命令的用法
journalctl
-n 3 日志的最新3条
--since " 12:00:00" 显示12:00后的日志
--until "13:00:00" 显示日志到13:00
-o 设定日志的显示方式
short 经典模式显示日志
verbose 显示日志的全部字节
export 适合传出和备份的二进制格式
json js格式显示输出
-p 显示制定级别的日志
0 emerg 系统的严重问题日志
1 alert 系统中立即要更改的信息
2 crit 严重级别会导致系统软件不能正常工作
3 err 程序报错
4 warning 程序警告
6 info 普通信息
7 debug 程序拍错信息
-F PRIORITY 查看可控日志级别
-u sshd 指定查看服务
–disk-usage 查看日志大小
–vacuum-size=1G 设定日志存放大小
–vacuum-time=1W 日志在系统中最长存放时间
-f 监控日志
实验2. 用journald服务永久存放日志
首先我们要知道系统中默认日志在:/run/log/journal中
我们知道默认方式在系统重启后日志会被清理,为了安全我们需要永久保存日志
如何永久保存日志呢?
请完成以下操作:
mkdir /var/log/journal
chgrp systemd-journal /var/log/journal
chmod 2775 /var/log/journal
systemctl restart systemd-journald.service
这样当服务重启日志存放路径会被制定到:/var/log/journal
具体操作如下:
我们先查找日志
先建立/var/log/journal,并建立相关配置
最后重启系统
再次查看日志,就会发现,我们的日志依然存在:
$:我们也可以在另一台虚拟机上作对照组实验看看不进行上述操作直接重启系统会是什么情况
2.rsyslog
服务名称:rsyslog.service
日志存放:
/var/log/messages 系统服务日志,常规信息,服务报错
/var/log/secure 系统认证信息日志
/var/log/maillog 系统邮件日志信息
/var/log/cron 系统定时任务信息
/var/log/boot.log 系统启动日志信息
配置文件:/etc/rsyslog.conf
实验1.自定义日志采集路径
vim /etc/rsyslog.conf
日志类型.日志级别 日志存放路径
*.* /var/log/westos 把系统中所有级别的日志存放到westos中
*.*;authpriv.none /var/log/westos 把系统中所有级别的日志存放到westos中
但是authpriv不存放到westos中
日志类型
auth 用户认证
authpriv 服务认证
cron 时间任务
kern 内核类型
mail 邮件
news 系统更新信息
user 用户
日志级别
debug 程序排错信息
info 程序常规运行信息
notice 重要信息的普通日志
waring 程序警告
err 程序报错
crit 严重级别会导致系统软件不能正常工作
alert 系统中立即要更改的信息
emerg 系统的严重问题日志
none 不采集
vim 打开etc/rsyslog.conf这个文件
将46行更改为如下的指令
重启rsyslog.service后进行如下操作:
然后我们连接另一台虚拟机:
利用二号虚拟机的身份查看/var/log/westos:
就可以看到虚拟机二号的状态被存放在这里,状态时logind
登出二号机:
再次登入并查看/var/log/westos,就会发现,我们登入登出二号机的信息全部被记录了下来:
实验2.日志的远程同步
localhost1:72.25.254.101 存放日志作为日志接受端,所有人日志都存放到此台主机
localhost2:172.25.254.201 发送日志到主机localhost1中
1.localhost1中设定接受所有人的日志
systemctl stop firewalld
vim /etc/rsyslog.conf
19 module(load="imudp") 打开日志接受插件
20 input(type="imudp" port="514") 指定插件使用接口
将19.20行进行如下更改:
重启服务
systemctl restart rsyslog.service
并查询端口:
root@localhost1 ~]# netstat -antlupe | grep rsyslog
2.localhost2中设定发送日志到localhost1中
vim /etc/rsyslog.conf
. @172.25.254.101
systemctl restart rsyslog.service
@ 表示使用udp传输日志
@@ 表示使用tcp传输日志
@172.25.254.230 把本机日志用udp的传输方式发送到172.25.254.230
加入如下:
记得关闭接受端的防火墙
systemctl disable --now firewalld
然后测试
测试:
在一号机和二号机中
> /var/log/messages
在一号机中
logger hello westos
在二号机可以看一号机中生成的日志
在二号机查看:
实验3.如何更改日志采集格式
1.定义日志采集格式
$template WESTOS_FORMAT, “%timegenerated% ,%FROMHOST-IP% ,%syslogtag% ,%msg%\n”
WESTOS : 格式名称
%FROMHOST-IP%: 日志来源主机IP
%timegenerated%: 日志生成时间
%syslogtag%: 日志生成服务
%msg%: 日志内容
\n: 换行
在34行添加了:$template WESTOS, “%FROMHOST-IP%, %timegenerated%, %syslogtag%, %msg%\n”
2.设定日志采集格式应用
*.*;authpriv.none /var/log/westos;WESTOS
module(load=“builtin:omfile” Template=“WESTOS_FORMAT”) 默认采用WESTOS_FORMAT格式
具体操作如下:
将46行更改为:
将33行的下图
更改为:
重启rsyslog.service后再次查看日志就会发现日志的采集方式更改了:
3.timedatectl
timedatectl set-time "2020-02-13 10:41:55" 设定系统时间
timedatectl list-timezones 显示系统的所有时区
timedatectl set-timezone "Asia/Shanghai" 设定系统时区
timedatectl set-local-rtc 0|1 设定系统时间计算方式
0表示使用utc时间计算方式
$:我们在这里直接设置时间是无法设置的,会出现如下提示:
因此在设置之前先要执行以下操作
然后再设置时间:
4.时间同步服务
服务名称: chronyd.service
配置文件: /etc/chrony.conf
在使一号机为时间源二号机同步一号机时间
在一号机中
vim /etc/chrony.conf
23 allow 172.25.254.0/24 允许172.25.254.0网段主机同步时间
26 local stratum 10 开启时间同步服务器功能并设定级别为10
将如下的22行
变为
将如下的26行
变为
退出后进行如下操作
在二号机中
vim /etc/chrony.conf
pool 172.25.254.101 iburst
将第三行
更改为:
查看:
在二号机中查看时间:
现实已经变成中localhost1时间
使用chronyc 命令查看时间效果:
同步完毕!!!