日誌分析平台ELK之日誌收集器logstash常用插件配置
前文我們了解了logstash的工作流程以及基本的收集日誌相關配置,回顧請參考//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的安裝請參考上一篇部落格//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的常用插件的配置,當然還有很多很多,用到那個不會可以去官方文檔查找相關插件文檔說明進行配置即可;官方文檔//www.elastic.co/guide/en/logstash-versioned-plugins/current/index.html;