rsyslogd以及日志轮替logrotate的梳理

1. rsyslog

  • rsyslog可记录的日志有
auth :(authpriv) 主要与认证有关的机制,例如 login, ssh, su 等需要帐号/密码的咚咚;
cron: 就是例行性工作排程 cron/at 等产生讯息记录的地方;
daemon: 与各个 daemon 有关的讯息;
kern: 就是核心 (kernel) 产生讯息的地方;
lpr: 亦即是列印相关的讯息啊!
mail: 只要与邮件收发有关的讯息纪录都属于这个;
news: 与新闻群组伺服器有关的东西;
syslog: 就是 syslogd 这支程式本身产生的资讯啊!
user, uucp, local0 ~ local7 与 Unix like 机器本身有关的一些讯息。
  • rsyslog的日志等级
(1)debug:调试信息
(2)info:
(3)notice
(4)warning
(5)err
(6)crit
(7)alert
(8)emerg
(9)* :所有日志等级的信息
(10).none :忽略日志服务,不记录
  • /etc/rsyslog.conf配置文件解读
*.info;mail.none;authpriv.none;cron.none /var/log/messages
#除了mail、authpriv、cron之外的任何服务产生日志等级为info的信息都记录在message之内

authpriv.* /var/log/secure
#authpriv服务发生的任何等级的日志都记录在secure中 

mail.* -/var/log/maillog
#同理,是Mail服务发生的日志都记录在maillog中

$ModLoad ommysql #引用mysql模块 mail.* :ommysql:localhost,Syslog,rsyslog,password
#将mail的任何信息记入:本地mysql中的Syslog库中,用户为rsyslog,密码为:password 
  • 赋值方法
(1) . :代表大于等于指定的等级的日志会记录到指定的日志里面
(2) .= :代表日志等级等于指定的等级会记录
(3) .! :除了指定等级之外的日志会被记录

2. logrotate

  • 关于logrotate
  1. 程序:/usr/sbin/logrotate
  2. 配置:/etc/logrotate.conf 和/etc/logrotate.d/
  3. 在crontab里排期: /etc/cron.daily/logrotate
  • /etc/logrotate.conf 解读
#每个礼拜滚一次
weekly
#保留4个档,比如第5次更替,那第一次的就没了
rotate 4
#建立新的日志来继续存储
create
# 将日期作为轮替日志的结尾,比如:maillog-20160701
dateext
# 是否压缩日志,压缩工具gzip,比如:maillog-20160701.gz
compress
# 子配置文件的包含目录
include /etc/logrotate.d
# 轮替的两个实例
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
  • /etc/logrotate.d 下面包含了日志轮替的实例,拿其中一个分析
/var/log/maillog
{
daily 每天都执行
rotate 7 保留7份轮替日志
dateext    以日期作为轮替日志的标识 
create    创建新文件
minsize 1G  日志最小1G,不到1G不轮替
sharedscripts :和endscript对应,中间放脚本
postrotate :在启动logrotate前,执行下面的动作
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/bin/kill -HUP `cat /var/run/fail2ban/fail2ban.pid 2> /dev/null` 2> /dev/null || true
endscript :结束脚本
compress :压缩
}
  • 强制日志轮替命令
/usr/sbin/logrotate /etc/logrotate.conf

3. 屡一下计划任务和rsyslog 以及logrotate之间的关系

  • rsyslog:负责将产生的日志分类,打到各个日志文件中
  • logrotate:负责切割日志
  • crontab:定时任务在/etc/下面有 cron.hourly  cron.daily  cron.weekly  cron.monthly 等目录,在对应目录下的程序,会按其给定的时间执行一次,比如cron.daily下的程序会每天都执行一次。
    • 在cron.daily目录下有logrotate的一个Shell脚本:
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

这个脚本每天执行一次,所以会将 /etc/logrotate.conf 中设定的切割策略都执行一遍,当然include 所包含的 /etc/logrotate.d/* 的所有策略也会执行,因此实现了日志的轮替。

时间: 2024-10-19 09:28:09

rsyslogd以及日志轮替logrotate的梳理的相关文章

日志轮替(logrotate)的常用配置参数

最近正好要重新整理日志服务器,刚好需要对系统中的logrotate重新配置,因此就在此简单的写一下logrotate的一些基本配置参数,以便于查阅. logrotate的主要的配置参数文件是/etc/logrotate.conf ,而/etc/logrotate.d/目录中的写配置是为了平时管理方便在里面写的,它最后还是会被/etc/logrotate.conf所include,最后由wtmp所执行.所以如果是一些通用的配置都可以写在/etc/logrotate.conf文件中,但是如果平时不建

日志轮循logrotate

日志轮循(轮转): logrotate 日志轮转,切割,备份,归档 1.避免日志过大占满/var/log的文件系统. 2.方便日志查看. 3. 将丢弃系统中最旧的日志文件,以节省空间 4. logrotate本身不是系统守护进程,它是通过计划任务crond每天执行 1.确认软件包是否安装 # rpm -q logrotate /etc/cron.daily/logrotate /etc/logrotate.conf 主配置文件 /etc/logrotate.d 主目录 /usr/sbin/log

Linux的日志文件管理工具——logrotate(linux日志切割与轮循)

日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事. Linux日志切割 现代的Linux版本都有一个小程序,名为logrotate,用来帮助用户管理日志文件,它以自己的守护进程工作.logrotate周期性地旋转日志文件,可以周期性地把每个日志文件重命名成一个备份名字,然后让它的守护进程开始使用一个日志文件的新的拷贝.

logrotate关于日志轮询和分割

如果你的是源码包安装的服务,那么对于Linux服务器上的一些服务在运行当中产生的日志很重要,可以判断你的服务是否有异常等,但源码包安装的日志是没有日志的轮询或者说是切割能力的, 所以你就需要用到bash脚本来做或者用其他语言,但我这里来介绍下一个RHEL系列的工具 logrotate 他可以轻松的帮你实现日志的轮询.像RHEL和CentOS都默认安装了该服务.你可以直接 编辑/etc/logrotate.conf  来实现对相应日志文件的轮询: 例如典型的apache日志, 首选我来说下列子然后

日志切割之Logrotate

关于日志切割 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事.logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循).压缩以及删除旧的日志文件.例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志.配置完后,logrotate的运作完全自动化,不

日志轮替简介

当我们的网页上单击一个链接或刷新一下界面,那么Apache在后台的日志文件就会记录一行或几行信息,如果你的网站有可观的访问量,那么一段时间之后你的Apache的日志文件会变得及其臃肿不堪,当服务器出现问题之后,在一个几百兆甚至几个G的日志文件中找到有用的信息会变得及其困难.所以我们就需要定期将足够大的日志文件分割成一个一个小日志,这就是日志轮替.日志轮替其实就是日志切割和日志轮换的结合0 日志切割:就是把旧的日志文件移动并改名,同时建立新的日志文件.那么如何命名呢?   主要依靠/etc/log

centos7下编译安装nginx并实现日志轮替

centos7编译安装nginx: 首先确保系统上存在编译安装使用的必要工具运行:  # yum groupinstall "development tools" "server platform development" 1 下载PCRE version 4.4 - 8.40 (ngx_http_rewrite_module模块需要)    # wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/p

linux下日志管理工具--logrotate

配置 /usr/local/nginx/logs/*.log { daily dateext rotate 1 olddir /usr/local/nginx/other/logs missingok notifempty compress sharedscripts postrotate /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null ||: endscript } dateext:文件后缀是日期格式,也就是

Linux_rsylogd日志轮替(三)

一.轮替规则及配置文件:vi /etc/logrotate.conf 1.如果配置文件中拥有" dateext"参数,那么日志会用日期来作为日志文件的后缀,例如" secure-20130605".这样的话日志文件名不会重叠,所以也就不需要日志文件的改名,只需要保存指定的日志个数,删除多余的日志文件即可. 2.如果配置文件中没有" dateext"参数,那么日志文件就需要进行改名了.当第一次进行日志轮替时,当前的" secure&quo