linux的系统日志

news/2024/11/17 12:50:32/

目录

一、日志文件的产生过程

二、产生的日志文件保存在哪儿

(1)文本日志(rsyslong)

(2)二进制日志(systemd-journald)

三、日志存放规则的相关配置文件

四、把自定义文字(日志)添加到日志文件

五、日志轮转

(1)二进制日志rsyslong、文本日志systemd-journald的通用轮转

(2)二进制日志systemd-journald的专属轮转

六、分析监控日志(rsyslong)

七、分析监控日志(systemd-journald)

(1)显示所有日志信息

(2)查看日志文件大小

(3)过滤显示指定的日志信息

八、持久化二进制日志(systemd-journald)

(1)持久化思路

(2)持久化实现


一、日志文件的产生过程

日志内容:内核、开机引导、守护进程启动运行的事件和输出

产生过程:系统的syslog组件产生,由rsyslog.srevice和systemd-journald.srevice这2个服务产生日志、写到日志文件里

分类:分为文本类型日志、二进制类型日志

二、产生的日志文件保存在哪儿

(1)文本日志(rsyslong)

  1. 由rsyslong服务产生;
  2. 可以用cat、more、tail等命令查看
  3. 存放在:/var/log/

补充(上图)

/var/log/secure:包含登录相关的。比如用户登录失败的记录、原因

/var/log/wtmp:是二进制文件,用命令查看是乱码。只能用last命令才看得到

/var/log/utmp:是二进制文件,用命令查看是乱码。只能用w和who命令才看得到

/var/log/boot.log:开机时,系统启动服务时,相关的输出

/var/log/demsg:开机时,系统启用硬件时,相关的输出。是二进制文件,用命令查看是乱码,只能用dmesg命令才看得到

(2)二进制日志(systemd-journald)

  1. 由systemd-journald服务产生;
  2. 用cat、more、tail这些命令查看是乱码,只能用journaldctl命令查看;
  3. 存放在:/run/log/

/run/是内存映射的目录,重启后/run/log/会清空重建,二进制日志会丢失。不过在重启前系统会先把二进制日志重要内容记录到“文本日志存放目录/var/log/”下

三、日志存放规则的相关配置文件

作用:比如,与安全相关的日志都是存放到/var/log/secure文件。这个默认行为就是在配置文件里预设置好的

配置文件:/etc/rsyslog.conf(主配置文件)、/etc/rsyslog.d/*.conf(子配置文件)

主配置文件参数:

# rules #

*.info;mail.none;authpriv.none;cron.none       /var/log/messages

#.none表示匹配所有优先级。所有优先级的邮件、安全、定时任务服务产生的日志信息,都会写到 /var/log/messages

#####除了none,其他优先级如下图

mail.*                                                              /var/log/maillog

#邮件服务产生的日志信息(.*表示匹配所有优先级),都会写到 /var/log/maillog

authpriv.*                                                        /var/log/secure

#安全服务产生的日志信息(.*表示匹配所有优先级),都会写到 /var/log/secure

cron.*                                                             /var/log/cron

#定时任务服务产生的日志信息(.*表示匹配所有优先级),都会写到 /var/log/cron

*.emerg                                                         :omusrmsg:*

#所有服务(.emerg表示匹配最高优先级紧急)的紧急日志,都直接打印在控制台,不记录到日志文件

local7.*                                                          /var/log/boot.log 

#local7服务产生的日志信息(.*表示匹配所有优先级),都会写到/var/log/boot.log 

四、把自定义文字(日志)添加到日志文件

logger -p local7.notice "自定义日志内容"    #手动把自定义文字添加到/var/log/boot.log末尾,备注优先级为notice

五、日志轮转

(1)二进制日志rsyslong、文本日志systemd-journald的通用轮转

出现问题:系统日志一直都增加,由各种系统服务产生。时间久了,服务器肯定存不下。

比如:

  • 定时任务相关的服务,5月15日产生一个日志文件cron-20230515,5月16日又产生cron-20230516;
  • 服务启动相关的服务,5月15日产生一个日志文件boot.log-20230515,5月16日又产生boot.log-20230516

解决办法:linux引入了日志轮转的机制来解决这个问题。日志轮转,就是创建新日志文件,删除旧日志文件的过程

具体实现:定时任务cron这个系统服务,每天会运行一次logrotate脚本(/etc/cron.daily/logrotate),脚本调用/etc/logrotate.conf这个配置文件,实现日志轮转   //logrotate脚本运行时只有守护进程,不产生服务

日志轮转配置文件/etc/logrotate.conf:

该文件设置了轮转规则

weekly:每周轮转一次(还有monthly、day、daily)

rotate4:同一个文件最多轮转4次,4次之后就删除该文件(这儿是只保留最近4周的日志文件,之前的旧日志都删了)

dateteext:创建日志文件时,名字以日期命名XXXX-YYYYMD。如mail-20230516

create:删除旧日志时,创建一个新的空日志文件     //今天创建的,那么今天的日志内容会由rsyslong服务或systemd-journald服务写到该空日志文件里

compress:日志文件要压缩,不写表示不压缩

include:包含子配置文件/etc/logrotate.d。要引入自定义轮转规则配置文件,可以在下面加一条include /etc/自定义配置文件

自定义轮转规则:

更多轮转规则参数:

(2)二进制日志systemd-journald的专属轮转

systemd-journald还对自己产生的二进制日志有1个专属轮转机制,每个月触发1次。默认设置是:日志的大小不能超过所处文件系统的10%,不能造成文件系统的可用空间低于15%;

可以修改/etc/systemd/journald.conf的默认设置调整。

查看当前日志文件大小:journalctl | grep -E 'Runtime|System journal'

查看文件系统的可用空间:df -h

六、分析监控日志(rsyslong)

(1)分析日志

每一条日志文件的内容,都由4部分组成


  1. 日志记录时间(操作系统时间)
  2. 日志是那一台主机产生的
  3. 日志由哪个服务产生       //[1433]是服务对应进程的pid
  4. 日志详细内容(记录的什么事件)

最新的日志在末尾:每写入一条日志,都写到文件最后

(2)监控日志

tail -f /var/log/日志文件

七、分析监控日志(systemd-journald)

我们可以使用journalctl命令查看systemd-journald服务产生的二进制类型日志文件;

journalctl功能非常强大,比查看rsyslong方便得多。

(1)显示所有日志信息

journalctl  

#日志级别根据颜色和字体粗细来区别

(2)查看日志文件大小

journalctl | grep -E 'Runtime|System journal'

 8.0M就是日志文件大小,max值是最大可以存多大,也可以用df -h查看当前文件系统支持存多大

(3)过滤显示指定的日志信息

journalctl 【选项】

-n:默认显示最后10条日志(-n 100指定显示最后100条)

-o verbose:比如journalctl -n -o verbose用于显示最后10条日志产生的更详细的相关信息(systemd-journald独有的。查看rsyslong没有)

-f:实时监控日志信息(与tail -f类似)

根据日志级别过滤


-p 【日志级别,如err】:只显示优先级为error及以上的日志条目(也可以过滤其他优先级比如debug、info、notice、warning、err、crit、alert、emerg等)

/**-p err是最常用的。用于查看错误日志(systemd-journald独有的。查看rsyslong就没有单独的选项,只能打印出所有然后过滤,比较麻烦)*/

根据产生时间过滤


--since today:显示今天的所有日志(since后可以跟:yesterday、today、tomorrow)
--since "2014-02-10 20:30:00" --until "2014-02-13 12:00:00":显示指定时间段的日志信息

根据可执行文件路径过滤


_EXE=/xxxx/XXXX.sh



过滤指定服务


-u 【单元名,如nginx.service】:也是最常用的,用于查看指定服务输出的日志

-b:查看开机单元相关输出日志

_COMM=nginx:过滤执行nginx这个命令(作业)输出的日志(同-u nginx)

_SYSTEMD_UNIT=nginx.service:过滤启动nginx的单元输出的日志(同-u nginx)

过滤指定进程


_PID=XXXX     #根据进程PID过滤

_UID=XXXX    #根据进程的用户UID过滤

八、持久化二进制日志(systemd-journald)

systemd-journald产生的二进制日志文件存放在/run/log/里,而/run/是内存映射的目录,重启后/run/log/会清空重建,二进制日志会丢失。

(1)持久化思路

要想把systemd-journald产生的日志永久保存到系统,可以通过修改配置文件实现:

修改/ec/systemd/journald.conf


storage有三个参数

volatile:不持久化

persisent:重启后把二进制文件持久化保存到/var/log/journal/里,/var/log/journal/不存在会自动创建journal文件夹

auto:存在/var/log/journal/才持久化,没有journal文件夹不持久化

(2)持久化实现

具体持久化的操作步骤如下

方式一:编辑/ec/systemd/journald.conf,把storage参数改成persistent。然后重新加载systemd- journald服务的配置systemctl reload systemd- journald


方式二:因为storage参数默认是auto,所以只需手动在/var/log/下新建一个journal文件夹即可


http://www.ppmy.cn/news/363434.html

相关文章

Linux系统日志 -

简介: rsyslog 系统日志管理 ---关心哪类程序---产生的什么日志 ---放到什么地方 logrotate 日志轮转 ---将大量的日志,分割管理,删除旧日志 一、任务一详解 1.处理日志的进程 第一类: rsyslogd:系统专职日志程序 处…

【操作系统】日志管理

文章目录 系统日志文件rsyslog 服务描述rsyslog日志类别日志信息等级rsyslog符号解释 日志文件轮询logrotate systemd-journaldsystemd-journald.servicejournalctl 查看 syslog日志分析syslog常见服务dmesg报错查看 系统日志文件 常见的日志文件 文件路径包含内容/var/log/aut…

系统日志记录

当我们搭建系统或者api 程序时,遇见报错的信息,做一个日志记录;现在很多优秀的第三方框架都已经集成了日志记录功能,如果不依赖框架也可以自己手写一个日志层。 一般处理日志的方式有三种 【1】:保存在本地txt 文本 【…

linux日志文件存在哪里,linux系统日志在哪里

Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。 1、大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd,默认配置文件为 /etc/syslog.conf,任何希望生成日志的程序都可以向 syslog 发…

windows系统日志查看

1. 右键“我的电脑”,选择管理,打开「事件查看器」;或者同时按下 Windows键 R键,输入“eventvwr.msc”直接打开「事件查看器」。 2、接下来你会在窗口中看到一个列表,包括 “关键字”、 “日期和时间”、“来源”、“…

Windows系统日志

目录 Windows系统日志 简介 分类 按照审核对象分类 查看系统日志方式 通过C盘路径查找 通过winr,输入eventvwr.msc进入事件查看器 事件类型 事件ID 日志保存格式 登录类型 事件日志分析 手动日志分析 使用日志分析工具分析日志(Log Parser&a…

linux系统日志

原文 linux系统日志 1简介 linux系统拥有非常强大的日志功能,保存着几乎有所有操作记录,包括内核和程序产生的各种错误信息,警告信息或其他提示信息,对这些信息管理员了解系统的运行状态和分析问题非常有用。可以从日志文件中获…

Windows系统服务器系统日志在哪里查看?

Windows系统服务器系统日志在哪里查看? 服务器日志是什么? 服务器日志(server log)是一个或多个由服务器自动创建和维护的日志文件,其中包含其所执行活动的列表 简单来说,服务器的日记就是记录网站被访问的全过程,什…