logstash
logstash是一款輕量級的日志搜集處理框架,可以方便的把分散的、多樣化的日志搜集起來,并進行自定義的處理,然后傳輸到指定的位置(比如落地到本地磁盤文件或直接入到elasticsearch)。
配置文件
配置logstash的kafka數據源,并指定消費的topics,如果日志格式為json,設定輸入數據格式為json。由于message字段里面的數據應該是json,但存儲的時候是以字符串形式存儲,logstash如果不作處理直接入es,在es中無法以json格式查看,因此這里利用 logstash json filter 將message字段轉為json格式
input {
kafka {
bootstrap_servers => "192.168.0.111:9091"
topics => ["logtest"]
codec => json {
charset => "UTF-8"
}
}
# 如果有其他數據源,直接在下面追加
}
filter {
# 將message轉為json格式
if [type] == "log" {
json {
source => "message"
target => "message"
}
}
}
output {
# 處理后的日志落到本地文件
file {
path => "/config-dir/test.log"
flush_interval => 0
}
# 處理后的日志入es
elasticsearch {
hosts => "192.168.0.112:9201"
index => "logstash-%{[type]}-%{+YYYY.MM.dd}"
}
}
啟動logstash
為測試方便直接使用logstash官方docker鏡像,快速啟動測試程序
docker pull logstash
docker run -it --rm --net=host -v "$PWD":/config-dir logstash -f /config-dir/logstash.conf
查看es中的數據
kafka的logtest隊列有新數據進入時,logstash會對其進行消費,處理后輸入es,存儲的數據格式如下:
