系统日志
配置文件: /etc/rsyslog.conf
系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。
常用日志类型与日志级别
类型
auth 用户登陆日志(pam产生的日志)
authpriv 服务认证日志(sshd认证)
kern 内核日志
corn 定时任务日志
lpr 打印机日志
mail 邮件日志
news 新闻
user 用户相关程序日志
local 1-7 用户自定义日志
级别
debug 系统调试信息
info 常规信息
warning 警告信息
err 报错(级别低,阻止了某个软件不能正常工作)
crit 报错(级别高,阻止了整个软件或整个系统不能正常工作)
alert 需要立即修改信息
emerg 内核崩溃
none 不采集任何日志信息
格式
日志类型.日志级别 日志存放文件
例如:
auth.debug 文件名称 ##用户登陆日志的调试信息
auth.* 文件名称 ##用户登陆日志的所有信息
*.* 文件名称 ##所有日志类型的所有级别的信息
vim /etc/rsyslog.conf
auth.debug /var/log/westos ###将用户登录日志的调试信息保存在/var/log/westos文件中
. /var/log/log.all ####将所有类型日志的所有级别信息保存在/var/log/log.all文件中
系统常用日志
/var/log/messages 所有日志级别的常规信息(不包含邮件,服务认证,定时任务)
/var/log/maillog 邮件日志
/var/log/secure 服务认证日志
/var/log/cron 定时任务日志
远程日志同步
需要两台节点
节点一:日志发送方server1 172.25.66.11
节点二:日志接收方server2 172.25.66.12
在日志发送方
vim /etc/rsyslog.conf
. @172.25.66.12 #日志接受方地址
systemctl restart rsyslog
在日志接收方
vim /etc/rsyslog.conf
编辑第15、16行
15 $ModLoad imudp 日志接受程序
16 $UDPServerRun 514 接收程序接口
systemctrl restart rsyslog.srvice
systemctrl stop firewalld 关闭防火墙
systemctrl disabl firewalld 关闭防火墙开机自启动
测试:
清空日志接受方的日志记录 > /var/log/message
在日志发送方:
在日志接受方可以查看到日志发送方的日志
cat /var/log/message
定义日志采集格式
vim /etc/rsyslog.conf
$template 格式名称(自定义),"日志采集格式"
*.info;mail.none;authpriv.none;cron.none /var/log/messages;westos
$template westos,"%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n"
%timegenerated% 日志生成时间
%FROMHOST-IP% 日志来源主机的ip
%syslogtag% 日志生成程序
%msg% 日志内容
systemctl restart rsyslog
测试:
journalctl
journalctl ##日志查看工具,直接查看内存中的日志
journalctl -n 3 查看最新三条日志
journalctl -p err 查看报错日志
journalctl -f 日志监控 用ctrl+c 结束监控
journalctl --since --until 查看一个时间区间的日志
journalctl -o verbose 产看日志详细参数
对systemd-journald管理
默认此程序只负责对日志进行查看而不对日志进行保存和采集,那么在关机后在开机,对日志进行查看,只能查看到开机后的日志,系统之前的日志是因为保存在内存中的,所以关机后就被清空了,那么在开机是用journalctl看不到的
如何让systemd-journald保存日志到硬盘中
(1)mkdir /var/log/journal
(2)chgrp systemd-journal /var/log/journal
(3)chmod 2755 /var/log/journal
(4)killall -1 systemd-journald
测试:
journalctl 重启之前查看日志时间
date 查看当前时间
reboot 重启
journalctl 重启后查看日志,看重启之前的日志是否存在,存在即为正确
系统中的at延时任务
at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。
AT Time中的时间表示方法
-----------------------------------------------------------------------
时 间 例子 说明
-----------------------------------------------------------------------
Minute at now + 5 minutes 任务在5分钟后运行
Hour at now + 1 hour 任务在1小时后运行
Days at now + 3 days 任务在3天后运行
Weeks at now + 2 weeks 任务在两周后运行
Fixed at midnight 任务在午夜运行
Fixed at 10:30pm 任务在晚上10点30分
Fixed at 23:59 12/31/2018 任务在2018年12月31号23点59分
参数详解
at [-V] [-q x] [-f file] [-mldbv] time
at -c job ...
atq [-V] [-q x]
atrm [-V] job ...
-V : 印出版本编号
-q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c... z 以及 A, B, ... Z 共 52 个
-m : 即使程序/指令执行完成后没有输出结果, 也要寄封信给使用者
-f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入 网络应用
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已经完成但尚未删除的指定
举例:
at now+1min
at> touch /mnt/file{1…5}
ctrl+d
五分钟之后,在/mnt目录创建file1-file5五个文件
at黑白名单
/etc/at.deny ##黑名单
/etc/at.allow ##白名单本身不存在,创建后黑名单失效,除了超级用户外的其他用户都不能使用at作业,除非将用户加入白名单
vim /etc/at.deny 将指定用户加入黑名单
vim /etc/at.allow 将指定用户加入白名单