第五章·Logstash深刻-日誌收集

1.Logstash收集單個日誌到文件中

file模塊收集日誌

不難理解,咱們的日誌一般都是在日誌文件中存儲的,因此,當咱們在使用INPUT插件時,收集日誌,須要使用file模塊,從文件中讀取日誌的內容,那麼接下來說解的是,將日誌內容輸出到另外一個文件中,如此一來,咱們能夠將日誌文件贊成目錄,方便查找。php

注意:Logstash與其餘服務不一樣,收集日誌的配置文件須要咱們根據實際狀況本身去寫。
前提:須要Logstash對被收集的日誌文件有讀的,而且對要寫入的文件,有寫入的權限。vim

#進入Logstash配置文件目錄下 [root@elkstack03 ~]# cd /etc/logstash/conf.d/ #編輯Logstash收集日誌的配置文件 [root@elkstack03 conf.d]# vim message.conf #輸入插件 input { #文件模塊 file { #日誌類型 type => "message-log" #日誌路徑 path => "/var/log/messages" #第一次收集日誌從頭開始 start_position => "beginning" } } #輸出插件 output { #文件模塊 file { #輸出路徑 path => "/tmp/message_%{+yyyy.MM.dd}.log" } } #檢測語法 [root@elkstack03 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/message.conf -t Configuration OK 

結果以下圖所示:
瀏覽器

#若是語法沒有錯,那就能夠啓動Logstash了,去掉-t,加上&便可 [root@elkstack03 ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/message.conf & 

啓動成功結果以下:
elasticsearch


驗證收集數據
#查看tmp目錄下是否生成日誌文件 [root@elkstack03 ~]# ll /tmp/ 總用量 1 -rw-r--r-- 1 root root 291 3月 30 22:05 message_2019.03.30.log #查看日誌內容(日誌中就一條) [root@elkstack03 ~]# cat /tmp/message_2019.03.30.log {"path":"/var/log/messages","@timestamp":"2019-03-30T14:05:35.103Z","@version":"1","host":"0.0.0.0","message":"Mar 26 21:23:02 elkstack03 rsyslogd: [origin software=\"rsyslogd\" swVersion=\"5.8.10\" x-pid=\"1073\" x-info=\"http://www.rsyslog.com\"] rsyslogd was HUPed","type":"message-log"} #往系統日誌中寫入數據 [root@elkstack03 ~]# echo zls_test_message >> /var/log/messages #再次查看收集到的日誌內容(變成了兩條) [root@elkstack03 ~]# cat /tmp/message_2019.03.30.log {"path":"/var/log/messages","@timestamp":"2019-03-30T14:05:35.103Z","@version":"1","host":"0.0.0.0","message":"Mar 26 21:23:02 elkstack03 rsyslogd: [origin software=\"rsyslogd\" swVersion=\"5.8.10\" x-pid=\"1073\" x-info=\"http://www.rsyslog.com\"] rsyslogd was HUPed","type":"message-log"} {"path":"/var/log/messages","@timestamp":"2019-03-30T14:07:37.071Z","@version":"1","host":"0.0.0.0","message":"zls_test_message","type":"message-log"} 

開啓兩個窗口實時查看:測試

#右邊窗口實時查看日誌 [root@elkstack03 ~]# tail -f /tmp/message_2019.03.30.log #左邊窗口往系統日誌中插入數據 [root@elkstack03 ~]# echo 1 >> /var/log/messages [root@elkstack03 ~]# echo 2 >> /var/log/messages [root@elkstack03 ~]# echo 3 >> /var/log/messages 

結果以下圖所示:
spa

2.Logstash收集多個日誌到文件中

#進入Logstash配置文件目錄 [root@elkstack03 ~]# cd /etc/logstash/conf.d/ #編輯配置文件 [root@elkstack03 conf.d]# vim system_log.conf #輸入插件 input { #文件模塊 file { #日誌路徑 path => "/var/log/messages" #日誌類型 type => "system_log" #第一次收集從頭收集 start_position => "beginning" #收集日誌間隔時間3秒 stat_interval => "3" } #文件模塊 file { #日誌路徑 path => "/var/log/secure" #日誌類型 type => "secure_log" #第一次收集從頭收集 start_position => "beginning" #收集日誌間隔時間3秒 stat_interval => "3" } } #輸出插件 output { #判斷若是類型是system_log則輸出到指定路徑 if [type] == "system_log" { #文件模塊 file { #日誌輸出路徑 path => "/tmp/message2_%{+yyyy.MM.dd}.log" }} #判斷若是類型是secure_log則輸出到指定路徑 if [type] == "secure_log" { #文件模塊 file { #日誌輸出路徑 path => "/tmp/secure_%{+yyyy.MM.dd}.log" }} } #啓動Logstash [root@elkstack03 conf.d]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/system_log.conf & 

驗證收集數據
#查看tmp目錄是否有新文件 [root@elkstack03 ~]# ll /tmp/ 總用量 12 -rw-r--r-- 1 root root 291 3月 30 22:05 message_2019.03.30.log -rw-r--r-- 1 root root 294 3月 30 23:00 message2_2019.03.30.log -rw-r--r-- 1 root root 286 3月 30 23:00 secure_2019.03.30.log #查看新收集的message日誌 [root@elkstack03 ~]# cat /tmp/message2_2019.03.30.log {"path":"/var/log/messages","@timestamp":"2019-03-30T15:00:05.454Z","@version":"1","host":"0.0.0.0","message":"test_message","type":"message_log"} #查看新收集的secure日誌 [root@elkstack03 ~]# cat /tmp/secure_2019.03.30.log {"path":"/var/log/secure","@timestamp":"2019-03-30T15:00:24.216Z","@version":"1","host":"0.0.0.0","message":"test_secure","type":"secure_log"} 

開啓多個窗口實時查看數據:插件

#中間窗口實時追蹤message日誌 [root@elkstack03 ~]# tail -f /tmp/message2_2019.03.30.log #右邊窗口實時追蹤secure日誌 [root@elkstack03 ~]# tail -f /tmp/secure_2019.03.30.log #往message日誌中插入數據 [root@elkstack03 ~]# echo 1 >> /var/log/messages [root@elkstack03 ~]# echo 2 >> /var/log/messages [root@elkstack03 ~]# echo 3 >> /var/log/messages #往secure日誌中插入數據 [root@elkstack03 ~]# echo 1 >> /var/log/secure [root@elkstack03 ~]# echo 2 >> /var/log/secure [root@elkstack03 ~]# echo 3 >> /var/log/secure 

3d

3.Logstash收集多個日誌到Elasticsearch中

以前講到Logstash收集多個日誌到文件中,實際上,咱們將輸出源從文件改到Elasticsearch中便可。日誌

#進入Logstash配置文件目錄 [root@elkstack03 ~]# cd /etc/logstash/conf.d/ #編輯配置文件 [root@elkstack03 conf.d]# vim system_es.conf #輸入插件 input { #文件模塊 file { #日誌路徑 path => "/var/log/messages" #日誌類型 type => "message_log" #第一次收集從頭收集 start_position => "beginning" #收集日誌間隔時間3秒 stat_interval => "3" } #文件模塊 file { #日誌路徑 path => "/var/log/secure" #日誌類型 type => "secure_log" #第一次收集從頭收集 start_position => "beginning" #收集日誌間隔時間3秒 stat_interval => "3" } } #輸出插件 output { #判斷若是類型是system_log則輸出到指定路徑 if [type] == "message_log" { #elasticsearch模塊 elasticsearch { #es的ip及端口 hosts => ["10.0.0.51:9200"] #es的索引名稱,也就是日誌名稱 index => "message_log_%{+YYYY.MM.dd}" }} #判斷若是類型是secure_log則輸出到指定路徑 if [type] == "secure_log" { #es模塊 elasticsearch { #es的ip及端口 hosts => ["10.0.0.51:9200"] #es的索引名稱,也就是日誌名稱 index => "secure_log_%{+YYYY.MM.dd}" }} } #啓動Logstash [root@elkstack03 ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/system_es.conf & 

啓動成功,結果以下:
code

打開瀏覽器,訪問:http://10.0.0.51:9100 查看是否有新索引添加

若是沒有查看到新數據,那麼能夠往日誌文件中插入幾條測試數據,再刷新頁面便可。

[root@elkstack03 ~]# echo test_message_to_es >> /var/log/messages [root@elkstack03 ~]# echo test_secure_to_es >> /var/log/secure 

在數據瀏覽中,咱們能夠查看到message_log_2019.03.30日誌的內容,在message中顯示剛纔插入的數據:test_message_to_es

在數據瀏覽中,咱們能夠查看到secure_log_2019.03.30日誌的內容,在message中顯示剛纔插入的數據:test_secure_to_es

相關文章
相關標籤/搜索