日志收集之nxlog


一,軟件介紹

    nxlog 是用 C 語言寫的一個開源日志收集處理軟件,它是一個模塊化、多線程、高性能的日志管理解決方案,支持多平台。可以處理來自許多不同來源的大量事件日志。支持的日志處理類型包括重寫,關聯,警報,過濾和模式匹配。其他功能包括計划,日志文件輪換,緩沖和優先處理。處理完成后,NXLog可以以任何支持的格式存儲或轉發事件日志。輸入,輸出和處理采用模塊化架構和強大的配置語言實現。

    Nxlog 的 module 共分為4種,分別為:Input module 負責從各種數據源(如 file, archive, tcp, udp等)中采集數據,Output module 定義了該如何處理采集的數據,我們可以以文件的方式保存下來,也可能通過 tcp,udp 發出去。Processor module 負責對采集的數據進行處理,比如做一些內容過濾,格式轉換之類的。Extension module 主要是用來擴展讀寫數據的接口,它可以針對特定的數據類型進行特定的處理.這里面 input 和 output 模塊是必不可少的,processor 和 extension 模塊的話可添加與不加

    

二,特性

  跨平台:NXLog使用Apache Portable Runtime Library,這使得NXLog能夠像Apache一樣,在不同的平台下運行,在Windows下,它使用Windows本地庫進行編寫,不依賴Cygwin這種庫

  模塊化的架構:NXLog具有一個輕量級模塊化的架構,它使得模塊是可插拔的,和Apache Web服務器類似。日志格式化、傳輸協議、數據庫出來、NXLog語言擴展都是模塊。只有當模塊是需要使用的時候,才會被加載,這能夠讓程序使用更少的內存。NXLog的核心只具備出來文件和Socket的能力,其他的功能都被放到了各個模塊里面,模塊具備統一的API,開發者可以輕易的編寫新的模塊去擴展NXLog
客戶端-服務端模式:NXLog可以作為客戶端,也可以作為服務器端。它能夠采集客戶機上的日志並傳輸給遠程服務器。它也能夠接收從其他節點傳輸過來的日志信息並轉發到數據庫、文件等其他地方
多種輸入以及輸出:除了可以從日志文件采集日志消息,NXLog還支持許多不同的網絡和傳輸層協議,例如TCP、UDP、TLS/SSL、數據庫、還有Socket等方式,它既支持從這些協議里面讀,也支持從這些協議里面寫。

  可擴展的多線程架構:NXLog使用基於事件的架構,NXLog在處理日志消息的時候還會采用並行的模式,讀取消息、輸出消息等日志消息處理操作都是並行處理的。例如:當單線程的syslog進程在嘗試輸出日志消息到數據庫的時候,它會發生堵塞,后面的UDP輸入將會丟丟棄,而多線程架構的NXLog不僅避免了這個問題還充分的發揮了操作系統的並行處理能力

  高吞吐量:常規的POSIX系統為監控文件描述提供了select或poll的系統調用,但是這些方式都是不可擴展的。現代操作系統具備一些I/O就緒通知的API用於處理大量的文件打開以及網絡連接並發的情況。NXLog就是使用這些高性能的API對日志消息進行處理的。

  消息緩沖:當日志消息由於網絡問題導致輸入堵塞的時候,NXlog會主動調整輸入的流量。這能夠避免日志消息丟失的情況。同時,NXLog還提供了一些消息緩存的模塊可以讓日志消息暫存到磁盤或內存中。當問題解決之后,緩沖會全部刷出,並被清空。除了使用現有的模塊,還可以使用NXLog的語言對消息進行自定義的處理

  優先級:不是所有的日志消息都是非常重要的,有些日志消息需要被更加有限的處理,NXLog支持為日志路由設定優先級。例如,這可以避免TCP輸入過載導致系統丟棄UDP syslog輸入的情況
避免丟棄消息:內置的流程控制器不支持丟棄日志消息,所以你不會看到類似這種日志消息被丟棄的情況 Dec 18 18:42:42 server syslog-ng[1234]: STATS: dropped 42。當然,在提供丟棄日志消息的條件后,NXLog也能夠主動丟棄日志消息。UDP協議下的Syslog是一個非常典型的案例,當kernel的緩沖區用滿后,操作系統會丟掉UDP的消息。當日志消息處理導致系統非常繁忙的時候,系統內核的UDP緩沖區就會被非常快的寫滿。

  Apache風格的配置:配置方式和Apache服務器的方式很類似,容易學

  內置的配置語言:內置的配置語言能夠讓管理員更加容易的個性化去處理日志消息,Perl是解決日志處理問題的一個挺流行的語言。內置的nxlog語言和perl的語法非常類似

  任務管理器:NXLog內置了一個類似Cron的作業調度器,並且提供了更多的功能,使用這種特性,管理員能夠自動的執行一些例如日志輪轉,系統檢查等的任務。

  日志輪轉:當日志達到了一定的大小,或者到了某個具體的時間,是需要被日志輪轉工具進行輪轉的,file input reader模塊支持擴展的日志輪轉腳本,它能夠對日志文件進行轉移/重命名等動作,類似的,file output writer 模塊能夠監控文件的輪轉,並在輪轉完后重新打開輸出。
多種多樣的日志消息格式化工具:NXLog支持許多種類型的日志格式,例如Syslog、新頒布的IETF Syslog標准、GELF、JSON等等。使用日志轉換函數,NXLog還能夠處理多行日志消息或者自定義的日志消息。
高級日志消息處理能力:除了一些內置的功能之外,使用擴展模塊可以使NxLog能夠具備解決一些日志格式化,事件管理、正則匹配,日志過濾、重寫、告警等動作

  離線消息處理模式:有些時候日志需要離線處理,NXLog提供了這種模式

  字符集和i18n支持:日志消息可能是各種各樣的字符集寫出來的,例如UTF-8、latin-2等,Nxlog具備字符集的轉換能力

三,安裝

wget https://nxlog.co/system/files/products/files/348/nxlog-ce-2.10.2150-1_rhel6.x86_64.rpm

 rpm -ivh nxlog-ce-2.10.2150-1_rhel6.x86_64.rpm 

 

  報錯,顯示沒有相關的組建

       yum install libdbi

     然后rpm -ivh nxlog-ce-2.10.2150-1_rhel6.x86_64.rpm

  

  查看相關的文件位置

  

 1 [root@web01 filebeat]# rpm -ql nxlog-ce-2.10.2150-1.x86_64
 2 /etc/init.d/nxlog
 3 /etc/nxlog.conf
 4 /usr/bin/nxlog
 5 /usr/bin/nxlog-processor
 6 /usr/bin/nxlog-stmnt-verifier
 7 /usr/libexec/nxlog/modules/extension
 8 /usr/libexec/nxlog/modules/extension/xm_charconv.so
 9 /usr/libexec/nxlog/modules/extension/xm_csv.so
10 /usr/libexec/nxlog/modules/extension/xm_exec.so
11 /usr/libexec/nxlog/modules/extension/xm_fileop.so
12 /usr/libexec/nxlog/modules/extension/xm_gelf.so
13 /usr/libexec/nxlog/modules/extension/xm_json.so
14 /usr/libexec/nxlog/modules/extension/xm_kvp.so
15 /usr/libexec/nxlog/modules/extension/xm_multiline.so
16 /usr/libexec/nxlog/modules/extension/xm_perl.so
17 /usr/libexec/nxlog/modules/extension/xm_syslog.so
18 /usr/libexec/nxlog/modules/extension/xm_wtmp.so
19 /usr/libexec/nxlog/modules/extension/xm_xml.so
20 /usr/libexec/nxlog/modules/input
21 /usr/libexec/nxlog/modules/input/im_dbi.so
22 /usr/libexec/nxlog/modules/input/im_exec.so
23 /usr/libexec/nxlog/modules/input/im_file.so
24 /usr/libexec/nxlog/modules/input/im_internal.so
25 /usr/libexec/nxlog/modules/input/im_kernel.so
26 /usr/libexec/nxlog/modules/input/im_mark.so
27 /usr/libexec/nxlog/modules/input/im_null.so
28 /usr/libexec/nxlog/modules/input/im_ssl.so
29 /usr/libexec/nxlog/modules/input/im_tcp.so
30 /usr/libexec/nxlog/modules/input/im_testgen.so
31 /usr/libexec/nxlog/modules/input/im_udp.so
32 /usr/libexec/nxlog/modules/input/im_uds.so
33 /usr/libexec/nxlog/modules/output
34 /usr/libexec/nxlog/modules/output/om_blocker.so
35 /usr/libexec/nxlog/modules/output/om_dbi.so
36 /usr/libexec/nxlog/modules/output/om_exec.so
37 /usr/libexec/nxlog/modules/output/om_file.so
38 /usr/libexec/nxlog/modules/output/om_http.so
39 /usr/libexec/nxlog/modules/output/om_null.so
40 /usr/libexec/nxlog/modules/output/om_ssl.so
41 /usr/libexec/nxlog/modules/output/om_tcp.so
42 /usr/libexec/nxlog/modules/output/om_udp.so
43 /usr/libexec/nxlog/modules/output/om_uds.so
44 /usr/libexec/nxlog/modules/processor
45 /usr/libexec/nxlog/modules/processor/pm_blocker.so
46 /usr/libexec/nxlog/modules/processor/pm_buffer.so
47 /usr/libexec/nxlog/modules/processor/pm_evcorr.so
48 /usr/libexec/nxlog/modules/processor/pm_filter.so
49 /usr/libexec/nxlog/modules/processor/pm_norepeat.so
50 /usr/libexec/nxlog/modules/processor/pm_null.so
51 /usr/libexec/nxlog/modules/processor/pm_pattern.so
52 /usr/libexec/nxlog/modules/processor/pm_transformer.so
53 /usr/share/doc/nxlog-ce/ChangeLog.txt
54 /usr/share/doc/nxlog-ce/figures
55 /usr/share/doc/nxlog-ce/figures/architecture.png
56 /usr/share/doc/nxlog-ce/figures/architecture1.png
57 /usr/share/doc/nxlog-ce/figures/architecture2.png
58 /usr/share/doc/nxlog-ce/figures/msi-installer.png
59 /usr/share/doc/nxlog-ce/figures/windows-service.png
60 /usr/share/doc/nxlog-ce/nxlog-reference-manual.html
61 /usr/share/doc/nxlog-ce/nxlog-reference-manual.pdf
62 /usr/share/nxlog-ce/core-fields.xml
63 /usr/share/nxlog-ce/im_internal-fields.xml
64 /usr/share/nxlog-ce/im_mark-fields.xml
65 /usr/share/nxlog-ce/im_mseventlog-fields.xml
66 /usr/share/nxlog-ce/im_msvistalog-fields.xml
67 /usr/share/nxlog-ce/im_ssl-fields.xml
68 /usr/share/nxlog-ce/im_tcp-fields.xml
69 /usr/share/nxlog-ce/im_udp-fields.xml
70 /usr/share/nxlog-ce/pm_norepeat-fields.xml
71 /usr/share/nxlog-ce/pm_pattern-fields.xml
72 /usr/share/nxlog-ce/xm_syslog-fields.xml
73 /usr/share/perl5/vendor_perl/Log/Nxlog.pm
74 /var/lib/nxlog/cert
75 /var/log/nxlog
76 /var/run/nxlog
77 /var/spool/nxlog

 

 

可以看見對應的啟動文件與配置文件目錄

編輯配置文件 

## This is a sample configuration file. See the nxlog reference manual about the
## configuration options. It should be installed locally under
## /usr/share/doc/nxlog-ce/ and is also available online at
## http://nxlog.org/docs

########################################
# Global directives                    #
########################################
User nxlog
Group nxlog

LogFile /var/log/nxlog/nxlog.log
LogLevel INFO

########################################
# Modules                              #
########################################
<Extension _syslog>
    Module      xm_syslog
</Extension>

<Input in1>
    Module       im_file
    File        '/application/nginx/logs/*.log'
    SavePos     True
</Input>

<Output fileout1>
    Module    om_file
    File    "/var/log/logmsg.txt"
    Exec    if $Message =~ /error/ $SeverityValue = syslog_severity_value("error");
    Exec    to_syslog_bsd();
</Output>

<Output out>
    Module      om_tcp
    Host        10.0.0.223
    Port        514
</Output>

########################################
# Routes                               #
########################################
<Route tcproute>
    Path    in1 => out
</Route>

 

啟動軟件

/etc/init.d/nxlog restart
1 root@web01 filebeat]# /etc/init.d/nxlog restart
2 Restarting nxlog daemon...
3 Starting nxlog daemon...
4 nxlog started!
5 nxlog restarted

好像啟動了查看日志發現問題了

logstash 進行對接配置

  

input {
   tcp {
        port => 514
}
   redis {
        data_type => "list"
        host => "10.0.0.7"
        db => "1"
        port => "6379"
        password => "123"
        key => "filesystem-log-5612"

    }
}

output {
    elasticsearch {
        hosts => ["10.0.0.223:9200"]
        index => "filesystem-log-5612-%{+YYYY.MM.dd}"
    }
}

有端口了

再到客戶端運行

/etc/init.d/nxlog restart

可以了

到head查看,日志寫一塊了,可能不怎么清楚,

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM