注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小可尼の博客

Linux后端的技术窝窝

 
 
 

日志

 
 

Rsyslog 队列介绍 及 配置  

2014-01-17 16:46:15|  分类: linux服务器搭建 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

出处:http://blog.chinaunix.net/uid-773723-id-3900229.html

 

rsyslog作为syslog的代替,功能多,性能好。 文档基于rsyslog v7
工作中正好接触了他,使用的是比较新的版本 7.4.2,由于文档都是e文。
自己英语不是很好,磕磕巴巴读完后,自己留个记录。
有啥不对的,大家留言我改一下。
先写一个rsyslog的特性,队列(queue)
英语好的朋友可以看看:http://www.rsyslog.com/doc/queues.html
在说queue之前,说一下rsyslog处理日志的整体流程,看图:

Rsyslog 队列介绍 及 配置 - 小可尼 - 小可尼の博客

 


红色圈起的部分就是队列,在rsyslog中在2个地方设有queue。
从数据流来看,在所有数据进来之后,可以做一些标记或调整,然后放入第一个queue。
这个queue称作 Main queue ,所有进入的数据都会在这里做缓存。
然后后面的 filter engine 会从中读取数据,分门别类的将数据放到各个action queue中。
在Action Processor后,output模块会吧数据读出发送出去。
目标可以是文件,tcp/udp端口,mysql/oracle,甚至snmp或发邮件给你。
所以在整体数据流中,有2个地方可以配置queue来缓存数据。
main queue  : 为了解决在进入数据量突然增加时,后端的filter Engine 不能及时处理就造成瓶颈。
action queue: 为了解决后端output无法发送数据时(如:对端挂掉,网络卡发送不及时),将数据缓存起来,以免日志丢失。
队列的种类:
Direct Queues: 这中队列是直接将数据放出,没有buffer。如果接收方无法处理,数据就会被丢掉。
Disk    Queues: 使用磁盘作为缓存,数据如果不能及时处理,就是用磁盘做缓存。
FixedArray Queues: 使用内存作为队列,预先划分一部分内存作为队列的缓冲空间。
                           如果队列的内存没有用完,这些内存也无法给其他程序使用,这种方法比较省cpu。
LinkedList  Queues: 使用内存作为队列,和FixedArray相反,能动态使用内存。
                           定期对队列做清理,清理过期数据清,释放内存。不过需要点CPU,不过对现在的硬件来说不算啥。
上面2中都是内存队列,内存虽然有着各种先天优势,但有致命缺点就是空间不足。
rsyslog就开发了一个磁盘辅助队列的神器,直接吧前面几个磁盘队列秒了。
讲完了理论,开始写一些配置
main queue:
$WorkDirectory /data/rsyslog_queues           # 磁盘辅助队列存放位置
$MainMsgQueueFileName incoming_queue     # 队列的名字,同时也是队列文件的名字。一般是 incoming_queue.0000001 
$MainMsgQueueType LinkedList                   # 队列种类
$MainMsgQueueDiscardMark   5000000         # 超过数值将日志将被标记丢弃,如果0为不丢弃日志。单位是日志条数,不是储存大小,下面同样。
$MainMsgQueueHighWaterMark 3000000      # 队列上水线,队列中超过配置数值的消息会放在磁盘中。
$MainMsgQueueLowWaterMark  1000000     # 队列下水线,队列中低于配置数值的消息会放在内存中。
$MainMsgQueueMaxDiskSpace 10g               # 磁盘存储最大的空间
$MainMsgQueueSize 8000000                     # 队列容纳最多的消息树,超过后队列会拒绝接受消息。0为队列没有限制。
$MainMsgQueueTimeoutEnqueue 0             # 消息在队列的最长等待时间,超过会标记为过期。0为 无时间限制
$MainMsgQueueSaveOnShutdown on          # 进程关机时,将内存队列中的数据保存到磁盘中
具体链接: http://www.rsyslog.com/doc/rsyslog_conf_global.html
action queue: 很多配置和main queue是一样的,就不解释了。
queue.type="linkedlist"
queue.filename="q_fwd"
queue.timeoutenqueue="0"
queue.highwatermark="500000"
queue.lowwatermark="400000"
queue.discardmark="5000000"
queue.maxdiskspace="5g"
queue.size="2000000"
queue.saveonshutdown="on"
queue.dequeuebatchsize="512"     # 同时出队的数据大小,配置的稍微大点会提高性能。但是要根据实际情况。
具体链接:http://www.rsyslog.com/doc/node28.html
action queue配置都是和某个具体的output一起,对于常用的output有时间我也记录一下。

  评论这张
 
阅读(404)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018