配置logstash從kafka讀json格式日志輸入es

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,存儲的數據格式如下:


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容