rsyslog中有兩種類型的隊列
- main隊列芯肤,主要是將input進rsyslog的數(shù)據(jù)放于其中,等待處理刚夺;
- action隊列钥屈,當(dāng)message進入到main隊列之后屹蚊,filter engine會對從main隊列中讀取數(shù)據(jù)厕氨,并將message發(fā)送到action隊列,等待action將數(shù)據(jù)通過各種不同的output發(fā)到其他日志中轉(zhuǎn)介質(zhì)汹粤。
介紹http://www.rsyslog.com/doc/queues.html 隊列相關(guān)概念腐巢,具體如圖下
rsyslog隊列圖
rsyslog有四種隊列設(shè)置:
1. direct queues:其實就是不進行處理,當(dāng)接受方不能處理時便丟棄
2. disk queues:使用磁盤作為緩沖處理玄括,這種隊列有一個特點就是不會使用任何內(nèi)存空間進行隊列緩沖,所以這種隊列處理是可靠處理肉瓦。同時由于進行磁盤讀寫所以這種隊列也是最慢的一種隊列模式遭京。這種隊列處理比較適合那種對數(shù)據(jù)安全性要求較高的日志處理。
3. in-memory queues:使用內(nèi)存作為緩沖泞莉,這種模式的速度最快哪雕,當(dāng)然它不能逃脫系統(tǒng)故障。它甚至可以在目標(biāo)系統(tǒng)down掉的情況下緩存日志文件鲫趁。另外它不會在內(nèi)存以外的地方緩存日志斯嚎,但是當(dāng)發(fā)送端出現(xiàn)問題的時候內(nèi)存中的日志就over了。
它有兩種模式:LinkedList:動態(tài)分配挨厚; FixedArray:預(yù)分配堡僻。
4. disk-assisted memory queues:當(dāng)一個disk queue 的QueueFileName被定義在in-memory queues隊列設(shè)置中時,這個in-memory queue 會自動變成disk-assisted memory queue疫剃。這種隊列模式集成了disk-queue和in-memory queue 的優(yōu)點钉疫,當(dāng)primary queue滿了或者需要關(guān)閉rsyslog的時候就會激活disk-queue的磁盤讀寫。
這種隊列官方推薦為通過 tcp action 發(fā)數(shù)據(jù)到database場景下的隊列巢价。
原理:首先其內(nèi)部設(shè)定了兩個變量:high watermark和low watermark牲阁,當(dāng)queue達到high watermark 時固阁,會將message寫進disk queue,直到達到 low watermark城菊。