前文咱們瞭解了logstash的工做流程以及基本的收集日誌相關配置,回顧請參考http://www.javashuo.com/article/p-bocmtozs-nt.html;今天咱們來了解下logstash的經常使用input插件和filter插件的相關配置;html
先說filter插件吧,繼續上一篇博客的環境,咱們配置logstash收集httpd的訪問日誌;node
示例:配置logstash收集日誌的時間戳爲日誌生成時的時間戳redis
未配置date過濾器規則時,輸出的文檔信息是數據庫
提示:未配置date過濾器規則時,生成的文檔中的時間戳信息是不同的;@timestamp是指收集日誌時的時間,timestamp是日誌生成時的時間;bash
配置date過濾器規則,讓生成日誌的時間替換收集日誌時的時間服務器
提示:以上紅框中的配置表示把timestamp字段的時間替換@timestamp字段的時間,時間格式爲標準的格林威治時間;數據結構
驗證:啓動logstash,看看輸出的日誌中的@timestamp字段的時間是否仍是收集日誌的時間呢?tcp
提示:如今收集日誌的時間就變成了日誌生成時的時間了;只不過一個是格林威治標準時間,一個是東八區時間,兩個時間相差8小時;這樣配置之後,對於timestamp這個字段就顯得多餘,咱們能夠使用remove_field去刪除timestamp字段便可;以下ide
示例:配置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的安裝請參考上一篇博客http://www.javashuo.com/article/p-bocmtozs-nt.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;