Linux系统日志学习总结

h

每个程序都能生成自己的日志,日志生成在内存中,不能永久保存,为方便系统管理由专门的程序采集保存在硬盘中
rsyslog服务就是负责收集日志自动保存到指定文件中

文章目录

  • 日志采集:rsyslog服务
    • 配置文件相关概念
    • 【RULES】中配置采集规则
    • 【MODULES】UDP|TCP
    • 【GLOBAL DIRECTIVES 】日志采集格式
  • journalctl
    • 日志查询
    • journal保存到文件中

日志采集: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 打印(现在相关信息收集较少)
mail 邮件
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 什么都不记录

例子:
创建一条日志收集规则,并采集日志信息

  1. 选择收集日志的类型,收集auth日志
  2. 选择收集日志的级别,级别选择info一般性信息
  3. 日志收集目录为 /var/log/authinfo_log
  4. 修改配置文件vim /etc/rsyslog.conf,在文件【RULES】区域任意行添加auth.info /var/log/authinfo_log
  5. 重启服务systemctl restart rsyslog
  6. 登陆一次已有用户tom并退出
  7. 可在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

例子
服务器批量收集客户端机器日志配置方式
服务器

  1. 配置rsyslog.conf文件
  2. 修改配置文件vim /etc/rsyslog.conf,在文件【MODULES】区域开启UDP模块,如下
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
  1. 重启服务systemctl restart rsyslog
  2. 关闭防火墙服务systemctl stop firewalld
    Linux系统日志学习总结_第1张图片
    客户端
  3. 配置rsyslog.conf文件
  4. 修改配置文件vim /etc/rsyslog.conf,在文件【RULES】区域任意行添加*.* @服务器地址@代表UDP协议;@@代表TCP协议
  5. 重启服务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

例子:
配置采集格式

  1. 配置rsyslog.conf文件
  2. 修改配置文件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中的核对

Linux系统日志学习总结_第2张图片

你可能感兴趣的:(Linux)