Logstash在Linux上安裝部署


 

Logstash 簡介:

  Logstash 是一個實時數據收集引擎,可收集各類型數據並對其進行分析,過濾和歸納。按照自己條件分析過濾出符合數據導入到可視化界面。它可以實現多樣化的數據源數據全量或增量傳輸,數據標准格式處理,數據格式化輸出等的功能,常用於日志處理。工作流程分為三個階段:

  (1)input數據輸入階段,可接收oracle、mysql、postgresql、file等多種數據源;
  (2)filter數據標准格式化階段,可過濾、格式化數據,如格式化時間、字符串等;
  (3)output數據輸出階段,可輸出到elasticsearch、mongodb、kfka等接收終端。
  那么,接下來將會對每個階段進行講解。

一、官網下載安裝

1、下載logstash-6.6.0安裝包,下載路徑:logstash-6.6.0,然后解壓之es的同級目錄(方便管理);或直接在服務器上下載:

    wget https://artifacts.elastic.co/downloads/logstash/logstash-6.6.0.tar.gz

2、將安裝包上次到服務器,然后解壓安裝包,例如解壓到:/usr/local/

        tar –zxvf logstash-6.6.0.tar.gz 

  重命名安裝目錄

    mv logstash-6.6.0 logstash

 

二、使用測試

注:此處只是簡單測試下Logstash的基本功能

1.接收控制台輸入,Logstash解析輸出到控制台 
  在Logstash目錄下創建test文件夾:

1 [root@cdh4 logstash]# mkdir test
2 [root@cdh4 logstash]# cd test
3 [root@cdh4 test]# vim std_std.conf

  在test目錄下創建 std_std.conf 文件,添加內容:

1 input {
2     stdin{
3     }
4 }
5 output {
6     stdout{
7     }
8 }

  然后到bin目錄下啟動Logstash(基於std_std.conf):

1 ./logstash -f ../test/std_std.conf

  -f 是指基於配置文件的路徑:

  控制台輸入測試:

2.從文件讀取,Logstash解析輸出到控制台 
  我是從取出tomcat的當天access_log作為讀取文件,沒有該文件的可以復制下面一段內容做成測試文件

 1 [root@cdh4 test]# vim access_log.2018-04-10.log
 2 10.2.17.9 - - [10/Apr/2018:09:06:22 +0800] "GET /static/logshow/css/component.css HTTP/1.1" 304 -
 3 10.2.17.9 - - [10/Apr/2018:09:06:22 +0800] "GET /static/logshow/js/EasePack.min.js HTTP/1.1" 304 -
 4 10.2.17.9 - - [10/Apr/2018:09:06:22 +0800] "GET /static/logshow/js/TweenLite.min.js HTTP/1.1" 304 -
 5 10.2.17.9 - - [10/Apr/2018:09:06:22 +0800] "GET /static/logshow/js/rAF.js HTTP/1.1" 304 -
 6 10.2.17.9 - - [10/Apr/2018:09:06:22 +0800] "GET /static/logshow/js/demo-1.js HTTP/1.1" 304 -
 7 10.2.17.9 - - [10/Apr/2018:09:06:22 +0800] "GET /static/logshow/img/demo-1-bg.jpg HTTP/1.1" 304 -
 8 10.2.17.9 - - [10/Apr/2018:09:06:30 +0800] "GET / HTTP/1.1" 302 -
 9 10.2.17.9 - - [10/Apr/2018:09:06:30 +0800] "GET /login HTTP/1.1" 200 3271
10 10.2.17.9 - - [10/Apr/2018:09:06:36 +0800] "POST /login HTTP/1.1" 302 -
11 10.2.17.9 - - [10/Apr/2018:09:06:36 +0800] "GET / HTTP/1.1" 200 11776
12 10.2.17.9 - - [10/Apr/2018:09:06:36 +0800] "GET /static/css/font-awesome.min.css?v=4.4.0 HTTP/1.1" 304 -

  在test目錄下創建 file_std.conf 文件,添加內容:

 1 input{
 2     file{
 3         path =>"/home/logstash/logstash-5.4.0/test/access_log.2018-04-10.log"
 4         start_position=>"beginning"
 5     }
 6 }
 7 
 8 filter{
 9     grok{
10         match=>{
11             "message"=>"%{DATA:clientIp} - - \[%{HTTPDATE:accessTime}\] \"%{DATA:method} %{DATA:requestPath} %{DATA:httpversion}\" %{DATA:retcode} %{DATA:size} \"%{DATA:fromHtml}\" \"%{DATA:useragent}\""
12         }
13 
14         remove_field=>"message"
15     }
16     date{
17         match=>["accessTime","dd/MMM/yyyy:HH:mm:ss Z"]
18     }
19 }
20 
21 output{
22     stdout{
23         codec=>rubydebug
24     }
25 }  

這個配置文件相對比較復雜,而且我們一般在使用elk的時候logstash的配置文件基本也是和這個類似,大同小異了,這里對關鍵部分詳細解說一下。更深入的內容和使用方式,大家可以到elastic官網或者到logstash的最佳實戰頁面去看,網址是:http://udn.yyuap.com/doc/logstash-best-practice-cn/index.html。

input/file/path:這里指定了要對哪個日志文件進行掃描。如果希望掃描多個文件,可以使用*這個路徑通配符;或者使用多個日志路徑以數組形式提供(path=>[“outer-access.log”,”access.log”]);或者直接給定一個目錄,logstash會掃描所有的文件,並監聽是否有新文件。

filter/grok/match/message:里面的DATA和HTTPDATE都是grok語法內置的正則表達式,DATA匹配任意字符,HTTPDATE匹配joda類型的日期格式字符。上例中”[“是匹配“[”。

filter/grok/match/date:是對HTTPDATE日期格式的解釋,joda可以支持很多復雜的日期格式,需要在這里指明才能正確匹配。

remove_field=>”message”:用處是去掉原有的整個日志字符串,僅保留filter解析后的信息。你可以試着去掉這一句就明白他的用處了。

然后啟動就可以直接看到解析輸出到控制台的內容了:

1 ./logstash -f ../test/file_std.conf

 

3.接收控制台輸入,Logstash解析輸出到ElasticSearch集群 

在test目錄下創建 file_es.conf 文件,添加內容:

 1 input{
 2         stdin {}
 3 }
 4 output {
 5         elasticsearch {
 6                 hosts => ["10.10.10.34:9200"]
 7                 index => "yj_index"
 8         }
 9         stdout { codec => rubydebug}
10 }

然后執行測試:

1 ./logstash -f ../test/file_es.conf

可以看到控制台出現了ES-JSON:

再通過head插件查看這些內容有沒有存進去:

可以看到,一切OK

 


免責聲明!

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



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