一.系统日志的分类
1日志类型分类
类型 | 说明 |
---|---|
auth | pam产生的日志 |
authpriv | ssh,ftp等登录信息的验证信息 |
cron | 时间任务相关 |
kern | 内核 |
Ipr | 打印 |
邮件 | |
mark(syslog)-rsyslog | 服务内部的信息,时间标识 |
news | 新闻组 |
user | 用户程序产生的相关信息 |
uucp | unix to unix copy, unix主机之间相关的通讯 |
local 1~7 | 用户自定义的相关设备 |
2.日志级别分类
级别 | 说明 |
---|---|
debug | 有调式信息的,日志信息最多 |
info | 一般信息的日志,最常用 |
notice | 最具有重要性的普通条件的信息 |
warning | 警告级别 |
err | 错误级别,阻止某个功能或者模块不能正常工作的信息 |
crit | 严重级别,阻止整个系统或者整个软件不能正常工作的信息 |
alert | 需要立即修改的信息 |
emerg | 内核崩溃等严重信息 |
none | 什么都不记录 |
从上到下级别从低到高,记录信息越来越少 | 详细的可以查看手册 man 3 syslog |
二.日志的采集
1.rsyslog 的意义
此服务是用来采集系统日志的,他不产生日志,只是起到采集作用, Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。
大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd 或/etc/rsyslog.d,默认配置文件为 /etc/syslog.conf 或 rsyslog.conf,任何希望生成日志的程序都可以向 syslog 发送信息。
Linux系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信息,这些信息对管理员了解系统的运行状态是非常有用的,所以应该把它们写到日志文件中去。完成这个过程的程序就是syslog。syslog可以根据日志的类别和优先级将日志保存到不同的文件中。
例如,为了方便查阅,可以把内核信息与其他信息分开,单独保存到一个独立的日志文件中。默认配置下,日志文件通常都保存在“/var/log”目录下。
2.rsyslog的管理
/var/log/messages ##服务信息日志
/var/log/secure ##系统登陆日志
/var/log/cron ##定时任务日志
/var/log/maillog ##邮件日志
/var/log/boot.log ##系统启动日志
指定日志采集路径
什么类型的日志.什么级别的日志 主配置文件为/etc/rsyslog
/var/log/file ##日志采集规则
下面举一个例子
* . * /var/log/file ##把所有类型的所有级别日志采集
打开配置 文件后写入
3.日志的远程同步
首先我们需要打开两台设置好网络的虚拟机,令server作为发送端,令desktop作为接受端
分别改名为server 和client
在发送端:
vim /etc/rsyslog.conf
* . * @172.25.254.xxx(接受端IP)
@ 表示udp协议发送,@@ 表示tcp协议发送
UDP:速度快,只需一次握手,安全性和稳定性差
TCP:与UDP相比,速度较慢,需三次握手,安全性和稳定性较好
systemctl restart rsyslog ##重启服务
在接受端
vim /etc/rsyslog.conf
15 $ModLoad imudp ##日志接受模块
16 $UDPServerRun 514 ##开启接收端口
systemctl restart rsyslog ##重启服务
systemctl stop firewalld ##关闭防火墙
测试:
两边都执行清除日志命令:
> /var/log/messages
在发送端
logger test
cat /var/log/messages ##查看是否有test
在接受端
cat /var/log/messages ##查看是否同步
因为可能影响结果可以将 /etc/rc.d/rc.local 清空后重启
1.> /etc/rc.d/rc.local ##清空
2.roboot ##重启
三.日志采集格式
如果想要查看日志的具体信息,如时间、ip
需要设置日志采集格式
vim /etc/rsyslog.conf ##编辑配置文件
在配置文件写入以上内容
$template LOGFMT,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
%timegenerated% ##显示日志时间
%FROMHOST-IP% ##显示主机ip
%syslogtag% ##日志记录内容
%msg% ##日志内容
\n ##换行
. /var/log/westos;LOGFMT
systemctl restart rsyslog ##重启服务
cat /var/log/westos ##查看
四.时间同步服务
服务名称
chronyd
下面进行一个实验来直观的对此现象进行验证
1.在服务端
vim /etc/chrony.conf
22 allow 172.25.254.0/24 ##允许哪些客户端来同步本机时间
29 local stratum 10 ##本机不同步任何主机时间,本机作为时间源
systemctl restart chronyd.service ##重新启动服务 使配置文件生效
2.在客户端
vim /etc/chrony.conf
将3~6行写为同步服务端主机时间
server 172.25.254.xxx(服务端ip) iburst ##本机立即同步服务端主机的时间
systemctl restart chronyd ##重启服务
systemctl stop firewalld ##关闭火墙
3.测试
在服务端:
date ## 查看时间
在客户端:
先将时间改为1111111111
date 1111111111
chronyc sources -v
即可以看到时间被同步
#####timedatectl命令######
timedatectl ##管理系统时间
timedatectl status ##显示当前时间信息
set-time ##设定当前时间
set-timezone ##设定当前时区
set-local-rtc 0|1 ##设定是否使用utc时间
list-timezone ##查看支持的所有时区
示例将时间改为北京时间11:11:11
六.journal
1.journalctl ##日志查看工具
-n 3 ##查看最近3条日志
-p err ##查看错误日志
-o verbose ##查看日志详细参数
–since “hh:mm:ss” ##查看从什么时间开始的日志
–until “hh:mm:ss” ##查看到什么时间为止的日志
示例:
查看从2019-1-17 09:14:00到2019-1-17 09:16:00的日志
2.如何使用systemd-journald保存系统日志
默认systemd-journald是不保存系统日志到硬盘的
那么关机后再次开机只能看到本次开机之后的日志
上次关机之前的日志是无法查看的
而下列命令可以保存系统日志,但一般不建议使用,因为这会把硬盘填满。
mkdir /var/log/journal
chgrp systemd-journal /var/log/journal
chmod g+s /var/log/journal
killall -l systemd-journald
ls /var/log/journal ##第一次查看
stat /var/log/journal/946cb0e817ea4adb916183df8c4fc817
reboot ##重启虚拟机
ls /var/log/journal ##再次查看
stat /var/log/journal/946cb0e817ea4adb916183df8c4fc817