日誌分析平臺ELK之日誌收集器logstash常用外掛配置

1874發表於2020-10-03

  前文我們瞭解了logstash的工作流程以及基本的收集日誌相關配置,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/13761906.html;今天我們來了解下logstash的常用input外掛和filter外掛的相關配置;

  先說filter外掛吧,繼續上一篇部落格的環境,我們配置logstash收集httpd的訪問日誌;

  示例:配置logstash收集日誌的時間戳為日誌生成時的時間戳

  未配置date過濾器規則時,輸出的文件資訊是

  提示:未配置date過濾器規則時,生成的文件中的時間戳資訊是不一樣的;@timestamp是指收集日誌時的時間,timestamp是日誌生成時的時間;

  配置date過濾器規則,讓生成日誌的時間替換收集日誌時的時間

  提示:以上紅框中的配置表示把timestamp欄位的時間替換@timestamp欄位的時間,時間格式為標準的格林威治時間;

  驗證:啟動logstash,看看輸出的日誌中的@timestamp欄位的時間是否還是收集日誌的時間呢?

  提示:現在收集日誌的時間就變成了日誌生成時的時間了;只不過一個是格林威治標準時間,一個是東八區時間,兩個時間相差8小時;這樣配置以後,對於timestamp這個欄位就顯得多餘,我們可以使用remove_field去刪除timestamp欄位即可;如下

  示例:配置logstash收集httpd訪問日誌,基於clientip做地理位置分析

  下載GeoLite2-City資料庫到本地,這個資料庫可以去maxmind官方去下載即可,我這裡已經提前下載好了,直接傳到伺服器上即可;

  提示:以上主要把GeoLite2-City包上傳到指定目錄,然後解壓,把GeoLite2-City.mmdb資料庫檔案在指定目錄做了一個軟連線;這樣做的原因是日後方便更新資料庫;

  配置logstash過濾規則,讓其能夠基於httpd的訪問日誌中的clientip做地理位置分析

  提示:以上配置表示使用geoip過濾器外掛,其中source表示以那個欄位的值作為ip地址分析,target表示分析後的結果儲存在那個欄位上,database表示用那個資料庫檔案;

  驗證:啟動logstash,看看現在輸出的文件是否有geoip欄位?裡面是否記錄了clientip的ip地址資訊呢?

  提示:可以看到配置了geoip過濾器外掛以後,對應的文件中的geoip欄位就把對應的clientip的位置資訊分析後,加入到文件中了;這樣經過logstash分析以後,我們就可以在kibana中配置區域地圖來檢視訪問我們網站的客戶端分佈在世界地圖的那些位置;

  示例:修改欄位名稱

  提示:mutate這個過濾器外掛,主要對欄位做操作,支援對欄位進行增刪查改;比如對欄位重新命名,如上配置;

  驗證:啟動logstash,看看現在輸出的文件中的geoip是否更改為clientipInfo了?

  提示:可以看到原來的geoip欄位名稱已經修改成clientipInfo了;對於這個外掛的用法還有其他操作和配置,可以去參考官方文件中的說明進行配置;

  示例:將logstash收集的資料日誌資料存入redis中

  準備redis伺服器,然後配置redis登入認證

[root@node04 ~]# yum install redis -y
Loaded plugins: fastestmirror
base                                                                                          | 3.6 kB  00:00:00     
epel                                                                                          | 4.7 kB  00:00:00     
extras                                                                                        | 2.9 kB  00:00:00     
updates                                                                                       | 2.9 kB  00:00:00     
(1/2): epel/x86_64/updateinfo                                                                 | 1.0 MB  00:00:00     
(2/2): epel/x86_64/primary_db                                                                 | 6.9 MB  00:00:01     
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package redis.x86_64 0:3.2.12-2.el7 will be installed
--> Processing Dependency: libjemalloc.so.1()(64bit) for package: redis-3.2.12-2.el7.x86_64
--> Running transaction check
---> Package jemalloc.x86_64 0:3.6.0-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=====================================================================================================================
 Package                     Arch                      Version                         Repository               Size
=====================================================================================================================
Installing:
 redis                       x86_64                    3.2.12-2.el7                    epel                    544 k
Installing for dependencies:
 jemalloc                    x86_64                    3.6.0-1.el7                     epel                    105 k

Transaction Summary
=====================================================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 648 k
Installed size: 1.7 M
Downloading packages:
(1/2): jemalloc-3.6.0-1.el7.x86_64.rpm                                                        | 105 kB  00:00:00     
(2/2): redis-3.2.12-2.el7.x86_64.rpm                                                          | 544 kB  00:00:00     
---------------------------------------------------------------------------------------------------------------------
Total                                                                                1.3 MB/s | 648 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : jemalloc-3.6.0-1.el7.x86_64                                                                       1/2 
  Installing : redis-3.2.12-2.el7.x86_64                                                                         2/2 
  Verifying  : redis-3.2.12-2.el7.x86_64                                                                         1/2 
  Verifying  : jemalloc-3.6.0-1.el7.x86_64                                                                       2/2 

Installed:
  redis.x86_64 0:3.2.12-2.el7                                                                                        

Dependency Installed:
  jemalloc.x86_64 0:3.6.0-1.el7                                                                                      

Complete!
[root@node04 ~]# 

  配置redis監聽在本機所有地址的6379埠,並給redis設定認證口令

  啟動redis

  提示:可以看到redis使用我們設定的密碼是可以正常登入到redis伺服器,到此redis就準備好了;

  配置logstash將收集的日誌輸出到redis的5號庫中

  提示:將logstash收集的日誌輸出到redis,需要用到輸出外掛redis,其中我們必須指定redis的主機地址,埠,密碼,資料庫,以及key和data_type;data_type是指定存放到redis是一那種資料結構儲存,list表示儲存為列表;我們知道列表有一個屬性就是從列表取出資料以後,列表裡對應的資料就會消失,這樣一來當有多個logstash在redis中取資料時不會取到重複資料;

  驗證配置檔案語法

  啟動logstash,然後去redis中驗證,看看5號庫中是否有我們定義key生成,對應key中是否有日誌資料?

  去redis上檢視5號庫的情況

  提示:在redis的5號庫中可以看到logstash上配置的key的名稱,對應key裡有資料;

  示例:配置logstash從redis中讀資料

  redis環境還是上面的環境,我們重新開一個伺服器,把logstash安裝上,logstash的安裝請參考上一篇部落格https://www.cnblogs.com/qiuhom-1874/p/13761906.html

  提示:以上配置我們需要在input裡配置,用redis輸入外掛,並明確指定redis的主機,埠,密碼,資料庫,key,以及資料型別;上面在node05上配置logstash將從redis的5號庫採集資料,然後將資料輸出到/root/目錄下的test.log中;

  驗證配置檔案語法

  啟動logstash,然後去node05上看對應目錄下的檔案是否有資料產生?redis對應庫裡的資料是否有減少?

  提示:可以看到啟動logstash,它啟動了一個執行緒去redis中讀資料,然後有啟動了一個執行緒把資料寫到/root/test.log中;

  驗證:在node05上檢視/root目錄下是否有test.log生成?對應檔案中是否有內容?

  提示:可以看到node05的/root目錄下有test.log生成,並且裡面也有資料,資料也是從redis裡拿的日誌資料;

  驗證:到node04上的redis中檢視對應庫中的資料是否在減少?

  提示:在redis的5號庫可以看到logstash在取資料,對應列表的資料在依次減少,最後當logstash把對應列表資料取完以後,對應的列表也就隨之刪除;

  示例:配置logstash收集haproxy傳送給rsyslog的日誌

  安裝haproxy

[root@node03 ~]# yum install haproxy
Loaded plugins: fastestmirror
base                                                                                          | 3.6 kB  00:00:00     
epel                                                                                          | 4.7 kB  00:00:00     
extras                                                                                        | 2.9 kB  00:00:00     
updates                                                                                       | 2.9 kB  00:00:00     
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package haproxy.x86_64 0:1.5.18-9.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=====================================================================================================================
 Package                    Arch                      Version                          Repository               Size
=====================================================================================================================
Installing:
 haproxy                    x86_64                    1.5.18-9.el7                     base                    834 k

Transaction Summary
=====================================================================================================================
Install  1 Package

Total download size: 834 k
Installed size: 2.6 M
Is this ok [y/d/N]: y
Downloading packages:
haproxy-1.5.18-9.el7.x86_64.rpm                                                               | 834 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : haproxy-1.5.18-9.el7.x86_64                                                                       1/1 
  Verifying  : haproxy-1.5.18-9.el7.x86_64                                                                       1/1 

Installed:
  haproxy.x86_64 0:1.5.18-9.el7                                                                                      

Complete!
[root@node03 ~]# 

  配置haproxy將日誌傳送給rsyslog

  配置rsyslog把local2的日誌傳送給node05的517埠(這個埠是一個任意埠,只要在node05上不衝突就好)

  重啟rsylog和haproxy

  配置node05上的logstash,使用輸入外掛rsyslog監聽517埠

  驗證配置檔案語法

  啟動logstash

  提示:可以看到logstash啟動了兩個執行緒監聽了udp的517埠和tcp517埠

  訪問haproxy

  看看對應的標準輸出中是否會列印haproxy的日誌呢?

  提示:可以看到在node05的標準輸出上能夠看到訪問haproxy的日誌列印;

  示例:配置logstash收集tcp某個埠的資料

  驗證配置檔案語法,沒有問題就直接啟動logstash

  驗證:在其他主機上利用nc向node05的52113傳送資料,看看node05上是否會列印我們傳送到資訊內容?

  提示:如果沒有nc命令,直接使用yum install nc 即可;

  提示:在node05上是能夠看到從node01傳送過來的訊息;

  好了,以上是logstash的常用外掛的配置,當然還有很多很多,用到那個不會可以去官方文件查詢相關外掛文件說明進行配置即可;官方文件https://www.elastic.co/guide/en/logstash-versioned-plugins/current/index.html

相關文章