Linux-日志管理

Posted guardwhy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux-日志管理相关的知识,希望对你有一定的参考价值。

1.1 基本介绍

1、日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。

2、日志对于安全来说也很重要,它记录了系统每天发生的各种事情,通过日志来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。

3、日志是用来记录重大事件的工具。

1.2 系统常用的日志

1.2.1 查看系统日志

1、系统日志文件的保存位置:/var/log

2、系统常用的日志

日志文件具体作用
/var/log/boot.log系统启动日志
/var/log/cron记录与系统定时任务相关的日志
/var/log/cups/记录打印信息的日志
/var/log/dmesg记录系统在开机时内核自检的信总,也可以使用dmesg命令直接查看内核自检信息
/var/log/btmp记录错误登录的日志,这个文件是二进制,不能直接用vi查看,而要使用lastb命名查看。命令如下
[root@localhost log]#lastb
/var/log/lasllog记录系统中所有用户最后一次的登录时间的日志,这个文件也是二进制文件,要使用lastlog命令查看。
/var/Iog/mailog记录邮件信息的日志。
/var/log/message记录系统重要消息的日志,这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题,首先要检查的应该就是这个日志文件。
/var/log/secure记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户、sudo授权。甚至添加用户和修改用户密码都会记录在这个日志文件中。
/var/log/wtmp永久记录所有用户的登录,注销信息,同时记录系统的后动、重启、关机事件。是二进制文件,而要使用last命令查看。
/var/tun/ulmp记录当前已经登录的用户信息,这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息,这个文件不能用vi查看,而要使用w、who、user等命令查看。

1.2.2 案例实现

使用 root 用户通过 xshell登陆, 第1、2次使用错误的密码,第3次使用正确的密码登录成功。

1、先进入log日志目录cd /var/log,清空以前日志。。。
2、查看日志文件/var/log/secure 里有没有记录相关信息。

1.3 日志管理服务 rsyslogd

1.3.1 原理示意图

CentOS7.x日志服务是 rsyslogd , CentOS6.x 日志服务是 syslogdrsyslogd 功能更强大,rsyslogd 的使用、日志文件的格式,和 syslogd 服务兼容的。

1.3.2 rsyslogd 相关概念

1、查询 Linux 中的 rsyslogd 服务是否启动。

ps aux | grep "rsyslog" | grep -v "grep" # grep -v 反向匹配


2、查询 rsyslogd 服务的自启动状态

systemctl list-unit-files | grep rsyslog


3、查看配置文件

more /etc/rsyslog.conf

编辑文件时的格式为: *.*存放日志文件,其中第一个代表日志类型,第二个代表日志级别。

1.3.3 日志类型

参数具体作用
authpam 产生的日志
authprivssh、ftp 等登录信息的验证信息
corn时间任务相关
kern内核
lpr打印
mail邮件
mark(syslog)-rsyslog服务内部的信息,时间标识
news新闻组
uucpunix to nuix copy 主机之间相关的通信
local 1-7自定义的日志设备

1.3.4 日志级别

1、注意:从上到下,级别从低到高,记录信息越来越少。

参数具体作用
debug有调试信息的,日志通信最多。
info一般信息日志,最常用。
notice最具有重要性的普通条件的信息。
warning警告级别
err错误级别,阻止某个功能或者模块不能正常工作的信息
crit严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert需要立刻修改的信息
emerg内核崩溃等重要信息
none什么都不记录

2、重点:由日志服务 rsyslogd 记录的日志文件,日志文件的格式如下:

  • 事件产生的时间。
  • 产生事件的服务器的主机名。
  • 产生事件的服务名或程序名。
  • 事件的具体信息。

1.3.5 日志查看实例

执行more /var/log/secure命令,这个日志中记录的是用户验证和授权方面的信息。

1.3.6 案例说明

/etc/rsyslog.conf 中添加一个日志文件/var/log/guardwhy.log文件,当有事件发送时(比如 sshd 服务相关事件),该文件会接收到
信息并保存。

1、编写文件

vim /etc/rsyslog.conf

2、自定义日志​
3、保存文件,重启系统

4、查看记录

1.4 日志轮替

1.4.1 基本介绍

1、日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除。

1.4.2 日志轮替文件命名

1、centos7 使用 logrotate 进行日志轮替管理,要想改变日志轮替文件名字,通过 /etc/logrotate.conf 配置文件中dateext参数。

2、如果配置文件中有dateext参数,那么日志会用日期来作为日志文件的后缀,例如 secure-20201010。这样日志文件名不会重叠,也就不需要日志文件的改名, 只需要指定保存日志个数,删除多余的日志文件即可。

3、如果配置文件中没有dateext参数,日志文件就需要进行改名了。当第一次进行日志轮替时,当前的secure日志会自动改名为secure.1,然后建secure日志, 用来保存新的日志。当第二次进行日志轮替时,secure.1会自动改名为secure.2, 当前的secure日志会自动改名为secure.1,然后也会新建secure日志,用来保存新的日志,以此类推。

4、查看boot.log日志轮替

1.4.3 logrotate 配置文件

logrotate.conf 是全局配置文件,执行命令cat /etc/logrotate.conf查看具体信息。

# see "man logrotate" for details
# rotate log files weekly //每周对日志文件进行一次轮替
weekly

# keep 4 weeks worth of backlogs // 共保存 4 份日志文件,当建立新的日志文件时,旧的将会被删除
rotate 4

# create new (empty) log files after rotating old ones // 创建新的空的日志文件,在日志轮替后
create

# use date as a suffix of the rotated file // 使用日期作为日志轮替文件的后缀
dateext

# uncomment this if you want your log files compressed //日志文件是否压缩。如果取消注释,则日志会在转储的同时进行压缩
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# 包含 /etc/logrotate.d/ 目录中所有的子配置文件。也就 是说会把这个目录中所有子配置文件读取进来,
#下面是单独设置,优先级更高。
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
    monthly # 每月对日志文件进行一次轮替
    create 0664 root utmp # 建立的新日志文件,权限是0664,所有者是root,所属组是utmp组
	minsize 1M # 日志文件最小轮替大小是1MB,也就是日志一定要超过 1MB 才会轮替,否则就算时间达到一个月,也不进行日志转储。
    rotate 1 # 仅保留一个日志备份。也就是只有 wtmp 和 wtmp.1 日志保留而已。
}

/var/log/btmp {
    missingok # 如果日志不存在,则忽略该日志的警告信息。
    monthly
    create 0600 root utmp
    rotate 1
}

# system-specific logs may be also be configured here.
参 数参数说明
daily日志的轮替周期是每天
weekly日志的轮替周期是每周
monthly日志的轮替周期是每月
rotate 数字保留的日志文件的个数。0 指没有备份
compress日志轮替时,旧的日志进行压缩
create mode owner group建立新日志,同时指定新日志的权限与所有者和所属组。
mail address当日志轮替时,输出内容通过邮件发送到指定的邮件地址。
missingok如果日志不存在,则忽略该日志的警告信息。
notifempty如果日志为空文件,则不进行日志轮替。
minsize 大小日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替。
size 大小日志只有大于指定大小才进行日志轮替,而不是按照时间轮替。
dateext使用日期作为日志轮替文件的后缀。
sharedscripts在此关键字之后的脚本只执行一次。
prerotate/endscript在日志轮替之前执行脚本命令。
postrotate/endscript在日志轮替之后执行脚本命令。

1.4.4 自定义日志加入日志轮替

1、方式一:

/etc/logrotate.conf配置文件中写入该日志的轮替策略。

2、方式二:

/etc/logrotate.d/目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被include到主配置文件中,所以也可以把日志加入轮替。推荐使用第二种方法,因为系统中需要轮替的日志非常多,如果全都直接写 入/etc/logrotate.conf 配置文件,那么这个文件的可管理性就会非常差,不利于此文件的维护

3、执行命令cd /etc/logrotate.d/,查看全部轮替文件。

1.4.5 案例说明

直接在 /etc/logrotate.d/ 下创建文件 guardwhylog,执行命令vim guardwhylog,具体轮替的效果 可以参考/var/log 下的 boot.log

/var/log/guardwhy.log
{
  missingok
  daily
  copytruncate
  rotate7
  notifempty
}

执行结果

1.4.6 日志轮替机制

日志轮替之所以可以在指定的时间备份日志,是依赖系统定时任务。在 /etc/cron.daily/目录,就会发现这个目录中是有 logrotate文件(可执行),logrotate通过这个文件依赖定时任务执行的。

1.5 查看内存日志

1、常用命令

命令参数参数说明
journalctl可以查看全部内存日志,重启清空
journalctl -n 3查看最新 3 条
journalctl --since 19:00 --until 19:10:10查看起始时间到结束时间的日志可加日期
journalctl -p err报错日志
journalctl -o verbose日志详细内容
journalctl _PID=1245 _COMM=sshd查看包含这些参数的日志

2、案例说明
使用 journalctl | grep sshd来看看用户登录清空, 重启系统

以上是关于Linux-日志管理的主要内容,如果未能解决你的问题,请参考以下文章

执行代码时有时不显示对话框片段

Linux实操篇—— 日志管理

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

linux 日志管理

Linux学习之日志管理(二十一)

Linux 日志管理