開始使用Logstash

開始使用Logstash

本節將指導處理安裝Logstash 和確認一切是運行正常的,

後來的章節處理增長負載的配置來處理選擇的使用案例。

這個章節包含下面的主題:

Installing Logstash

Stashing Your First Event: Basic Logstash Example

Parsing Logs with Logstash

Stalled Shutdown Detection

Logstash Processing Pipeline



基本的Logstash的例子:

測試你的Logstash 安裝,運行作基本的Logstash 管道:

cd logstash-2.4.0

bin/logstash -e 'input { stdin { } } output { stdout {} }'

-e flag 讓你指定一個配置直接從命令行, 指定配置做爲命令行讓你快速的測試配置不須要編輯文件在迭代期間。


這個管道從一個標準輸入,stdin,和移動 輸入到標準輸出


使用Logstash 解析日誌:


一個Logstash 管道 在不少使用狀況下有一個或者多個input,和輸出插件。


本節中的場景 建立一個Logstash 配置文件來指定那些插件和討論 每一個插件是作什麼的。


Logstash 配置文件定義你的Logstash 管道。當你啓動一個Logstash 實例,使用-f 選項

來指定配置文件,定義實例的管道

一個Logstash 管道有2個須要的參數, input和output, 以及一個可選的元素,filter.


input 插件 消費源的數據, filter 插件 修改你指定的數據,

ouput 插件寫數據到一個目的地


在這個章節,你建立一個Logstash 管道,讓Apache web logs 做爲輸入,


解析那些日誌來建立特定的,命名命名的字段, 寫解析好的數據到Elasticsarch集羣。


相比定義管道配置在命令行,你能夠定義管道在一個配置文件裏。


下面的文本表示配置管道的概略:

# The # character at the beginning of a line indicates a comment. Use
# comments to describe your configuration.
input {
}
# The filter part of this file is commented out to indicate that it is
# optional.
# filter {
#
# }
output {
}


這個骨架是非功能的, 由於input和output 章節沒有任何正確的選項定義:


開始, 複製和黏貼骨架配置管道到一個文件叫作 first-pipeline.conf  在你的Logstash 目錄。


而後下載示例數據用於下面的例子

配置Logstash 用於文件輸入:

注意:


這個例子 使用文件輸入插件, tail files 在真實的世界,

你可使用Filebeat 來傳輸日誌到Logstash.


開始你的Logstash 管道,配置Logstash 實例從一個文件讀取使用file input 插件:

input {
    file {
        path => "/path/to/file/*.log"
        start_position => beginning 
        ignore_older => 0 
    }
}


默認的文件input 插件的行爲是監控一個文件對於新的信息, 相似於UNIX tail -f 命令的方式。


改變這個默認的行爲,處理整個文件,咱們須要 指定位置 logstash 開始處理文件的位置:


設置ignore_older to 0 來禁用文件年齡檢查 ,這樣文件是被處理的,即便它是一天前的


替換 /path/to/file 爲你的決定路徑

解析 Web logs 使用Grok 過濾插件:


grok 過濾插件 是幾種插件的一種 默認是可用的在logstash裏。


對於細節關於如何管理logstash 插件,查看插件管理文檔。



Grok filter 插件讓你解析非結構化的數據到一些結構化的能夠查詢的 日誌數據


由於grok 過濾插件尋找模式在進來的log data,配置須要你作決定關於如何識別模式,你使用狀況感興趣的。


web server 日誌看起來像:

83.149.9.216 - - [04/Jan/2015:05:13:42 +0000] "GET /presentations/logstash-monitorama-2013/images/kibana-search.png
HTTP/1.1" 200 203023 "http://semicomplete.com/presentations/logstash-monitorama-2013/" "Mozilla/5.0 (Macintosh; Intel
Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"


IP 地址在行開頭是容易識別的, 括號中的時間戳,解析數據,你可使用%{COMBINEDAPACHELOG} grok pattern,


加強你的數據使用Geoip 過濾插件:


除了分析日誌數據爲了更好的搜索, filter plugins 能夠獲得補充信息從現有的數據。


做爲一個例子, geoip 插件 查找IP地址, 獲得地理位置信息從ip地址,增長位置信息到logs


配置你的Logstash 實例使用geoip 過濾插件經過增長下面的行到filer 章節

geoip {
    source => "clientip"
}

geoip 插件配置須要你指定 source field 的名字 包含IP地址用於查找,在這裏例子中,

Clientip 字段包含IP地址。


因爲過濾器是順序評估的, 確保geoip 部分是在grok 部分後面,grok和geoip 部分是嵌套的在filter 部分像這樣:

filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
    geoip {
        source => "clientip"
    }


索引你的數據到Elasticsearch:


如今web logs 是被分紅特定的字段,Logstash 管道能夠索引數據到一個Elasticsearch cluster.

編輯first-pipeline.conf file  替換整個輸出部分使用下面的文本:

output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
    }
}


在這個配置裏, Logstash 使用http 協議鏈接到Elasticsearch


上面的例子 假設Logstash 和Elasticsearch  運行在相同的實例上。

你能夠指定一個遠程的Elasticsearch  經過使用hosts配置來指定像這樣 hosts => [ "es-machine:9092" ].




測試你的初始化管道

在這個點上,你的 first-pipeline.conf file 已經有input,filter和output 部分配置,看起來像這樣:

input {
    file {
        path => "/Users/myusername/tutorialdata/*.log"
        start_position => beginning
        ignore_older => 0
    }
}
filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
    geoip {
        source => "clientip"
    }
}
output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
    }
}

檢驗你的配置,運行下面的命令:

bin/logstash -f first-pipeline.conf --configtest


 --configtest 選項 解析你的配置文件和報告任何錯誤。


當配置文件解析 配置test,啓動Logstash 使用下面的命令:


bin/logstash -f first-pipeline.conf



整合多個input和output 插件



你須要管理來自多個不一樣的源,使用例子能夠須要多個目的地用於你的數據。

你的logstash 管道可使用多個input 和output 來處理那些請求:


在這個章節, 你建立一個Logstash 管道 從一個Twitter feed 輸入,



寫Logstash到文件:

你能夠配置你的Logstash 管道寫數據直接到一個文件使用file output插件。


配置你的Logstash 實例來使用實例來使用file output 插件經過增長下面的行到你的輸出部分


file {
        path => /path/to/target/file
    }


















相關文章
相關標籤/搜索