h
每个程序都能生成自己的日志,日志生成在内存中,不能永久保存,为方便系统管理由专门的程序采集保存在硬盘中
rsyslog服务就是负责收集日志自动保存到指定文件中
文章目录
日志采集:rsyslog服务
配置文件相关概念
-
rsyslog服务:只是用来收集日志,本身不能替代程序产生日志;此服务开启时,用来采集系统日志,是根据配置文件规则进行管理
-
rsyslog服务配置文件
/etc/rsyslog.conf
-
查看配置文件
man 5 rsyslog.conf
-
优点:自动采集
-
缺点:占资源
-
配置文件三个区域
- 【MODULES】加载模块,模块类似插件概念
- 【GLOBAL DIRECTIVES 】全局指令,设置了rsyslog的特性,如消息显示格式,内容等
- 【RULES】加载日志采集规则
【RULES】中配置采集规则
配置文件中:
采集日志配置规则【RULES】
格式:日志类型.日志级别 日志目录
系统已规定日志目录
/var/log/messages |系统服务信息日志
/var/log/boot.log |系统启动日志
/var/log/secure |系统登陆认证日志
/var/log/cron |定时任务日志
/var/log/illog |邮件日志
日志类型 | 作用 |
---|---|
auth | 系统登陆、用户认证产生的日志 |
authpriv | ssh、ftp等登陆信息的验证信息 |
cron | 时间人物相关信息 |
kern | 内核 |
lpr | 打印(现在相关信息收集较少) |
邮件 | |
mark(syslog)-rsyslog | 服务内部的信息,时间标识 |
news | 新闻组 |
user | 用户程序产生的相关信息 |
uucp | unix to unix copy,unix主机之间相关通信 |
local 1~7 | 自定义的日志设备 |
日志级别 | 等级代码 | 作用 |
---|---|---|
debug | 7 | 调试信息,日志信息最多 |
info | 6 | 一般信息日志,常用 |
notice | 5 | 普通条件下最重要的信息 |
warning | 4 | 警告级别 |
err | 3 | 错误级别,阻止某个功能或者模块不能正常工作的信息 |
crit | 2 | 严重级别,阻止整个系统或者整个软件不能正常工作的信息 |
alert | 1 | 需要立刻修改的信息 |
emerg | 0 | 内核奔溃等严重信息 |
none | 什么都不记录 |
例子:
创建一条日志收集规则,并采集日志信息
- 选择收集日志的类型,收集auth日志
- 选择收集日志的级别,级别选择info一般性信息
- 日志收集目录为 /var/log/authinfo_log
- 修改配置文件
vim /etc/rsyslog.conf
,在文件【RULES】区域任意行添加auth.info /var/log/authinfo_log
- 重启服务
systemctl restart rsyslog
- 登陆一次已有用户tom并退出
- 可在authinfo_log中查看到tom用户登陆信息
【MODULES】UDP|TCP
配置文件中:
【MODULES】中的的模块
UDP协议功能或者TCP协议功能
- UDP协议功能
# Provides UDP syslog reception
$ModLoad imudp #日志接受模块
$UDPServerRun 514 #开启端口
- TCP协议功能
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
例子
服务器批量收集客户端机器日志配置方式
服务器
- 配置
rsyslog.conf
文件 - 修改配置文件
vim /etc/rsyslog.conf
,在文件【MODULES】区域开启UDP模块,如下
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
- 重启服务
systemctl restart rsyslog
- 关闭防火墙服务
systemctl stop firewalld
客户端 - 配置
rsyslog.conf
文件 - 修改配置文件
vim /etc/rsyslog.conf
,在文件【RULES】区域任意行添加*.* @服务器地址
;@
代表UDP协议;@@
代表TCP协议 - 重启服务
systemctl restart rsyslog
8.测试logger 123
9.本机查看日志消息是否生成:cat /var/log/messages
最后一行显示123
服务器
10.查看日志消息是否生成:cat /var/log/messages
最后一行显示123
【GLOBAL DIRECTIVES 】日志采集格式
配置文件中:
在【GLOBAL DIRECTIVES】中配置日志采集格式
1.全局指令必须以$开头
2.日志采集格式:$template FORMAT,“%timegenerated% %FORMHOST-IP% %syslogtag% %msg%\n”
$template 采集格式定义 FORMAT 命名,可随意命名 %timegenerated% 显示日志时间 %FORMHOST-IP% 显示主机IP %syslogtag% 日志记录目标 %msg% 日志内容 \n 换行符
其中系统默认格式修改在:
$ActionFileDefaultTemplate FORMAT
例子:
配置采集格式
- 配置
rsyslog.conf
文件 - 修改配置文件
vim /etc/rsyslog.conf
,在文件【GLOBAL DIRECTIVES】区域末末尾添加
$template FORMAT,“%timegenerated% %FORMHOST-IP% %syslogtag% %msg%\n”`
3.使用定义FORMAT在采集规则后
*.* /var/log/test;FORMAT
journalctl
日志查询
journalctl #日志查看工具
journalctl [选项]
-n 3 #查看最近3条日志
-o verbose #查看日志的详细信息
--since #查看从什么时间开始的日志,包含时ian点
--until #查看到什么时间为止的日志,不包含时间点
-p err #以级别为分类查看错误日志,字符或者数字都可以
journal保存到文件中
系统默认情况查询道的日志都保存在内存宗,是不保存在系统硬盘中的,关机后只能看到本次开机之后的日志,上一次关机之前的日志是无法产看的
如何使用systemd-journal保存系统日志
mkdir /var/log/journal
#建立journal服务使用文件目录
chgrp systemd-journal /var/log/journal
#将目录归属systemd-journal系统组
chomd g+s /var/log/journal
#设置强制位,产生文件归属systemd-journal,journalctl识别文件
killall -1 systemd-journald
#重新加载journal
ls /var/log/journal
#journal中生成一个Machine ID的文件夹
bootctl
#查看Machine ID,与journal中的核对