文章目录
一、rsyslog在系统中的作用
进程和操作系统内核需要能够为发生的事件记录日志,这些日志可用于系统审核和问题的故障排除,一般这些日志永久存储 /var/log目录中。系统文件记录信息如下表:
日志文件 | 用途 |
---|---|
/var/log/messages | 大多数系统日志信息记录在此 |
/var/log/secure | 安全和身份认证相关的消息和错误的日志文件 |
/var/log/maillog | 与邮件服务器相关的日志文件 |
/var/log/cron | 与定时任务相关的日志文件 |
/var/log/boot.log | 与系统启动有关的日志文件 |
系统中的日志本是产生在内存上的,那么怎么将内存上的日志信息放到硬盘里呢—rsyslog
rsyslog不是系统日志的产生者,只是系统日志的搬运工,只是采集日志的一个服务(rsyslog)。
二、rsyslog的日志采集策略
主配置文件 /etc/rsyslog.conf
vim /etc/rsyslog.conf #修改采集策略的主配置文件
负责采集规则的部分:RULES (38)
增加采集规则为 " * . * " 第一个 * 指 日志类型,第二个 * 指日志级别
日志类型有:
类型 | 解释 |
---|---|
auth | pam产成的日志 |
authpriv | ssh,ftp等登陆信息的验证信息 |
cron | 时间任务相关 |
kern | 内核 |
lpr | 打印 |
邮件 | |
mark(syslog)-rsyslog | 服务内部的信息,时间标识 |
news | 新闻组 |
user | 用户程序产生的相关信息 |
uucp | unix to unix copy, unix主机之间相关的通讯 |
local1~7 | 自定义的日志设备 |
日志级别有:
备注:从上到下,级别从地到高,记录的信息越来越少;
详细可以见手册: man 3 syslog。
级别 | 解释 |
---|---|
debug | 有调试信息的,日志信息最多 |
info | 一般信息的日志,最常用 |
notice | 最具有重要性的普通条件的信息 |
warning | 警告级别 |
err | 错误级别,阻止某个功能或者模块不能正常工作的信息 |
crit | 严重级别,阻止整个系统或者整个软件不能正常工作的信息 |
alert | 需要立刻修改的信息 |
emerg | 内核崩溃等严重信息 |
none | 什麼都不记录 |
第一条规则:把任何日志都放到/var/log/westos下。
第二条规则:把登陆信息放到/var/log/westos1下。
重启服务并测试:
systemctl restarte rsyslog.service #重启日志采集服务
cat /var/log/westos #查看日志
su - westos #切换下用户,使产生登陆消息
exit
cat /var/log/westos1 #查看登陆日志
三、日志的远程同步
man 5 rsyslog.conf #查看手册对远程同步日志的描述
/remote 回车
1. 对于发送端的设置
将111虚拟机作为发送方,修改其配置文件:vim /etc/rsyslog.conf(使用UDP发送)
2. 对于接收端的设置
将本机(192.168.1.16)设置为接收端,修改其配置文件:vim /etc/rsyslog.conf(使用UDP接收)
重启rsyslog服务后查看514端口是否打开。
systemctl restart rsyslog.service #重启服务
netstat -antlupe | grep rsyslog #查看端口
3. 设置接收端防火墙打开514端口或者直接关闭防火墙
firewall-cmd --add-port 514/tcp #设置防火墙打开514
或者直接关闭
systemctl stop firewall.service #直接关闭火墙
测试结果:
111号发送
logger xxx #测试命令,直接向日志里写xxx
222号接收
主机也接收(两个网卡都设置了,所以接收两遍)
四、自定义日志采集格式
定义日志采集格式
示例:$template WESTOS, “%FROMHOST-IP% %TIMEGENERATED% %FROMHOT-IP% %syslogtag% %msg%\n”
WESTOS ##格式名称
%FROMHOST-IP% ##日志来源主机
%timegenerated% ##日志生成时间
%syslogtag% ##日志生成服务
%msg% ##日志内容
\n ##换行
在接收方设置采集格式,修改其配置文件:vim /etc/rsyslog.conf
五、系统时间调整工具timedatectl
timedatectl ##管理系统时间
timedatectl status ##显示当前时间信息
timedatectl set-time “2020-11-11 11:11:11” ##设置当前时间
timedatectl list-timezones ##列出支持的所有时区
timedatectl set-timezone "Asia/Shanghai" ##设置当前时区为“亚洲/上海”
timedatectl set-local-rtc 0|1 ##设定系统时间计算方式,0表示使用utc时间计算方式
六、时间同步服务
服务名称:chronyd.service
配置文件:/etc/chrony.conf
- 对被同步的主机设置(server)
2. 对同步机的设置(client)
七、journalctl命令的用法
rsyslog采集日志写入硬盘,硬盘若不够存放怎么办?
如果只想查看日志的话用journald.
首先查看自己的服务是否安装。
没安装,安装下。
journalctl命令使用 (默认采集内存的日志,关机消失)
journalctl
- -n 3 ##显示日志最新3条
- --since “2020-11-2 9.50:00” ##显示11.2号9.50之后的日志
- --until "2020-11-2 9.50:00" ##显示到9.50号的日志
- -o ##设置日志的显示方式
- short ##经典模式显示日志
- json ##js格式显示日志
- verbose ##显示日志的全部字节
- export ##适合传出和备份的二进制格式
- -p ##显示制定级别的日志
- 0 emerg ##系统的严重问题日志
- 1 alert ##系统中立即要更改的信息
- 2 crit ##严重级别会导致软件不能正常工作
- 3 err ##程序报错
- 4 warning ##程序警告
- 5 notice ##重要信息的普通日志
- 6 info ##普通信息
- 7 debug ##程序排除错误信息
- -F PRIORITY ##查看可控日志级别
- -u sshd ##指定查看服务
- --disk-usage ##查看日志大小
- --vacuum-size=1G ##设定日志存放大小
- --vacuum-time=1W ##日志在系统中最长存放时间
- -f ##监控日志
八、利用systemd-journal采集日志
- 系统中日志默认存放在/run/log/journal中,默认方式在系统重启之后日志会被清理。
- 如果想要永久保存日志信息,可以做如下操作
mkdir /var/log/journal
chgrp systemd-journal /var/log/journal
chmod 2775 /var/log/journal
systemctl restart systemd-journal.service
-当服务重启后,日志存放路径就会被定制到:/var/log/journal
到这里日志就被保存下来了。