rsyslog作为syslog的代替,功能多,性能好。 文档基于rsyslog v7
工作中正好接触了他,
使用的是比较新的版本 7.4.2,由于文档都是e文。
自己英语不是很好,磕磕巴巴读完后,自己留个记录。
有啥不对的,大家留言我改一下。
先写一个rsyslog的特性,队列(queue)
英语好的朋友可以看看:
在说queue之前,说一下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 # 进程关机时,将内存队列中的数据保存到磁盘中
具体链接:
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" # 同时出队的数据大小,配置的稍微大点会提高性能。但是要根据实际情况。
具体链接:
action queue配置都是和某个具体的output一起,对于常用的output有时间我也记录一下。
转自:
http://blog.chinaunix.net/uid-773723-id-3900229.html
阅读(3680) | 评论(0) | 转发(0) |