博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用logrotate 管理Linux日誌檔(zt)
阅读量:2454 次
发布时间:2019-05-10

本文共 5421 字,大约阅读时间需要 18 分钟。

对于Linux 的系统安全来说,日志文件是极其重要的工具。系统管理员可以使用logrotate 程序用来管理系统中的最新的事件,logrotate 还可以用来备份日志文件。 那么日志文件是如何管理及如何实现轮换的呢 ?

Linux 的系统日志一般被记录在/var/log/ 目录下 。日志纪录配置文档为 /etc/syslog.conf .

/var/log/ 目录:

./var/log 记录了几乎所有的log , 但是没有记录ftp log , 我们可以通过 /etc/ftpaccess 设置及修改来达到这个目的 。

boot.log 启动信息

cron 纪录排程执行的log .

/var/log/messages messages 日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO 错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为 root,也在这里列出。如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。通常,/var/log/messages 是您在做故障诊断时首先要查看的文件。

/var/log/XFree86.0.log 这个日志记录的是 Xfree86 Xwindows 服务器最后一次执行的结果。如果您在启动到图形模式时遇到了问题,一般情况从这个文件中会找到失败的原因。

/var/log/secure 纪录登陆的ip, 时间,登陆方式等 。

查看日志的工具

dmesg 使用 dmesg 命令可以快速查看最后一次系统引导的引导日志。通常它的内容会很多,所以您往往会希望将其通过管道传输到一个阅读器。 dmesg | more 上面的命令将以分页的方式显示引导信息。 tail 有时,当某些行为发生时,您会希望密切关注一个日志文件。Tail 命令设计用于显示文本文件的最后几行。使用 -f 开关,当日志增加新的内容时,tail 将继续显示新的输出。 tail -f /var/log/messages

/etc/syslog.conf 日志配置文件内容 :

其中记录的内容,注意 # 后面的解释 :

# Log all kernel messages to the console. (纪录所有的内核信息到字符设备)

# Logging much else clutters up the screen.

#kern.* /dev/console

# Log anything (except mail) of level info or higher. (纪录除了mail信息之外的所有log)

# Don't log private authentication messages!

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

# The authpriv file has restricted access. (纪录受到限制的访问)

authpriv.* /var/log/secure

# Log all the mail messages in one place.

mail.* /var/log/maillog

# Log cron stuff (纪录cron排程执行的log)

cron.* /var/log/cron

# Everybody gets emergency messages

*.emerg *

# Save news errors of level crit and higher in a special file. (在一个专门的文件中保存)

uucp,news.crit /var/log/spooler

# Save boot messages also to boot.log (记录启动信息)

local7.* /var/log/boot.log

二. Linux 的系统日志一般内容 。

日志文件记录例子(以messages为例):

以下log messages 是从目前运行的SFC系统中摘录下来的 messages, messages.1, messages.2 , messages.3 , messages.4 ,纪录所有Linux系统相关变化及状态,用户登入信息等 。

[root@dmdii-node2 log]# pwd

/var/log

[root@dmdii-node2 log]#

[root@dmdii-node2 log]# vi messages.1

messages.1 文件内容

Aug 7 04:03:02 dmdii-node1 syslogd 1.4.1: restart. (最开始的一句)

......

Aug 14 04:03:02 dmdii-node1 cups: cupsd startup succeeded (最后的一句)

messages.2 文件内容

Jul 31 04:03:02 dmdii-node1 syslogd 1.4.1: restart. (最开始的一句)

.......

Aug 7 04:03:02 dmdii-node1 cups: cupsd startup succeeded (最后的一句)

messages.3 文件内容

Jul 24 04:03:02 dmdii-node1 syslogd 1.4.1: restart. (最开始的一句)

.......

Jul 31 04:03:02 dmdii-node1 cups: cupsd startup succeeded (最后的一句)

messages.4文件内容

Jul 17 04:03:02 dmdii-node1 syslogd 1.4.1: restart. (最开始的一句)

.......

Jul 24 04:03:02 dmdii-node1 cups: cupsd startup succeeded (最后的一句)

messages 文件内容

Aug 14 04:03:02 dmdii-node1 syslogd 1.4.1: restart.

Aug 15 08:01:42 dmdii-node1 login(pam_unix)[7840]: session opened for user oracle by (uid=0)

Aug 15 08:01:42 dmdii-node1 -- oracle[7840]: LOGIN ON pts/0 BY oracle FROM 10.134.48.86

Aug 15 08:17:06 dmdii-node1 su(pam_unix)[8024]: session opened for user root by oracle(uid=500)

Aug 15 08:18:42 dmdii-node1 login(pam_unix)[8086]: session opened for user oracle by (uid=0)

大家通过观察上面每个日志最开始的一句和最后的一句的时间差, 注意到日志纪录是轮换的,而且是有规律的轮换 (这里是weekly轮换,即达到一周时间的messages文件中的log会转储到messges.1 或其他messages.2,…. 等文件中) 。 syslogd 1.4.1: restart 表示重新初始化系统日志守护程序 syslogd 。

三. Logrotate 的配置 。

Logrotate顾名思义就是 log rotate , 即日志的轮换 。 Logrotate是Linux系统自身带的一个日志轮循程序,它的执行程序所在的目录是/usr/sbin/logrotate ,是专门对各种系统日志(syslogd,mail)进行轮循的程序。该程序是由运行程序的服务crond来每天凌晨4:02运行的(可以回过头看看上面二中的一些日志的开始发生时间都是04:03, 抱歉,这里我们在深圳的测试server比实际时间早了点,^_^), 可以在/etc/cron.daily目录下可以看到logrotate文件

Logrotate 用来将旧的日志文件删除,并创建新的日志文件, 叫做”转储” 。

我们可以根据日志文件大小,也可以根据天数来转储(比如上面的例子是一周转储一次) 。 logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。

logrotate 的配置文件是 /etc/logrotate.conf。主要参数如下表:参数 功能
compress 通过gzip 压缩转储以后的日志
nocompress 不需要压缩时,用这个参数
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 备份日志文件但是不截断
create mode owner group 转储文件,使用指定的文件模式创建新的日志文件
nocreate 不建立新的日志文件
delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。
notifempty 如果是空文件的话,不转储
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~
size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).

四. 默认Logrotate 的配置 。
logrotate 缺省的配置文件 /etc/logrotate.conf。
Red Hat Linux 缺省安装的文件内容是 :

缺省的配置一般放在logrotate.conf 文件的最开始处,影响整个系统。在本例中就是前面12行。

weekly 指定所有的日志文件每周转储一次。 rotate 4 指定转储文件的保留 4份。

errors root 指定错误信息发送给root。
create 指定 logrotate 自动建立新的日志文件,新的日志文件具有和原来的文件一样的权限。
#compress 指定不压缩转储文件,如果需要压缩,去掉注释就可以了。

Include /etc/logrotate.d 告诉 logrotate 读入存放在/etc/logrotate.d 目录中的日志转储参数,当系统中安装了RPM 软件包时,使用include 选项十分有用。RPM 软件包的日志转储参数一般存放在/etc/logrotate.d 目录。 include 选项十分重要,一些应用把日志转储参数存放在 /etc/logrotate.d 。典型的应用有:apache, linuxconf, samba, cron 以及syslog。 这样,系统管理员只要管理一个 /etc/logrotate.conf 文件就可以了。

五. Logrotate 的运行 。

1. 判断系统的日志文件,建立转储计划以及参数,通过cron daemon 运行下面的代码是 Red Hat Linux 缺省的crontab 来每天运行logrotate。

#/etc/cron.daily/logrotate (即/etc/cron.daily/logrotate 每天运行内容如下)

#! /bin/sh

/usr/sbin/logrotate /etc/logrotate.conf

详细内容可以参考:

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/312079/viewspace-245335/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/312079/viewspace-245335/

你可能感兴趣的文章
背景图像位置css_CSS背景图像大小教程–如何对整页背景图像进行编码
查看>>
客户旅程_编程如何找到我的:21岁开发人员的7年旅程
查看>>
c# 持续集成 单元测试_如何在不进行单元测试的情况下设置持续集成
查看>>
redux rxjs_可观察的RxJS和Redux入门指南
查看>>
无理数平方根计算_如何找到数字的平方根并手动计算
查看>>
软件测试质量过程检测文档_如何编写实际上有效的质量检查文档
查看>>
alpine 交互sh_在这个免费的交互式教程中学习Alpine JS
查看>>
服务器云ide_语言服务器协议如何影响IDE的未来
查看>>
如何在AWS上启动远程服务器
查看>>
响应因特网端口ping命令_如何使用Ping命令识别基本的Internet问题
查看>>
arduino 呼吸灯_如何改善您的Arduino呼吸机:用于临时COVID-19呼吸机设计的RTS和SCS简介...
查看>>
vue使用pwa_如何使用HTML,CSS和JavaScript从头开始构建PWA
查看>>
华为技术面试编码题_最佳技术编码面试准备书
查看>>
全栈Python Flask教程-建立社交网络
查看>>
react 对象克隆_如何使用React&GraphQL(Dune World Edition)创建全栈Yelp克隆
查看>>
完成平方公式:如何用二次方程完成平方
查看>>
完整的React Router初学者指南(包括Router Hooks)
查看>>
村上春树 开始写作_如何克服对写作的恐惧并找到开始的动力
查看>>
gatsby_如何使用Gatsby和Leaflet创建夏季公路旅行地图绘制应用程序
查看>>
phaser.min.js_如何使用Phaser 3,Express和Socket.IO构建多人纸牌游戏
查看>>