0
filebeatで受信するときに、jsonログラインからデコードするメッセージフィールドを取得できません。ここでlogstash json filter source
{"levelname": "WARNING", "asctime": "2016-07-01 18:06:37", "message": "One or more gateways are offline", "name": "ep.management.commands.import", "funcName": "check_gateway_online", "lineno": 103, "process": 44551, "processName": "MainProcess", "thread": 140735198597120, "threadName": "MainThread", "server": "default"}
logstashの設定:ここでは
は私のログの行です。私はcodec
の有無にかかわらず試しました。唯一の違いは、コーデックを使用するとメッセージがエスケープされていることです。それはelasticsearchに到着するとここで
input {
beats {
port => 5044
codec => "json"
}
}
filter {
json{
source => "message"
}
}
は、JSONです:私が望む何
{
"_index": "filebeat-2016.07.01",
"_type": "json",
"_id": "AVWnpK519vJkh3Ry-Q9B",
"_score": null,
"_source": {
"@timestamp": "2016-07-01T18:07:13.522Z",
"beat": {
"hostname": "59b378d40b2e",
"name": "59b378d40b2e"
},
"count": 1,
"fields": null,
"input_type": "log",
"message": "{\"levelname\": \"WARNING\", \"asctime\": \"2016-07-01 18:07:12\", \"message\": \"One or more gateways are offline on server default\", \"name\": \"ep.controllers.secure_client\", \"funcName\": \"check_gateways_online\", \"lineno\": 80, \"process\": 44675, \"processName\": \"MainProcess\", \"thread\": 140735198597120, \"threadName\": \"MainThread\"}",
"offset": 251189,
"source": "/mnt/ep_logs/ep_.json",
"type": "json"
},
"fields": {
"@timestamp": [
1467396433522
]
},
"sort": [
1467396433522
]
}
はmessage
オブジェクトから内容をデコードしていることです。それが起こるとき、あなたのFilebeatインスタンスがESに直接ドキュメントを送信するように設定されているため
感謝
filebeatインスタンスがドキュメントを直接ESに送信していないことを確認してください。ファイルビートの設定はどのように見えますか? Filebeat設定ファイルで 'elasticsearch'出力を有効にしていますか? – Val
あなたは天才です。どうやって知っていましたか?どうもありがとう。質問を閉じる方法はありますか? –