关于菜鸡学习RHEL8的一些小笔记--->系统日志
标签: 关于菜鸡学习RHEL8的一些小笔记--->系统日志 博客 51CTO博客
2023-07-28 18:24:29 179浏览
日志:
#Linux系统日志记录了系统运行和系统中的事件,主要用于诊断系统问题和更好的管理系统,通常日志都放在 /var/log/目录中。
#注意:日志文件通常记录的系统信息量较大,所以在过滤日志时注意关键词筛选。
管理日志的方式:
从RHEL7开始的系统日志:
由 rsyslog 和 systemd-journald 两个程序来进行管理
rsyslog 是一个典型的c/s架构的体系,他能够将日志分发到不同的机器上进行查看,在/var/log/ 目录下所看到的日志均为 rsyslog 产生的
rsyslog 是持久性日志,系统重启也不会丢失
而systemd-journald 则是保留在二进制的日志文件中,系统重启后不保留(易失性日志)
#systemd-journald 日志记录在 /run/log/journal/*/systemd.journal
#journalctl 是 systemd-journald 的管理工具,它看到的日志如果是报错类型会有高亮显示,包括其他类型的日志也会有各种形式的展现,所以用 journalctl 看的日志会相对于 rsyslog 更加明显
#在rhel7之前只有rsyslog
rsyslog 日志文件类型:
/var/log/messages |
大多数日志消息记录在这里,例如记录服务信息,系统报错等 |
/var/log/secure |
安全性和身份验证相关的日志 |
/var/log/cron |
定时任务执行相关的日志 |
/var/log/maillog |
系统中邮件服务的日志 |
/var/log/boot.log |
系统启动相关的日志 |
#rsyslog 会根据不同的日志类型和优先级将日志信息存储在不同的文件中,配置文件路径 /etc/rsyslog.conf
#rsyslog 将日志信息拆分成两部分,一部分是类型,另一部分是优先级
例如:cron 的日志信息 cron.info其中 cron 属于日志的类型,而info就属于优先级
#常见的日志类型(由开发者定义)
lpr == 打印类的日志
auth == 认证相关的日志
user == 用户相关的日志
cron == 计划任务相关的日志
kern == 内核相关的日志
mail == 邮件相关的日志
daemon == 系统服务相关的日志
authpri == 授权相关的日志
security == 安全相关的日志
local0-local7 == 自定义相关的日志信息(可以使用通配符)
自定义日志示例:
mail.info /dev/console #在/etc/rsyslog.conf 中定义即可
systemctl restart rsyslog.service #定义完配置文件后重启日志服务
logger -i -t mail -p mail.info "hello message" #发送测试日志
日志常见优先级:
优先级 |
代码 |
级别 |
none |
无 |
不记录任何消息 |
emerg |
0 |
内核崩溃等严重问题 |
alert |
1 |
立即需要修改的信息 |
crit |
2 |
严重错误级别 |
err |
3 |
错误级别 |
warning |
4 |
警告级别 |
notice |
5 |
具有重要性的普通条件的信息 |
info |
6 |
一般信息的日志,比较常用 |
debug |
7 |
调试级别的信息 |
#填写优先级和类型的时候要时刻注意日志的规则
例如:
• mail.info /var/log/maillog2023 ==>> 这个配置指的是比指定级别更高的日志级别,包括指定级别本身都会保存在 /var/log/maillog2023 中
• mail.=info /var/log/maillog2023 ==>> 则表示只有级别为 Info 的日志才会保存到 /var/log/maillog2023
• mail.!info /var/log/maillog2023 ==>> 表示除了info级别的日志所有日志保存到 /var/log/maillog2023
•* .info /var/log/maillog2023 ==>> 表示所有类型的info级别日志,都会保存到 /var/log/maillog2023
• mail.* /var/log/maillog2023 ==>> mail的所有日志级别信息,全部保存到/var/log/maillog2023
• mail.notice;news.info /var/log/maillog2023 ==>> mail的notice以上级别的消息日志和news 中 info 级别以上的日志全部保存到 /var/log/maillog2023
• mail,news.info -/var/log/maillog ==> mail 的 info级别以上的日志和news的info级别以上的日志全部保存到 /var/log/maillog2023 ("-"表示异步模式,表示日志产生和写入文件的时间点可能会不一致)
rsyslog 日志字段
#示例
Jul 27 18:25:14 node1 systemd[1]: NetworkManager-dispatcher.service: Succeeded.
#Jul 27 18:25:14 :日志产生的时间戳
#node1 :主机名称
#systemd:程序名称
#[1]:程序的PID
#NetworkManager-dispatcher.service: Succeeded. :日志的内容
手动发送日志:
#logger -i 表示记录进程的PID -t 指定日志的类型 -p 指定日志的优先级 “日志的内容”
logger -i -t mail -p mail.info "hello messge"
通过rsyslog实现日志服务器:
前提:rsyslog 是c/s架构,所以如果需要实现日志服务器功能,客户端(client)和服务端(service)都必须正常启动 rsyslog的服务
第一步:在服务端的 /etc/rsyslog.conf 文件中进行配置UDP和TCP的传输端口(514端口)
第二步:重启rsyslog服务,并检查TCP和UDP的514端口是否被正常监听
第三步:配置客户端(/etc/rsyslog.conf),将某一类型的日志转发到服务端上(“@”表示通过udp转发,“@@”表示通过TCP转发)
#注:这里测试环境,服务端IP为:192.168.161.130,主机名:node1 ,客户端IP为:192.168.161.128,主机名:node2;配置修改完后需要重启rsyslog服务
第四步:检查服务端是否有收到node2的日志,并手动发送日志测试(注:测试时关闭防火墙)
日志轮循:
#例如messages日志会随着使用一直不断地去写入,所以日志文件所占用的大小也会逐渐增加,这样长期下去,有一天日志也会变成系统的负担
日志轮循:是指将日志按照指定的规则来进行处理
例如:日志副本数==》该日志的在系统中的生命周期(实际是指保留指定天数的日志)
在系统中专门实现轮循的工具:logrotate
示例:已/var/log/boot.log日志为例,它的配置文件则在 /etc/logrotate.d/bootlog 中决定了该日志的生命周期
#missingok == 忽略错误,如果在日志中发生了错误进行忽略,依然按照配置文件中的规则来命名
#daily == 日志分割粒度,天
#copytruncate == 日志轮换时采用"复制并截断"的方式
#rotate == 指定保留副本的个数,7就为7个
#notifempty == 空文件则忽略轮循
#通过 logrotate 工具去手动轮循一次日志
logrotate -f /etc/logrotate.conf
系统日志的检索
#通过systemd-journald 服务将会把收集的日志存储到 /run/log 下面,/run/log 下面的内容是易失性存储,系统重启则会被清理
#journalctl 命令将会把notice 或者 warning 的消息显示为粗体文本,而error及以上则显示为红色文本
#journalctl 安全性较高,它的日志文件有严格的权限管理,其他用户未开放权限
常用选项
journalctl
-n #指定显示消息条数,默认为 10 条
-f #与 tail -f 类似
-p #指定显示某个优先级以上的日志
--since , --until #限制特定的时间段,格式为"YYYY-MM-DD hh:mm:ss"等
-o verbose #查看日志详细信息
关键字检索
#常用关键字
_PID #进程PID
_UID #运行该经常用户的ID
_SYSTEMD_UNIT #启动该进程的systemd单元
_COMM #指定命令的名称
_EXE #进程可执行文件的路径
配置
#因为journalctl 所查看到的日志保存在 /run/log/journal 目录中,所以重启后会被清除,目前可以在 /etc/systemd/journal.comf 中修改 journalctl 对应的服务配置
#其中storage 参数决定了日志是易失性还是持久性,通过设置的参数来决定
参数:persistent ==> 将日志保存在 /var/log/journal 目录中,若该目录不存在,则会创建它
volatile ==> 将日志保存在易失性目录 /run/log/journal 中,临时文件
auto ==> 如果 /var/log/journal 存在,则日志永久存储,否则则为易失性存储 (默认)
#注:修改完毕后需要重启服务 #systemctl restart systemd-journald.service
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论