日誌**需要部署在客戶的機子上,所以不能太大,也不能消耗太多效能,根據需求找了以下幾個開源的方案:
名稱開發語言
rpm安裝包大小
filebeat
golang
22.8m
rsyslog
c717kb
這是網上的比較,比較全面:
1,filebeat支援的日誌獲取方式
1)通過模組獲取物件 :
apache , auditd , aws , cef , cisco , coredns elasticsearch , envoyproxy , google cloud , haproxy , ibm mq , icinga , iis , iptables , kafka , kibana , logstash , mongodb , mssql , mysql , nats , netflow , nginx , osquery , palo alto networks , postgresql , rabbitmq , redis , santa , suricata , system , traefik , zeek (bro)
這是官網上對應的詳細資訊: s.html
2)通過手動配置filebeat :
log , stdin , container , kafka , redis , udp , docker , tcp , syslog , s3 , netflow , google pub/sub
這是手動配置的詳細說明:
2,filebeat日誌輸出方式
支援以下幾種輸出方式:
elasticsearch , logstash , kafka , redis , file , console , elastic cloud
這是官網的詳細資訊:
3,優勢
filebeat 只是乙個二進位制檔案沒有任何依賴。它占用資源極少,儘管它還十分年輕,正式因為它簡單,所以幾乎沒有什麼可以出錯的地方,所以它的可靠性還是很高的。它也為我們提供了很多可以調節的點,例如:它以何種方式搜尋新的檔案,以及當檔案有一段時間沒有發生變化時,何時選擇關閉檔案控制代碼。
4,劣勢
filebeat 的應用範圍十分有限,所以在某些場景下我們會碰到問題。例如,如果使用 logstash 作為下游管道,我們同樣會遇到效能問題。正因為如此,filebeat 的範圍在擴大。開始時,它只能將日誌傳送到 logstash 和 elasticsearch,而現在它可以將日誌傳送給 kafka 和 redis,在 5.x 版本中,它還具備過濾的能力。
1,rsyslog支援的日誌獲取方式
獲取物件 :
rfc3195 , batch report , docker , text file , gssapi syslog , systemd journal , read from apache kafkakernel log , /dev/kmsg log , mark message , program integration , generate periodic statistics of internal counters , plain tcp syslog , relp , solaris , tcp syslog , tuxedo ulog , udp syslog , unix socket
這是官網的詳細說明:
2,rsyslog日誌輸出方式
支援以下幾種輸出方式:amqp 1.0 messaging , clickhouse , elasticsearch , file , syslog forwarding , hadoop filesystem , redis , http , hadoop httpfs , systemd journal , write to apache kafkageneric database , mail , mongodb , mysql database , oracle database , postgresql database , pipe , program integration , rabbitmq , relp , ruleset output/including , snmp trap , stdout output , udp spoofing output , notify users , unix sockets , guardtime log signature provider (gt) , keyless signature infrastructure provider (ksi) , ksi signature provider (rsyslog-ksi-ls12)
這是官網的詳細說明:
3,優勢
rsyslog 是經測試過的最快的傳輸工具。如果只是將它作為乙個簡單的 router/shipper 使用,幾乎所有的機器都會受頻寬的限制,但是它非常擅長處理解析多個規則。它基於語法的模組(mmnormalize)無論規則數目如何增加,它的處理速度始終是線性增長的。這也就意味著,如果當規則在 20-30 條時,如解析 cisco 日誌時,它的效能可以大大超過基於正則式解析的 grok ,達到 100 倍(當然,這也取決於 grok 的實現以及 liblognorm 的版本)。
它同時也是我們能找到的最輕的解析器,當然這也取決於我們配置的緩衝。
4,劣勢
rsyslog 的配置工作需要更大的代價(這裡有一些例子),這讓兩件事情非常困難:
文件難以搜尋和閱讀,特別是那些對術語比較陌生的開發者。
5.x 以上的版本格式不太一樣(它擴充套件了 syslogd 的配置格式,同時也仍然支援舊的格式),儘管新的格式可以相容舊格式,但是新的特性(例如,elasticsearch 的輸出)只在新的配置下才有效,然後舊的外掛程式(例如,postgres 輸出)只在舊格式下支援。
儘管在配置穩定的情況下,rsyslog 是可靠的(它自身也提供多種配置方式,最終都可以獲得相同的結果),它還是存在一些 bug 。
通過對兩種工具的對比,雙方的拓展性都不錯,但是filebeat的使用難度遠小於rsyslog.所以如果強調效能推薦rsyslog,如果強調快速開發及易維護,則推薦filebeat
logstash與filebeat收集日誌
1 背景介紹 日誌收集,採用的是 elk 框架,即 elasticsearch,logstash,kibana,另外還有 filebeat 元件,其中 filebeat 用於掃瞄日誌檔案,將日誌傳送到 logstash 服務,logstash 服務則完成將日誌切分,傳送到 elasticsearch...
filebeat 外掛程式開發
filebeat是乙個輕量的日誌收集工具,全套使用go語言開發。我目前遇到的問題是,在收集的時候需要對資料進行取樣,取樣比和取樣形式要靈活,因為可能在多個專案會使用到這個日誌收集功能。剛開始我仔細研究filebeat的配置,我感覺他自身應該帶有採集需求,然而並沒有。於是我想著去修改他的原始碼,這樣也...
filebeat 啟動流程
因為各種各樣的原因,好久沒有寫部落格了,還是希望能夠堅持下來 講解一下filebeat的啟動流程吧,核心功能先不描述了0.0 filebeat啟動入口在main.go檔案內,cmd.rootcmd.execute 啟動filebeat func main 在filebeat cmd root.go檔...