一:logstash介紹
Logstash在elk系統中為數據存儲,報表查詢和日志解析創建了一個功能強大的管道鏈。Logstash提供了多種多樣的 input,filters,codecs和output組件,logstash由以下三部分組成
input數據輸入端,可以接收來自任何地方的源數據
1:file:從文件中讀取
2:syslog:監聽在514端口的系統日志信息,並解析成RFC3164格式
3:redis:從redis-server list 中獲取
4:beat:接收來自Filebeat的事件
filter數據中轉層,主要進行格式處理,數據類型轉換、數據過濾、字段添加,修改等,主要用做過濾
1:grok: 通過正則解析和結構化任何文本。Grok 目前是logstash最好的方式對非結構化日志數據解析成結構化和可查詢化。logstash內置了120個匹配模式,滿足大部分需求。
2:mutate: 在事件字段執行一般的轉換。可以重命名、刪除、替換和修改事件字段。
3:drop: 完全丟棄事件,如debug事件。
4:clone: 復制事件,可能添加或者刪除字段。
5:geoip: 添加有關IP地址地理位置信息。
output是logstash工作的最后一個階段,負責將數據輸出到指定位置,兼容大多數應用
1:elasticsearch: 發送事件數據到 Elasticsearch,便於查詢,分析,繪圖。
2:file: 將事件數據寫入到磁盤文件上。
3:mongodb:將事件數據發送至高性能NoSQL mongodb,便於永久存儲,查詢,分析,大數據分片。
4:redis:將數據發送至redis-server,常用於中間層暫時緩存。
5:graphite: 發送事件數據到graphite
6:statsd: 發送事件數據到 statsd。
二:logstash啟動方式
logstash分別由-e和-f兩種啟動方式
-e:用來快速測試不用修改配置文件,一般用來調試!
-f :指定配置文件啟動,需要把基本配置寫入文件中啟動,這里比較內容比較復雜,涉及到如何采集、過濾以及輸出
1:下面進行-e啟動方式演示
[root@localhost ~]#
logstash -e "input {stdin {} } output {stdout {} }"
hell ghs //輸入字符信息
Sending Logstash's logs to /usr/local/elk/logstash/logs which is now configured via log4j2.properties
The stdin plugin is now waiting for input:
[2017-11-24T19:15:06,655][INFO ][logstash.agent ] Pipelines running {:count=>1, :pipelines=>["main"]}
2017-11-24T11:15:06.704Z localhost.localdomain hell ghs //這里顯示的上面輸入的字符串
##stdin {} :表示標准輸入,stdout {} :表示標准輸出
2:-f 配置文件啟動方式
編輯一個配置文件,指定輸入輸出
[root@localhost ~]# vim ceshi.conf
input {
stdin {}
}
output{
stdout {
codec => rubydebug {}
}
}
## codec
執行配置文件
[root@localhost ~]# logstash -f test.conf
hell ghs //輸入字符串
{
"@version" => "1",
"host" => "localhost.localdomain",
"@timestamp" => 2017-11-24T12:16:43.086Z,
"message" => "hell ghs"
}
1:編寫一個過濾系統日志的配置文件
[root@localhost ~]# vim messages.conf
input {
file{
path => "/var/log/messages"
type => "syslog"
}
}
output {
stdout { codec => rubydebug }
}
##path指定的是過濾日志的文件路徑,type指定類型,自定義,主要做區分!
2:執行文件,顯示過濾的日志結果
[root@localhost ~]# logstash -f messages.conf
{
"@version" => "1",
"host" => "localhost.localdomain",
"path" => "/var/log/messages",
"@timestamp" => 2017-11-24T11:01:02.189Z,
"message" => "Nov 24 19:01:01 localhost systemd: Starting Session 11 of user root.",
"type" => "syslog"
}
三:輸出到elasticsearch,在kibana形成WEB圖形方式
1:編寫一個配置文件,讓日志輸出到elasticsearch通過kibana生成WEB圖形!
[root@localhost ~]# vim test.conf ##配置文件名字自定義
input {
file {
path => "/var/log/messages" //定義日志文件路徑
type => "test" //定義日志類型
stat_interval => 1
start_position => "beginning"
}
}
output{
elasticsearch {
hosts => ["192.168.1.200:9200"] //定義需要輸出到elasticsearch的ip和端口
index => "test-%{+YYYY.MM.dd}" //定義索引的名字,名字為test
}
}
2:執行配置文件
[root@localhost ~]# logstash -f test.conf -d
執行之后,在kibana的WEB頁面Index pattern添加索引的名稱,就可以Discover會形成以下日志輸出的信息
