Linux系统中的日志管理
1.journald日志服务
服务名称:systemd-journald.service
系统中的日志是由每个程序自己生成的,生成后日志在内存中。对日志进行查看,可以使用用到systemd-journald.service服务,该服务默认情况是用来查看日志的
默认日志存放路径:/run/log
如图查看该服务的状态:
2.1 journalctl命令的用法
-n 3 ——日志的最新3条,该数字可根据自己的需求输入
–since “2021-05-22 12:00:00” ——显示12:00后的日志
–until “2021-05-22 11:05:00” ——显示日志到11:05; journalctl–since "10:00:00"也可以表示今天的该时间之后的日志;since和unit可以连起来,表示查看一个时间段的日志;可以不写前面具体的年月日,默认是今天
-o short ——经典模式显示日志
-o verbose ——显示日志的详细信息
-o export ——适合传出和备份的二进制格式
-o json ——js格式显示输出,适合传出和备份的二进制格式
-p ——显示指定级别的日志,级别越低,即数字越小的,严重性越高
-p 0 emerg 系统的严重问题日志,会导致系统崩溃
-p 1 alert系统中立即要更改的信息,严重时会导致系统崩溃
-p 2 crit 严重级别会导致系统软件不能正常工作
-p 3 err 程序报错
-p 4 warning 程序警告
-p 5 notice 重要信息的普通日志
-p 6 info 普通信息
-p 7 debug 程序排错信息
-F PRIORITY ——查看可控日志级别 ,234567是可控的,0和1不可控
-u sshd ——查看某个服务的日志
- -disk-usage ——查看日志大小 ,用了多少硬盘的空间存储日志
- -vacuum-size=1G ——设定日志存放大小,即日志回滚,大小超过多少时,删除一次
–vacuum-time=1W ——日志在系统中最长存放时间,多久删除一次
-f ——监控日志。监控时,会生成一封,产生一封日志;也就是说,用客户端登陆服务器端,只要日志监控是开的,就会登陆一次,产生一次日志
journalctl _PID=10924 ——查看日志详细信息,下划线后面部分可自己替换。journalctl -o verbose 进入后,可以看到的内容,都可以直接加在下划线后面进行查看
关键字搜索:显示14:00之后的日志
适合传出和备份的二进制格式:
显示日志全部字节:
经典模式显示日志:
显示14:00-14:07之间的日志:
js格式显示日志:
显示3行日志:
这里的实验报错是因为,在虚拟机里做的实验,没有硬件设施,他会报告没有硬件可能就会导致软件无法正常运行查看sshd服务的日志
查看日志大小
查看可控日志级别 ,234567是可控的,0和1不可控:
自动回滚(下图命令表示超过1G自动删除最前边的日志)
监控日志
2.2 用journald服务永久存放日志
系统中默认日志在:/run/log/journal中,默认方式在系统重启后日志会被清理
永久保存方法:
做完以上操作,并重启服务后,日志存放路径会被制定到/var/log/journal目录下.
3.rsyslog日志服务
服务名称:rsyslog.service
配置文件:/etc/rsyslog.conf
journalctl日志服务与rsyslog日志服务的区别:
journalctl服务会把日志信息采集到/run/log目录下;而rsyslog会把日志采集到/var/log中,该目录下的日志会自动分类,这是因为rsyslog服务是开启的,但即使该服务没开,也不会影响日志的生成。该服务的功能主要是,把日志采集到硬盘中,是个日志采集工具,而不是生成日志工具
/var/log/messages 系统服务日志,常规信息,服务报错
/var/log/secure 系统认证信息日志
/var/log/maillog 系统邮件日志信息
/var/log/cron 系统定时任务信息
/var/log/boot.log 系统启动日志信息
3.1自定义日志采集路径
日志类型
auth 用户认证
authpriv 服务认证
cron 时间任务
kern 内核类型
mail 邮件
news 系统更新信息
user 用户
日志级别
debug 程序排错信息
info 程序常规运行信息
notice 重要信息的普通日志
waring 程序警告
err 程序报错
crit 严重级别会导致系统软件不能正常工作
alert 系统中立即要更改的信息
emerg 系统的严重问题日志
none 不采集
如何自定义:编辑vim /etc/rsyslog.conf文件中编写规则
文件中*.*表示:任意类型的任意级别的日志
修改之后,要systemctl restart rsyslog.service,重启这个服务,才能查看建立的文件
3.2 日志的远程同步
将服务器上的日志,推送到客户端主机上,westosb作为接受方,westosa发送日志。可以使用man 5 rsyslog.conf 查看该文件的详细用法,注意远程主机用remote这个关键字,进入如下图,可见有通信模式:UDP(速度更快,只负责投递,不管是否接收,可用udp做日志同步)、TCP(最稳定,三次握手,四次挥手)、RELP:
在接收端主机打开端口(vim /etc/rsyslog.conf ):
重启后,查看端口是否打开:
在发送端写想要发送的日志类型及级别,@172.25.254.137(发送给谁):
发送端写:hello westos
接收端收到hello westos:
3.3 更改日志采集格式
定义日志采集格式:eg:$template WESTOS_FORMAT, “%FROMHOST-IP% %timegenerated% %FROMHOST-IP% %syslogtag%%msg%\n”
这个格式改好了之后,要把你起的格式名称加到采集路径的后面,表示在采集该日志时,用的是WESTOS_FORMAT格式,eg:*.info;mail.none;authpriv.none;cron.none /var/log/messages;WESTOS_FORMAT
注意:$template是固定不变的;WESTOS_FORMAT必须是大写,代表了一种日志采集的格式名称,可以自己确定该名称;若只写%FROMHOST-IP%这一个参数,代表采集日志的时候只会显示 ip;
更改的是接收方,在vim /etc/rsyslog.conf文件中作出更改;
改完格式,重启服务,清空日志,再用发送方发送,查看效果。
命令:
WESTOS_FORMAT ——格式名称
%FROMHOST-IP% ——日志来源主机IP
%timegenerated% ——日志生成时间
%syslogtag% ——日志服务来源
%msg% ——日志内容
\n ——换行
编辑接收方vim /etc/rsyslog.conf文件,格式名称为TEST,参数为日志来源主机IP:
如果在im /etc/rsyslog.conf文件中输入错误,重启后查看日志会报错(下图所示):
4.timedatectl命令
timedatectl set-time “2020-05-22 16.43.00” ——设定系统时间
timedatectl list-timezones ——显示系统的所有时区
timedatectl set-timezone “Asia/Shanghai” ——设定系统时区
timedatectl set-local-rtc 0 ——1
timedatectl命令可以单独使用,查看时间相关信息(CST表示本地当前时间;UTC表示伦敦时间(现在计算机计算时间方式就是UTC时间计算方式,即把硬件时间初始化为伦敦时间,而系统时间的计算方法是:硬件时间+时区值);RTC表示硬件时间)
设定系统时间:
5.时间同步服务
即把多台主机的时间同步,可以让一台主机进行时间共享,然后其他主机同步时间
服务名称:chronyd.service
配置文件:/etc/chrony.conf
在企业6、3、4版本中,用的是ntp服务,在7之后,产生了chronyd.service服务,其本质是一样的
使用westosa作为服务端共享时间,westosb作为客户端
服务端进入/etc/chrony.conf, 修改内容输入 allow 0.0.0.0/0表示所有人都可以访问,local stratum 10表示本地作为时间源,把它也开放即可客户端
可以使用chronyc 命令查看时间效果,即在客户端输入chronyc sources -v命令(第一行显示,*=服务器;^表示已经同步过时间,所以分割线下面表示从236服务器端同步过时间):