linux中的系统日志

  • 系统日志
  • 远程日志同步
  • 设置日志查看格式
  • 时间同步服务:
  • 管理系统时间:
  • journalctl查看系统日志的历史记录:


系统日志

日志采集服务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文件中

系统日志储存在ES是什么意思 系统日志保存在哪里_日志采集

远程日志同步

远程日志同步(将管理的许多电脑的日志都采集到同一台主机上)

1.日志发送方:

在/etc/rsyslog.conf中设定将日志远程发送给谁,以什么方式(udp:@ tcp:@@)

重启日志采集服务:systemctl restart rsyslog

如:*.info @172.25.254.206

当前主机的rsyslog服务采集所有类型的一般日志信息,并将它们以udp协议的传输方式发送给172.25.254.206主机

系统日志储存在ES是什么意思 系统日志保存在哪里_日志文件_02


系统日志储存在ES是什么意思 系统日志保存在哪里_日志文件_03


2.日志接收方:

在/etc/rsyslog.conf中设定接收日志的服务开启(日志接收模块,开启日志接收端口)

系统日志储存在ES是什么意思 系统日志保存在哪里_系统日志储存在ES是什么意思_04


3.日志接收方:

设置关闭防火墙服务(软件),因为火墙(firewalld)是默认不可以接收日志的,要将它关闭

(命令:systemctl stop firewalld)

系统日志储存在ES是什么意思 系统日志保存在哪里_系统日志_05


4.测试:

在发送方与接收方,双方都先将日志文件清空:

“> /var/log/messages”(为了能更直观地看到变化)

在日志的发送方,使用logger test命令,产生用于测试的日志信息

这时,在双方都可以看到该日志信息

系统日志储存在ES是什么意思 系统日志保存在哪里_7-17_06


系统日志储存在ES是什么意思 系统日志保存在哪里_日志采集_07

设置日志查看格式

设置配置文件/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的执行结果

系统日志储存在ES是什么意思 系统日志保存在哪里_日志文件_08


系统日志储存在ES是什么意思 系统日志保存在哪里_系统日志储存在ES是什么意思_09


系统日志储存在ES是什么意思 系统日志保存在哪里_日志文件_10


系统日志储存在ES是什么意思 系统日志保存在哪里_系统日志_11

时间同步服务:

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服务

查看火墙状态,确保火墙是关闭状态才能进行下一步

系统日志储存在ES是什么意思 系统日志保存在哪里_日志采集_12


系统日志储存在ES是什么意思 系统日志保存在哪里_系统日志_13


系统日志储存在ES是什么意思 系统日志保存在哪里_系统日志储存在ES是什么意思_14


3.在客户端的设置:

同样的是vim /etc/chrony.conf

文件开头处有几个ip,表示的是要去同步的主机地址,删除剩下一个,改为服务端ip再restart重启chronyd服务,立即就与服务端的时间同步了

系统日志储存在ES是什么意思 系统日志保存在哪里_7-17_15

4.测试:

设置完毕后,使用chroyc sources -v 命令测试,结果如下

系统日志储存在ES是什么意思 系统日志保存在哪里_日志文件_16

管理系统时间:

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的执行效果如图。

系统日志储存在ES是什么意思 系统日志保存在哪里_系统日志_17


系统日志储存在ES是什么意思 系统日志保存在哪里_日志文件_18


系统日志储存在ES是什么意思 系统日志保存在哪里_7-17_19


系统日志储存在ES是什么意思 系统日志保存在哪里_7-17_20

journalctl查看系统日志的历史记录:

journalctl 日志查看工具
常用参数:
-n 3 查看最近3条日志
-p err 查看错误日志
-o verbose 查看日志的详细参数
–since 查看从什么时间开始的日志
–until 查看截至时间开始的日志

查看某一时间段的日志信息:journalctl --since “04:31:39” --until “04:31:40”

下图为例:

系统日志储存在ES是什么意思 系统日志保存在哪里_系统日志_21


系统日志储存在ES是什么意思 系统日志保存在哪里_系统日志_22

系统日志储存在ES是什么意思 系统日志保存在哪里_日志采集_23


系统日志储存在ES是什么意思 系统日志保存在哪里_日志采集_24


系统日志储存在ES是什么意思 系统日志保存在哪里_系统日志储存在ES是什么意思_25


使用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的,不能用后者,只能用前者