§ 192.168.196.58/...(windows8):Logstash : Shipper
§ 192.168.1.192(windows7):Redis : Broker
§ 192.168.196.154(windows7):Lostash : Indexer, ES : Storage&Search, Kibana : Web Interface
2、ftp實例 log文件讀取
1、
Logstash : Shipper(192.168.1.192(windows7))
input {
file {
path => "D:\File\logs\test.log" #日誌文件路徑
type => "ftp_log" #類型
start_position => "beginning" #文件讀取開始位置
}
}
output {
stdout{ }
redis {
host => "192.168.1.192" #redis服務器地址
port => 6379 #redis對應端口
data_type => "list" #數據類型
key => "ftp" #名稱列表或通道
}
}
* start_position
logstash 從什麼位置開始讀取文件數據,默認是結束位置,也就是說 logstash 進程會以相似 `tail -F` 的形式運行。若是你是要導入原有數據,把這個設定改爲 "beginning",logstash 進程就從頭開始讀取,有點相似 `cat`,可是讀到最後一行不會終止,而是繼續變成 `tail -F`
2、Redis : Broker(192.168.1.192(windows7))
Redis 服務器是 logstash 官方推薦的 broker 選擇。
redis:在這裏作一個緩存的機制,logstash shipper將log轉發到redis(只作隊列處理不作存儲)。Logstash indexer從redis中讀取數據並轉發給elasticsearch。 這裏加上redis是爲了提升Logstash shipper的日誌提交到Logstash indexer的速度,同時避免因爲忽然斷電等致使的數據的丟失。
官網下載你須要的Redis壓縮包解壓
把這個文件夾複製到其它地方,好比D:\redis 目錄下。
打開一個cmd窗口 使用cd命令切換目錄到d:\redis 運行 redis-server.exe redis.conf
這樣Redis就開始運行了
3、Logstash : indexer(192.168.196.154(windows7))
input {
redis {
host => "192.168.1.192"
data_type => "list"
key => "ftp"
}
}
output {
file {
path => "D:\File\logs\%{+yyyy-MM-dd}\%{+HH}\%{host}.log.gz" #新建日誌文件壓縮包
message_format => "%{message} %{host} %{path} " #截取數據
gzip => true #寫入磁盤以前用GZIP輸出流
}
elasticsearch {
host => "192.168.196.154"
port =>9300
index=>"ftp_log-%{+YYYY-MM-dd}" #索引名字
}
}
gzip 格式是一個很是奇特而友好的格式。其格式包括有:
* 10字節的頭,包含幻數、版本號以及時間戳
* 可選的擴展頭,如原文件名
* 文件體,包括DEFLATE壓縮的數據
* 8字節的尾註,包括CRC-32校驗和以及未壓縮的原始數據長度
這樣 gzip 就能夠一段一段的識別出來數據 —— **反過來講,也就是能夠一段一段壓縮了添加在後面!**
3、Log4j實例
1、
Logstash : Shipper(192.168.196.58(windows8))
input {
log4j {
mode => "server"
host => "192.168.196.58"
port => 56789
type => "log4j_log"
}
}
output {
stdout { codec => rubydebug }
redis {
host => "192.168.196.154"
port => 6379
data_type => "list"
key => "log4j"
}
}
Log4j配置文件
# logstash
log4j.appender.logstash=org.apache.log4j.net.SocketAppender
log4j.appender.logstash.port=56789
log4j.appender.logstash.remoteHost=192.168.196.58
log4j.rootLogger=DEBUG,Stdout,File,logstash
log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %-5p [%C] (%F:%L) - %m%n
log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.File=F:\\File\\logs\\test.log
log4j.appender.File.MaxFileSize=1024KB
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}: %r] %-5p [%t] ( %F,%L ) - %m%n
2、Redis :
Broker(192.168.1.192(windows7))
在這裏作一個緩存的機制
打開一個cmd窗口 使用cd命令切換目錄到d:\redis 運行 redis-server.exe redis.conf
3、Logstash : indexer(192.168.196.154(windows7))
input {
redis {
host => "192.168.1.192"
data_type => "list"
key => "log4j"
codec => json
}
}
output {
file {
path => "D:\File\logs\%{+yyyy-MM-dd}\%{+HH}\log4j.log.gz" #新建日誌文件壓縮包
message_format => "%{message} %{host} %{path} " #截取數據信息
gzip => true #Gzip the output stream before writing to disk
#(
寫入磁盤以前GZIP輸出流)
}
elasticsearch {
host => "192.168.196.154"
port =>9300
index=>"log4j_log-%{+YYYY-MM-dd}" #索引名字
}
}
Elasticsearch 內部,對時間類型字段,是統一採用 UTC 時間,存成 long 長整形數據的!對日誌統一採用 UTC 時間存儲,是國際安全/運維界的一個通識。
Logstash 使用一個名叫 FileWatch的 Ruby Gem 庫來監聽文件變化。這個庫支持 glob 展開文件路徑,並且會記錄一個叫 .sincedb的數據庫文件來跟蹤被監聽的日誌文件的當前讀取位置。因此,不要擔憂 logstash 會漏過你的數據。
Redis 服務器一般都是用做 NoSQL 數據庫,不過 logstash 只是用來作消息隊列。因此不要擔憂 logstash 裏的 Redis 會撐爆你的內存和磁盤。
logstash 進程內部運行一個**內嵌**的 elasticsearch 服務器。內嵌服務器默認會在 `$PWD/data` 目錄裏存儲索引。若是想變動這些配置,在 `$PWD/elasticsearch.yml` 文件裏寫自定義配置便可,logstash 會嘗試自動加載這個文件。
192.168.196.58 192.168.1.192 192.168.196.154