我们的elk架构是: filebeat ---> logstash --> kafka-->consumer--->elastic。
由于日志很大,所以我们想对打印多的日志不进行采集。因为filebeat不支持output 到http。所以我们只能在logstash里控制了。
filebeat ---> logstash ---> http Server--> kafka-->consumer--->elastic。
input {
beats {
port => "5044"
}
}
filter {
}
output {
http {
http_method => "post"
format => "json"
url => "http://148.70.0.78:5000/api"
content_type => "application/json"
}
stdout {
codec => rubydebug {}
}
}
如果要收集各种类型的数据,建议这样写:
input {
beats {
port => "5044"
}
}
filter {
}
output {
http {
http_method => "post"
url => "http://148.70.0.78:5000/api"
}
}
from flask import Flask,request
import json
app = Flask(__name__)
@app.route('/api', methods=['GET', 'POST'])
def hello_world():
if request.method == 'POST':
a = request.get_data()
dict1 = json.loads(a)
print("####")
print(dict1)
return "<p>Hello, World!</p>"
if __name__ == '__main__':
app.run(host="0.0.0.0", debug=True)