nxlog收集linux日志,Nxlog——日志采集神器简介
(本來(lái)打算一本正經(jīng)的寫(xiě)一篇文章,但是發(fā)現(xiàn)一本正經(jīng)的寫(xiě)我根本就寫(xiě)不出來(lái)(′?`) )
當(dāng)我們開(kāi)始設(shè)計(jì)日志系統(tǒng)的時(shí)候,我們要考慮的第一個(gè)事情就是用什么方式采集客戶(hù)機(jī)上面的日志。而今天要給大家介紹的這款日志采集神器就是Nxlog。
日志采集工具眾多,各有各的特色。
譬如LogStash這頭大象雖然笨重,但是部署簡(jiǎn)單,在各種環(huán)境下都能用。在某些艱苦的條件下,LogStash還是能幫我們大忙的(請(qǐng)自行腦補(bǔ)一臺(tái)XX定制機(jī)上面只有syslog,然后要自己當(dāng)盤(pán)古開(kāi)天辟地的場(chǎng)景)
又譬如rsyslog,基本上已經(jīng)是運(yùn)維采集日志的標(biāo)配了,性能高,大多數(shù)系統(tǒng)都自帶了。
又譬如Heka(老衲已經(jīng)跪了。。。。),好吧,不說(shuō)Heka了。
NXlog
既然有了那么多現(xiàn)成的日志采集工具了,為什么還需要Nxlog呢?其實(shí)nxlog的作者們當(dāng)時(shí)也是考慮過(guò)這個(gè)問(wèn)題的
在幾年前,我們使用了一個(gè)根據(jù)msyslog修改過(guò)來(lái)的版本,它也是一個(gè)插件化的架構(gòu)。但是,和很多syslog的實(shí)現(xiàn)者一樣,它也是基于BSD的syslog的單線(xiàn)程架構(gòu)實(shí)現(xiàn)的,所以它繼承了所有syslog的缺點(diǎn)。我們很快就發(fā)現(xiàn)我們需要一個(gè)更好的日志解決方案。接著,我們就開(kāi)始尋找其他解決方案,有很多像rsyslog、syslog-ng這樣的方案是可以拿來(lái)代替msyslog的,但是大多數(shù)方案還是單線(xiàn)程的,并且不是原生支持Windows系統(tǒng)的。于是我們就開(kāi)始開(kāi)發(fā)NxLog,Nxlog從2009年開(kāi)始開(kāi)發(fā),當(dāng)時(shí)是一個(gè)閉源項(xiàng)目,知道2011年我們才放出了開(kāi)源的CE版本
可以看到作者的心路歷程其實(shí)是這樣的。用syslog系列->跪了->用rsyslog頂上->Windows下又跪了->程序員的本性顯露出來(lái)了,內(nèi)心獨(dú)白(這些都是什么渣渣,我要自己寫(xiě)一個(gè)(/= _ =)/~┴┴)
于是2009年,NXlog就開(kāi)始開(kāi)發(fā),等到2011年,第一個(gè)開(kāi)源版本放出來(lái)了,直到現(xiàn)在已經(jīng)是第7個(gè)年頭了
NXLog的特性
既然是對(duì)現(xiàn)有工具都不滿(mǎn)而制造出來(lái)的產(chǎn)品,自然也會(huì)有屬于它自己的亮點(diǎn)特性
當(dāng)你需要一個(gè)客戶(hù)端通殺Windows、*Nix的時(shí)候,來(lái)一發(fā)nxlog吧!NxLog的夸平臺(tái)設(shè)計(jì)能夠在Windows和*nix下運(yùn)行,一個(gè)客戶(hù)端解決你所有的煩惱,而且占用資源非常少喲
當(dāng)某些重要應(yīng)用不適合在上面放日志處理程序的時(shí)候,來(lái)一發(fā)nxlog吧!Nxlog除了在線(xiàn)處理日志的功能之外,還提供了離線(xiàn)處理日志的功能
當(dāng)你需要做某用戶(hù)在40分鐘內(nèi)連續(xù)登陸失敗xx次則告警的時(shí)候,來(lái)一發(fā)nxlog吧!NXLog提供了命令執(zhí)行以及靜態(tài)計(jì)數(shù)器的功能,可以讓你輕易的達(dá)到這個(gè)目的(當(dāng)然,你可以來(lái)一發(fā)LogInsight體驗(yàn)一下在界面上可視化添加告警的快感)
總結(jié)一下的話(huà)就是我是一個(gè)跨平臺(tái)、不會(huì)丟日志、具備日志緩沖與流量控制、定時(shí)作業(yè)、還帶簡(jiǎn)單編程語(yǔ)言的寶寶。
再具備一定高度的總結(jié)一下的話(huà)呢,就是。。Rsyslog和LogStash等渣渣,不服來(lái)戰(zhàn)
好吧好吧,下面是NXLog的亮點(diǎn)特性完整版,內(nèi)容有點(diǎn)長(zhǎng)(慎點(diǎn)。。),想節(jié)省時(shí)間的看官看上面的總結(jié)就可以啦
真NXLog功能特性
跨平臺(tái):NXLog使用Apache Portable Runtime Library,這使得NXLog能夠像Apache一樣,在不同的平臺(tái)下運(yùn)行,在Windows下,它使用Windows本地庫(kù)進(jìn)行編寫(xiě),不依賴(lài)Cygwin這種庫(kù)
模塊化的架構(gòu):NXLog具有一個(gè)輕量級(jí)模塊化的架構(gòu),它使得模塊是可插拔的,和Apache Web服務(wù)器類(lèi)似。日志格式化、傳輸協(xié)議、數(shù)據(jù)庫(kù)出來(lái)、NXLog語(yǔ)言擴(kuò)展都是模塊。只有當(dāng)模塊是需要使用的時(shí)候,才會(huì)被加載,這能夠讓程序使用更少的內(nèi)存。NXLog的核心只具備出來(lái)文件和Socket的能力,其他的功能都被放到了各個(gè)模塊里面,模塊具備統(tǒng)一的API,開(kāi)發(fā)者可以輕易的編寫(xiě)新的模塊去擴(kuò)展NXLog
客戶(hù)端-服務(wù)端模式:NXLog可以作為客戶(hù)端,也可以作為服務(wù)器端。它能夠采集客戶(hù)機(jī)上的日志并傳輸給遠(yuǎn)程服務(wù)器。它也能夠接收從其他節(jié)點(diǎn)傳輸過(guò)來(lái)的日志信息并轉(zhuǎn)發(fā)到數(shù)據(jù)庫(kù)、文件等其他地方
多種輸入以及輸出:除了可以從日志文件采集日志消息,NXLog還支持許多不同的網(wǎng)絡(luò)和傳輸層協(xié)議,例如TCP、UDP、TLS/SSL、數(shù)據(jù)庫(kù)、還有Socket等方式,它既支持從這些協(xié)議里面讀,也支持從這些協(xié)議里面寫(xiě)。
可擴(kuò)展的多線(xiàn)程架構(gòu):NXLog使用基于事件的架構(gòu),NXLog在處理日志消息的時(shí)候還會(huì)采用并行的模式,讀取消息、輸出消息等日志消息處理操作都是并行處理的。例如:當(dāng)單線(xiàn)程的syslog進(jìn)程在嘗試輸出日志消息到數(shù)據(jù)庫(kù)的時(shí)候,它會(huì)發(fā)生堵塞,后面的UDP輸入將會(huì)丟丟棄,而多線(xiàn)程架構(gòu)的NXLog不僅避免了這個(gè)問(wèn)題還充分的發(fā)揮了操作系統(tǒng)的并行處理能力
高吞吐量:常規(guī)的POSIX系統(tǒng)為監(jiān)控文件描述提供了select或poll的系統(tǒng)調(diào)用,但是這些方式都是不可擴(kuò)展的。現(xiàn)代操作系統(tǒng)具備一些I/O就緒通知的API用于處理大量的文件打開(kāi)以及網(wǎng)絡(luò)連接并發(fā)的情況。NXLog就是使用這些高性能的API對(duì)日志消息進(jìn)行處理的。
消息緩沖:當(dāng)日志消息由于網(wǎng)絡(luò)問(wèn)題導(dǎo)致輸入堵塞的時(shí)候,NXlog會(huì)主動(dòng)調(diào)整輸入的流量。這能夠避免日志消息丟失的情況。同時(shí),NXLog還提供了一些消息緩存的模塊可以讓日志消息暫存到磁盤(pán)或內(nèi)存中。當(dāng)問(wèn)題解決之后,緩沖會(huì)全部刷出,并被清空。除了使用現(xiàn)有的模塊,還可以使用NXLog的語(yǔ)言對(duì)消息進(jìn)行自定義的處理
優(yōu)先級(jí):不是所有的日志消息都是非常重要的,有些日志消息需要被更加有限的處理,NXLog支持為日志路由設(shè)定優(yōu)先級(jí)。例如,這可以避免TCP輸入過(guò)載導(dǎo)致系統(tǒng)丟棄UDP syslog輸入的情況
避免丟棄消息:內(nèi)置的流程控制器不支持丟棄日志消息,所以你不會(huì)看到類(lèi)似這種日志消息被丟棄的情況 Dec 18 18:42:42 server syslog-ng[1234]: STATS: dropped 42。當(dāng)然,在提供丟棄日志消息的條件后,NXLog也能夠主動(dòng)丟棄日志消息。UDP協(xié)議下的Syslog是一個(gè)非常典型的案例,當(dāng)kernel的緩沖區(qū)用滿(mǎn)后,操作系統(tǒng)會(huì)丟掉UDP的消息。當(dāng)日志消息處理導(dǎo)致系統(tǒng)非常繁忙的時(shí)候,系統(tǒng)內(nèi)核的UDP緩沖區(qū)就會(huì)被非常快的寫(xiě)滿(mǎn)。
Apache風(fēng)格的配置:配置方式和Apache服務(wù)器的方式很類(lèi)似,容易學(xué)
內(nèi)置的配置語(yǔ)言:內(nèi)置的配置語(yǔ)言能夠讓管理員更加容易的個(gè)性化去處理日志消息,Perl是解決日志處理問(wèn)題的一個(gè)挺流行的語(yǔ)言。內(nèi)置的nxlog語(yǔ)言和perl的語(yǔ)法非常類(lèi)似
任務(wù)管理器:NXLog內(nèi)置了一個(gè)類(lèi)似Cron的作業(yè)調(diào)度器,并且提供了更多的功能,使用這種特性,管理員能夠自動(dòng)的執(zhí)行一些例如日志輪轉(zhuǎn),系統(tǒng)檢查等的任務(wù)。
日志輪轉(zhuǎn):當(dāng)日志達(dá)到了一定的大小,或者到了某個(gè)具體的時(shí)間,是需要被日志輪轉(zhuǎn)工具進(jìn)行輪轉(zhuǎn)的,file input reader模塊支持?jǐn)U展的日志輪轉(zhuǎn)腳本,它能夠?qū)θ罩疚募M(jìn)行轉(zhuǎn)移/重命名等動(dòng)作,類(lèi)似的,file output writer 模塊能夠監(jiān)控文件的輪轉(zhuǎn),并在輪轉(zhuǎn)完后重新打開(kāi)輸出。
多種多樣的日志消息格式化工具:NXLog支持許多種類(lèi)型的日志格式,例如Syslog、新頒布的IETF Syslog標(biāo)準(zhǔn)、GELF、JSON等等。使用日志轉(zhuǎn)換函數(shù),NXLog還能夠處理多行日志消息或者自定義的日志消息。
高級(jí)日志消息處理能力:除了一些內(nèi)置的功能之外,使用擴(kuò)展模塊可以使NxLog能夠具備解決一些日志格式化,事件管理、正則匹配,日志過(guò)濾、重寫(xiě)、告警等動(dòng)作
離線(xiàn)消息處理模式:有些時(shí)候日志需要離線(xiàn)處理,NXLog提供了這種模式
字符集和i18n支持:日志消息可能是各種各樣的字符集寫(xiě)出來(lái)的,例如UTF-8、latin-2等,Nxlog具備字符集的轉(zhuǎn)換能力
總結(jié)
以上是生活随笔為你收集整理的nxlog收集linux日志,Nxlog——日志采集神器简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 远程读取mysql_远程获取数据库和文件
- 下一篇: linux yum远程安装软件,Linu