系统日志
日志采集服务rsyslog:
日志采集服务收集系统中产生的日志并统一存储在/var/log/目录下。
如果关闭日志采集的服务,新产生的日志无法记录在日志文件中。
日志信息都在/var/log/目录下,分别使用不同的文件来存储不同类型,不同等级的日志信息
系统日志的存储:
/var/log/messages 服务信息日志
/var/log/secure 系统登陆日志
/var/log/cron 定时任务日志
/var/log/maillog 邮件日志
/var/log/boot.log 系统启动日志
通过更改日志采集服务的配置文件vim /etc/rsyslog.conf来指定日志的存储路径。
具体更改方式:
vim /etc/rsyslog.conf
在##rule##下面找到
更改格式:
类型.级别 /var/log/filename 将符合前面的该类型,该级别的日志信息,存储到该文件/var/log/filename中
然后再重启日志采集进程,使刚才的设置生效
通过logger test可以生成日志,用于测试是否成功更改日志采集方式
使用cat /var/log/filename查看是否将日志信息保存进来了
-
日志类型
-
auth
panm产生的日志
authpriv ssh,ftp等登陆信息的验证信息
corn 时间任务相关
kern 内核
lpr 打印
mail 邮件
mark(syslog)-rsyslog 服务内部的信息,时间标识
news 新闻组
user 用户程序产生的相关信息
uucp unix主机之间的相关通讯
local1~7 自定义的日志设备
日志等级
-
debug
有调试信息的日志
info 一般信息的日志
notice 最具有重要性的普通条件的信息
warning 警告级别
err 错误级别,阻止某个功能或者模块不能正常工作的信息
crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert 需要立刻修改的信息
emerg 内核崩溃等严重信息
none 什么都不记录
注意:
日志等级从上到下,级别从低到高,记录的信息越来越少
(越是严重,紧急的级别,记录的信息也越少)
以上关于日志采集的配置信息,可以通过以下命令详细查看:
man 3 syslog
下图为例:
vim
第55行,我修改如下,将任意类型,任意等级的日志都存储到/var/log/filename文件中
远程日志同步
远程日志同步(将管理的许多电脑的日志都采集到同一台主机上)
1.日志发送方:
在/etc/rsyslog.conf中设定将日志远程发送给谁,以什么方式(udp:@ tcp:@@)
重启日志采集服务:systemctl restart rsyslog
如:*.info @172.25.254.206
当前主机的rsyslog服务采集所有类型的一般日志信息,并将它们以udp协议的传输方式发送给172.25.254.206主机
2.日志接收方:
在/etc/rsyslog.conf中设定接收日志的服务开启(日志接收模块,开启日志接收端口)
3.日志接收方:
设置关闭防火墙服务(软件),因为火墙(firewalld)是默认不可以接收日志的,要将它关闭
(命令:systemctl stop firewalld)
4.测试:
在发送方与接收方,双方都先将日志文件清空:
“> /var/log/messages”(为了能更直观地看到变化)
在日志的发送方,使用logger test命令,产生用于测试的日志信息
这时,在双方都可以看到该日志信息
设置日志查看格式
设置配置文件/etc/rsyslog.conf
在###RULES####下面一行,添加如下格式:
$template LOGFMT(格式名), “ %timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n”
%timegenerated% 显示日志时间
%FROMHOST-IP% 显示主机ip
%syslogtag% 日志记录目标
%msg% 日志内容
\n 换行
*.info /var/log/file ; LOGFMT
采用LOGFMT格式采集并保存一般级别的日志信息在/var/log/file中
$ActionFileDefaultTemplate LOGFMT 修改系统默认日志采集格式为LOGFMT
(当前系统所有日志文件的记录格式更改为LOGFMT)
下图为例:
下面为单独设置/var/log/file日志文件的保存格式为LOGFMT的执行结果
时间同步服务:
chronyd 这是一个特殊的服务,客户端与服务端是一样的
1.使用命令 date 11111111 将时间更改为11月11日11点11分
因为两台虚拟机的时间都是一样的系统时间,无法看出时间同步服务是否成功地配置了。所以我们要将服务端的时间更改一下
2.在服务端的设置:
vim /etc/chrony.conf
(1)将第22行的注释符号#取消(删除),变为如下:
allow 172.25.254.0/24
允许前24位与172.25.254.0相同的ip地址(通过chronyd)访问我
即,只有在同一个网段的主机,我才允许它访问我
(2)第29行的#删除,更改为:
local stratum 10
本机不同步任何主机的时间,本机作为时间源
保存并退出后,restart重启chronyd服务
查看火墙状态,确保火墙是关闭状态才能进行下一步
3.在客户端的设置:
同样的是vim /etc/chrony.conf
文件开头处有几个ip,表示的是要去同步的主机地址,删除剩下一个,改为服务端ip
再restart重启chronyd服务,立即就与服务端的时间同步了
4.测试:
设置完毕后,使用chroyc sources -v 命令测试,结果如下
管理系统时间:
timedatectl 不加参数,默认相当于timedatectl ststus
timedatectl status显示当前时间信息
timedatectl set-time “09:00”设定当前时间为09:00
timedatectl set-timezone “Asia/Shanghai”设定当前时区为亚洲/上海
timedatectl set-local-rtc 0|1 设定是否使用utc时间(0使用utc时间(不使用本地时间) 1使用rtc时间(本地时间))
timedatectl list-timezones 查看所支持的所有时区
RTC time 硬件时间
utc 计算方式 本地时间=国际时间+时区(如:东8区(比伦敦早8小时),西4区(比伦敦晚4小时))
(装了linux双系统后,windows系统时间不对,不是因为windows的问题,而是因为linux的默认时间方式是utc)
下图为例:
图一中可见,timedatectl 与 timedatectl status的执行效果是一致的
图二中,timedatectl set-time “09:00”与timedatectl set-timezone “Asia/Shanghai”的执行效果如图。
图三中,RTC in local TZ一项可见是否启用UTC时间
图四中,timedatectl list-timezones的执行效果如图。
journalctl查看系统日志的历史记录:
journalctl 日志查看工具
常用参数:
-n 3 查看最近3条日志
-p err 查看错误日志
-o verbose 查看日志的详细参数
–since 查看从什么时间开始的日志
–until 查看截至时间开始的日志
查看某一时间段的日志信息:journalctl --since “04:31:39” --until “04:31:40”
下图为例:
使用systemd-journald保存系统日志:
journalctl 默认只能显示内存中的日志文件,想要将内存中的日志文件保存到硬盘中,需要我们自己设定:
mkdir /var/log/journal
chgrp systemd-journal /var/log/journal
chmod g+s /var/log/journal
killall -1 systemd-journald
journalctl在启动的时候就是会自动检查是否有/var/log/journal 且 所属组为systemd-journald 且 g 有 s权限的文件夹,将日志信息保存到里面
之所以使用kill 是因为这个针对于命令,而systemctl restart 只针对服务,而查看可以知道journalctl是static的,不能用后者,只能用前者