私は特別なファイルにログを書き込むためにpythonスクリプトを使用しましたが、 私のlog-隠す コンテキストは正しく(python scrpitによって)書き込まれましたが、 ですが、そのログ・スタッシュはログ・データを読み取ることができなくなり、ログ・スタッシュを再始動することさえできません。Logstashは、Pythonが新しいデータを書き込んだ後にファイルからログデータを読み込むことができません。
主な手順は次のとおり
- 開始(デフォルトCONF有する)elasticsearchとlogstash(CONFと蛇腹示した) logstashはelasticsearchに(ソースログファイルに)自動的にすべてのデータを格納することができ、その情報をコンソールに出力します。
- jsonデータをソースログファイルに書き込むためのpythonスクリプト(下図)を起動します。 データは正常に書き込まれました。 ログシャッシュで新しいデータを読み取ることはできません。 私はlogstashを再起動しても、ソースログのデータを読み込むことはできず、elasticsearchに保存することもできません。
誰もこの問題を以前に遭遇しましたか?ここで
def store(filepath,data):
with open(filepath, 'a') as json_file:
json_file.write(json.dumps(data))
json_file.write("\r")
# json_file.close
def load(filepath):
with open(filepath) as json_file:
data = json.load(json_file)
return data
if __name__ == "__main__":
data = {}
sourceFilePath = "elk_data_source.log"
destFilePath = "elk_data_dest2.log"
for i in range(1,20):
data= load(sourceFilePath)
data["eventType"] = "*ABC"
store(destFilePath, data)
read = open(destFilePath)
line=read.readline()
while line:
print line
'''
context = json.loads(line)
context = context.join([ string.strip().rsplit("}" , 1)[0] , "}"])
print context
'''
line=read.readline()
# read.close
read.close()
このログに手動で入力したデータならば正常に動作することができます私のlogstashのconfファイル、次のとおりです: はここに私のpythonのコードである。ここ
input {
file {
type => "accounts"
path => "/ELK_Data/elk_data_dest2.log"
start_position => "beginning"
}
}
filter {
json{
source => "message"
}
}
output {
stdout { codec=> rubydebug }
elasticsearch {
hosts => "localhost:9200"
index => "logstash-2016.12.20"
}
}
は私elk_data_source.logある
{"eventType": ["*icbc"], "prodName": ["LDAP"], "prodFmid": ["HRSL420"], "systemSmfid": ["EIMG"]}
バージョン: logstash-5.0.0 elasticsearch-2.4.1 Python 2.7.6
迅速な対応をありがとう。 私のpythonスクリプトは、 "eventType" = ["* icbc"]から* ABCにデータを変更するために使用されます。しかし、何も変更しなかった場合は、ソースファイルのデータをコピー先のファイルに貼り付けるだけで、logstashは動作しません。 – wenterjoy
もう一度「中括弧や追加のスペース」を確認します。 – wenterjoy
問題は引き続き発生しています。 pythonスクリプトによってコピーされたデータ(コピーだけは変更されません)は、logstashによって認識されません。 宛先ファイル(elk_data_dest2.log)に手動で同じデータ(Pythonスクリプトでコピーされたデータのみ)を入力すると、 ログシャッシュが認識されます。 – wenterjoy