rsyslog 与 logrotate 服务
rsyslog与logrotate服务
rsyslog 负责写入日志, logrotate负责备份和删除旧日志, 以及更新日志文件。
一、rsyslog
rsyslog 是一个 syslogd 的多线程增强版,现在Fedora和Ubuntu, Centos默认的日志系统都是rsyslog了。
一种常见又简单的 syslogd 使用方法如图:
1、用户进程将产生的日志消息发送至UNIX域数据报套接字 /dev/log;
2、syslogd 守护进程启动时会读取配置文件 /etc/syslog.conf,该配置文件决定不同种类的消息应送往何处。
如下图rsyslog的架构图,它的消息流是从输入模块->预处理模块->主队列->过滤模块->执行队列->输出模块。

在这个流程图中,输入、输出、过滤三个部分称为module:
input模块(消息来源)有imklg、imsock、imfile;
pre-processor模块()主要解决各种syslog协议实现间的差异,举例说明如果日志系统client端使用rsyslog、server端使用syslog-ng,如果自己不做特殊处理syslog-ng是无法识别的。但是反过来,rsyslog的server端就可以识别syslog-ng发过来的消息。
queue模块负责消息的存储,从Input传入的未经过滤的消息放在主队列中,过滤后的消息放入到不同action queue中,再由action queue送到各个输出模块。
filetr模块处理消息的分析和过滤,rsyslog可以根据消息的任何部分进行过滤;
output模块(消息目的地)有omudp、omtcp、omfile、omprog、ommysql、omruleset;
配置rsyslog 的命令行参数:

在 rsyslog 的配置文件 /etc/rsyslog.conf,增加下面两行:
local3.* /var/log/haproxy.log
local0.* /var/log/haproxy.log
然后执行下面的命令进行测试:
logger -p local3.info 'hello world'
可以看到 /var/log/haproxy.log 增加了改行信息。
/etc/rsyslog.conf 每行配置项的含义:
日志设备 连接符号 日志级别 日志处理方式
日志设备:
———————————————————————-
auth –pam产生的日志
authpriv –ssh,ftp等登录信息的验证信息
cron –时间任务相关
kern –内核
lpr –打印
mail –邮件
mark(syslog) –rsyslog服务内部的信息,时间标识
news –新闻组
user –用户程序产生的相关信息
uucp –unix
to unix copy, unix主机之间相关的通讯
local 1~7 –自定义的日志设备
连接符号:
———————————————————————-
.xxx: 表示大于等于xxx级别的信息
.=xxx:表示等于xxx级别的信息
.!xxx:表示在xxx之外的等级的信息
日志级别:
———————————————————————-
debug –有调式信息的,日志信息最多
info –一般信息的日志,最常用
notice –最具有重要性的普通条件的信息
warning –警告级别
err –错误级别,阻止某个功能或者模块不能正常工作的信息
crit –严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert –需要立刻修改的信息
emerg –内核崩溃等严重信息
none –什么都不记录
从上到下,级别从低到高,记录的信息越来越少
详细的可以查看手册:
man 3 syslog
注意:日志记录的顺序有先后关系
例子:
———————————————————————-
1. 记录到普通文件或设备文件::
*.*
/var/log/file.log # 绝对路径
*.* /dev/pts/0
测试: logger -p local3.info
‘KadeFor is testing the rsyslog and logger ‘ logger 命令用于产生日志
2. 转发到远程::
*.* @192.168.0.1
# 使用UDP协议转发到192.168.0.1的514(默认)端口
*.* @@192.168.0.1:10514
# 使用TCP协议转发到192.168.0.1的10514(默认)端口
3. 发送给用户(需要在线才能收到)::
*.* root
*.* root,kadefor,up01
# 使用,号分隔多个用户
*.* * # *号表示所有在线用户
4. 忽略,丢弃::
local3.* ~ # 忽略所有local3类型的所有级别的日志
5. 执行脚本::
local3.* ^/tmp/a.sh
# ^号后跟可执行脚本或程序的绝对路径
# 日志内容可以作为脚本的第一个参数.
# 可用来触发报警
二、logrotate
logrotate是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件,这个过程称为“转储”。
我们可以根据日志的大小,或者根据其使用的天数来转储。
logrotate的执行由crond服务实现,参考 /etc/cron.daily/logrotate 脚本,该脚本每天由cron在指定的时间(/etc/crontab)启动。
在执行logrotate时,需要指定其配置文件/etc/logrotate.conf
这个配置文件的注释写得很清楚,没有必要再罗嗦了。只想强调下面这行,它的作用包含存放在/etc/logrotate.d目录下面的配置文件,不可或缺。如果你安装了一个新的服务,它的日志转储的规则可以建立一个专门的配置文件,放在/etc/logrotate.d下面。它其实也因为下面的这句话,在logrotate服务启动时被读取。
每个存放在/etc/logrotate.d目录里的文件,都有上面格式的配置信息。在{}中定义的规则,如果与logrotate.conf中的冲突,以/etc/logrotatate.d/中的文件定义的为准。
logrotate启动脚本放在 /etc/cron.daily/logrotate 中,可人工执行命令进行测试:
/usr/sbin/logrotate -f /etc/logrotate.conf
dateext表示转储文件会以日期来结束*
参考文档:
http://www.cnblogs.com/tobeseeker/archive/2013/03/10/2953250.html
rsyslog 与 logrotate 服务的更多相关文章
- rsyslog和logrotate服务
参考: http://www.lampbo.org/others/opensource/rsyslog-config-file-detail.html http://bangerlee.blog.ch ...
- rsyslog和logrotate
简介 rsyslog 是一个 syslogd 的多线程增强版. 现在Fedora和Ubuntu, rhel6默认的日志系统都是rsyslog了 rsyslog负责写入日志, logrotate负责备份 ...
- Linux下rsyslog日志收集服务环境部署记录【转】
rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...
- Linux下rsyslog日志收集服务环境部署记录
rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...
- rsyslog及logrotate小结
[root@node1 logrotate.d]# ls dracut haproxy httpd mcelog nginx ppp psacct syslog yum yum install n ...
- Linux日志切割logrotate服务配置
一.logrotate介绍 logrotate软件是一个日志管理工具,用于非分隔日志,删除旧的日志文件,并创建新的日志文件,起到“转储作用”,可以为系统节省磁盘空间.一般centos系统已经自带安装好 ...
- [svc]rsyslog及logrotate小结
[root@node1 logrotate.d]# ls dracut haproxy httpd mcelog nginx ppp psacct syslog yum yum install ngi ...
- linux服务之rsyslog
日志片断分析 systemd:服务报出来的信息kvm:内核模块kvm报出来的信息kernel: tun: 内核的tun模块报出来的信息kernel: br0: 内核的br0模块报出来的信息kernel ...
- syslog之二:syslog协议及rsyslog服务全解析
目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...
随机推荐
- freemarker语法简介
ftl是一种模板标记语言,用于渲染数据,输入html结构.语法简介如下: ${book.name} ${book.name?if_exists} //值是否存在 ${book.name??} //值是 ...
- 简单工厂模式 Simple Factory
简单工厂模式的作用就是定义一个用于创建对象的接口 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化. 先来看看它的组成: 1) 工厂类角色 ...
- Linux第六次学习笔记
存储器层次结构 存储器系统是一个具有不同容量.成本和访问时间的存储设备的层次结构. CPU寄存器保存着最常用的数据. 主存储器(简称主存)暂时存放存储在容量较大的.慢速磁盘上的数据. 高速缓存存储器作 ...
- 发布HTML5 RTS游戏-古代战争
古代战争 游戏介绍 "古代战争"是一个2.5D即时战略游戏,使用了帝国时代2的素材,并参考了它的游戏设计和玩法. 游戏基于YEngine2D引擎开发,具备生产.建造.资源采集.战斗 ...
- bt协议详解 DHT篇(下)
bt协议详解 DHT篇(下) 最近开发了一个免费教程的网站,产生了仔细了解bt协议的想法,这篇文章是bt协议详解系列的第三篇,后续还会写一些关于搜索和索引的东西,都是在开发这个网站的过程中学习到的技术 ...
- 一个基于.NET平台的自动化/压力测试系统设计简述
AutoTest系统设计概述 AutoTest是一个基于.NET平台实现的自动化/压力测试的系统,可独立运行于windows平台下,支持分布式部署,不需要其他配置或编译器的支持.(本质是一个基于协议的 ...
- try-catch和throw,throws的区别和联系
转载:http://blog.sina.com.cn/s/blog_62148d1e0100hkqc.html 区别一:throw 是语句抛出一个异常:throws 是方法抛出一个异常: throw语 ...
- (旧)子数涵数·PS ——素描效果
一.准备素材(均为在百度上下载的) 二.打开ps,并在ps中打开第一张素材 三.复制图层(好习惯) 四.去色将图像变成黑白,图像->调整->去色,快捷键为Ctrl+Shift+U 五,复制 ...
- node 日志
我们主动控制的log4js,还有一些日志是继承好的,错误日志了,进程日志了,请求日志了. 1. var express = require('express');var logger = requir ...
- git点滴的积累
git的基本学习的网址: http://www.yiibai.com/git/git_update_operation.html 0.git首次上传代码 http://www.cnblogs.com/ ...