目录
一、journald日志管理服务(方法较新)
实验环境的配置:两台虚拟机,并且都关闭了火墙,搭建好系统软件仓库
1、系统中要查看系统日志,就必须启动日志管理服务
注意:为了方便后续实验进行,需要先关闭火墙服务:<systemctl stop firewalld>
systemctl start journald.service | 启动日志管理服务 |
systemctl status systemd-journald | 管理日志采集的守护进程,负责把程序生成的日志放在指定位置(即下列路径) |
/run/log/journal | 日志默认存放路径 |
2、journalctl命令的用法:(用来分析日志)
(1)journalctl查看日志基本操作
journalctl -n 3 | 显示日志最新的三条 |
journalctl --since "2020-05-01 11:00:00" | 显示11:00后的日志 |
journalctl --until "2020-05-01 11:05:00" | 显示日志到11:05 |
(2)参数<-o>设定日志的显示方式
journal -o short | 经典模式显示日志 |
journal -o verbose | 显示日志的全部字节 |
journal -o export | 适合传出和备份的二进制格式 |
journal -o json | js格式显示输出 |
(2)参数<-p>设定显示指定级别的日志
journalctl -p 0 #按日志级别0查看日志
#0 emerg 系统的严重问题日志
#1 alert 系统中立即要更改的信息
#2 crit 严重级别会导致系统软件不能正常工作
#3 err 程序报错
#4 warning 程序警告
#5 notice 重要信息的普通日志
#6 info 普通信息
#7 debug 程序报错信息
(3)journalctl其他常用用法
journalctl -F PRIORITY | 查看可控日志级别 |
journalctl -u sshd | 查看指定的服务日志 |
journalctl --disk-usage | 查看日志大小(/run/log/journal/****/system.journal) |
journalctl --vacuum-size=1G | 设定日志存放大小(超过1G后会删除最早的日志) |
journalctl --vacuum-time=1W | 日志在系统中最长存放时间(超过1周后会删除最早的日志) |
journalctl -f | 监控日志 |
(4)journalctl添加指定元素查找日志
先通过<journalctl -o verbose>查看日志的详细信息,然后可以根据显示出来的元素放在journalctl后查询。(也就是任何一个下划线开始的命令,都可以通过journalctl查询相关日志)
3、用journald服务永久存放日志
系统中默认日志在</run/log/journal>中,但也只是临时保存本次开机以来的日志信息,系统重启以后会丢失。所以为了保存历史日志,就需要把产生的日志保存到指定位置。(也就是说系统重启会丢失/run下的日志文件,换一个目录保存即可)
为了可以永久保存日志,分以下几个步骤:
(1)mkdir /var/log/journal #新建一个文件夹用来保存日志
(2)chgrp systemd-journal /var/log/journal #更改此文件夹的所有人所有组
(3)chmod 2775 /var/log/journal #更改此文件夹的读写权限
(4)systemctl restart systemd-journald.service #重启日志服务
首先新建一个文件夹用来存放日志文件,接着将这个目录的所有组更改为<systemd-journal>服务的,再然后改变这个目录的权限,即给予所有组中的成员满权限;最后重启日志服务,可以看到原本的</run/log>目录已经空了,意味着经过调整后,系统的日志已经保存在新的位置</var/log>了,新位置的日志文件不会因为系统关机而丢失。
当日志服务重启后,日志的存放路径会被指定在</var/log/journal >
测试步骤:
1、在操作以上步骤之前查看日志
2、重启系统
3、再次查看日志
4、可以看到日志是不会被保存的,只能看到系统重启之后的日志
5、晚上上述操作后,重启系统可以看到重启以前的日志,日志是被保存下来的
当前系统时间是10:01分,当重启系统后,10:01分以前的日志理论上会被清理,但是经过我们重新更改日志的存储位置,重启系统后可以看到10:01以前的日志就意味着日志永久保存了。
重启后,查看文件ID, 和重启之前的文件ID一样,证明这个文件是一致存在的,不是新建的。
ls -i /var/log/journal/*******/system.journal
#查看日志文件的ID等基本信息
用<journalctl>命令查看日志,可以看到一天之前的日志记录,证明日志永久保存成功。
二、rsyslog日志管理服务(方法较传统)
服务名称:<rsyslog.service>
配置文件:</etc/rsyslog.conf>
只有开启了rsyslog服务后,系统日志才会记录到相应位置
1、rsyslog服务的日志采集位置
/var/log/messages | 系统服务日志,常规信息,服务报错 |
/var/log/secure | 系统认证信息日志 |
/var/log/maillog | 系统邮件日志信息 |
/var/log/cron | 系统定时任务信息 |
/var/log/boot.log | 系统启动日志信息 |
2、rsyslog日志采集规则
查看配置文件</etc/rsyslog.conf>,在第38行的“RULES”开始就是rsyslog服务采集日志的规则
(1)采集规则的格式:
日志类型.日志级别 | 日志存放路径 | |
* . * | /var/log/westos | 把系统中所有级别的日志存放到westos中 |
* . *;authpriv.none | /var/log/westos | 把系统中所有级别的日志存放到westos中,但是authpriv不存放到westos中 |
(2)日志类型:
auth | 用户认证 | 邮件 | |
authpriv | 服务认证 | news | 系统更新信息 |
cron | 时间任务 | user | 用户 |
kern | 内核类型 |
(3)日志级别:
debug | 程序排错信息 | crit | 严重级别会导致系统不能工作 |
info | 程序常规运行信息 | alert | 系统中立即要更改的信息 |
notice | 重要信息的普通日志 | emerg | 系统的严重问题日志 |
waring | 程序警告 | none | 不采集 |
err | 程序报错 |
第一步:
在“rsyslog”的配置文件里,添加一行,如下图所示。重启rsyslog服务后,会在</var/log/>目录下新增这个“westos”文件。
使用以下命令将这个文件监控起来,执行远程登录服务,文件中并没有记录,意味着配置文件中设置的“服务认证”将不会被记录了在这个文件里。
tail -f /var/log/westos #显示文件中的最新内容
第二步:
在“rsyslog”的配置文件里,添加一行,如下图所示。当配置文件中的内容更改为< * . *>则表示所有日志都记录在“/var/log/westos”文件中。
用其他主机远程登录一下,可以看到文件中的日志对<172.25.254.222>的远程主机的登录状态做了一次记录。
3、日志的远程同步
在企业中,需要对成百上千个主机的日志进行分析,而这些主机的日志文件默认都在自己的本地保存。为了便于分析,就需要把这些日志文件自动同步到一个服务器中。
~~~~~~~~未完待续~~~~~~~~~~~~
三、timedatectl设定
1、<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时间计算方式 |
测试:
timedatectl #显示当前时间状态
RTC:硬件时间
UTC:硬件时间+所在时区
2、更改时间配置
(1)设定时间计算方式。核心文件:</etc/adjtime>
timedatectl set-local-rtc 0 | 1 #设置系统为RTC时间,1表示用,0表示不用
警告:如果系统启用了RTC时间方式,时间握手可能会有影响。因为每个机器的硬件时间不全相同,如果和其他主机进行交互的过程中两者时间对不上,那么交互过程可能执行不了。
(2)设定系统时区
timedatectl list-timezone #查询可更改的时区列表
timedatectl set-timezone "Asia/Tokyo" #更改系统时区
(3)设定系统时间
timedatectl set-time "2011-01-01 11:11:11" #手动设定时间
在手动设定时间时,需要先关闭<chronyd.service>服务,这个服务是负责时间与其他主机进行同步的,只有关闭时间同步服务才能手动设置时间。
四、时间同步服务
在机房中设置多个机器的时钟同步,就需要把一台主机的时间共享出来,让其他主机和这台主机的时间保持同步。
实验环境:1.时间源, 2.待同步主机
第一步:关闭时间源的火墙
第二步:配置文件
vim /etc/chrony.conf #编辑时间同步服务的配置文件
更改配置文件中第23行和第26行的内容。“allow 0.0.0.0/0”表示允许所有人;“local startum 10”表示本机作为时间源允许时间被别人同步。
第三步:重启时间同步服务
systemctl restart chronyd #重启时间同步服务
第四步:客户端连接时间源
在客户端的</etc/chronyd.conf>文件的第三行,将时间源的IP地址修改好。
第五步:客户端重启<chronyd>服务
客户端编辑好文件后,重启<chronpd>服务,可以看到系统时间已经和时间源同步。
第六步:查看时间效果
chronyc source -V #查看时间同步详情
五、本章总结
1、journal日志的永久保存,说白了就是把日志文件换个地方存储。因为原本的日志文件存储位置每次关机都会清理,换个不会被清理的地方,就可以永久保存日志了。
2、两者不同:rsyslog日志管理服务会把日志分门别类的放在不同目录下,journalctl日志管理服务会把日志统一放在一个目录下。
3、rsyslog和journalctl都只有在服务开启的时候才会对日志进行采集,服务关闭后将不会有日志生成。
4、系统时间的计算方式如果选择RTC的话,可能会导致与其他主机交互时时间不一致而无法握手。所以一般都使用UTC时间。