如何使用 Flask 服务器设置 ELK?
how to setup ELK with flask server?
我正在尝试使用烧瓶服务器设置 ELK。我正在使用 docker 到 运行 我的 ELK 堆栈。 Logstash 运行ning 在端口 9601 上。这是我在命令“./logstash -f logstash.conf”中使用的设置文件:
logstash.conf
input {
tcp {
host => "127.0.0.1"
port => 5000
}
}
output {
elasticsearch { hosts => ["localhost"]}
stdout {codec => rubydebug}
}
elasticSearch 运行ning 在端口 9200 上,我的烧瓶服务器在端口 5000 上。当我启动 logstash 时,当我在烧瓶服务器中打印日志时没有任何反应(我创建了一个 webService 的目的这样做)。而且我不知道如何检查它是否有效,但 Kibana 没有显示任何内容。感谢您的帮助。
我确实明白我的问题是什么。事实上,我试图读取 dokcer 容器外的日志。为了解决我的问题,我只是将 logstash 作为一个独立的应用程序(没有 dokcer)启动,然后在我的烧瓶应用程序中,我在端口 5001 上使用一个套接字,如下所示:
from flask import Flask
from flask import jsonify
from flask import request
from flask_cors import CORS, cross_origin
import socket
TCP_IP = '127.0.0.1'
TCP_PORT = 5001
BUFFER_SIZE = 20
app = Flask(__name__)
CORS(app)
@app.route('/')
def hello():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(request.method + " " + request.url + " " + "200")
s.close()
return jsonify(ok='ok')
最后,我在 logstash 配置文件中监听这个端口,如下所示:
input {
tcp {
port => 5001
}
}
output {
elasticsearch { hosts => ["localhost"]}
stdout {codec => rubydebug}
}
而且有效!
如果你想在 docker 中 运行 弹性,你可以使用 docker-compose。您的 docker-compose.yml 可能看起来像这样:
version: "3"
services:
flask:
build: . # Use location of your dockerfile for flask
container_name: flask
.....
logstash:
image: docker.elastic.co/logstash/logstash:6.2.4
links:
- elasticsearch
volumes:
- /c/config:/config # Put your logstash.config in c:/config (assuming windows)
depends_on:
- elasticsearch
working_dir: /config
entrypoint: logstash -f logstash.config
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
container_name: elasticsearch
.....
kibana:
.....
和你的logstash.config:
# Not sure about input
output {
elasticsearch {
hosts => "elasticsearch"
.....
可能有更简洁的方法(如果您找到了 post),但这是开始的方法。
我正在尝试使用烧瓶服务器设置 ELK。我正在使用 docker 到 运行 我的 ELK 堆栈。 Logstash 运行ning 在端口 9601 上。这是我在命令“./logstash -f logstash.conf”中使用的设置文件:
logstash.conf
input {
tcp {
host => "127.0.0.1"
port => 5000
}
}
output {
elasticsearch { hosts => ["localhost"]}
stdout {codec => rubydebug}
}
elasticSearch 运行ning 在端口 9200 上,我的烧瓶服务器在端口 5000 上。当我启动 logstash 时,当我在烧瓶服务器中打印日志时没有任何反应(我创建了一个 webService 的目的这样做)。而且我不知道如何检查它是否有效,但 Kibana 没有显示任何内容。感谢您的帮助。
我确实明白我的问题是什么。事实上,我试图读取 dokcer 容器外的日志。为了解决我的问题,我只是将 logstash 作为一个独立的应用程序(没有 dokcer)启动,然后在我的烧瓶应用程序中,我在端口 5001 上使用一个套接字,如下所示:
from flask import Flask
from flask import jsonify
from flask import request
from flask_cors import CORS, cross_origin
import socket
TCP_IP = '127.0.0.1'
TCP_PORT = 5001
BUFFER_SIZE = 20
app = Flask(__name__)
CORS(app)
@app.route('/')
def hello():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(request.method + " " + request.url + " " + "200")
s.close()
return jsonify(ok='ok')
最后,我在 logstash 配置文件中监听这个端口,如下所示:
input {
tcp {
port => 5001
}
}
output {
elasticsearch { hosts => ["localhost"]}
stdout {codec => rubydebug}
}
而且有效!
如果你想在 docker 中 运行 弹性,你可以使用 docker-compose。您的 docker-compose.yml 可能看起来像这样:
version: "3"
services:
flask:
build: . # Use location of your dockerfile for flask
container_name: flask
.....
logstash:
image: docker.elastic.co/logstash/logstash:6.2.4
links:
- elasticsearch
volumes:
- /c/config:/config # Put your logstash.config in c:/config (assuming windows)
depends_on:
- elasticsearch
working_dir: /config
entrypoint: logstash -f logstash.config
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
container_name: elasticsearch
.....
kibana:
.....
和你的logstash.config:
# Not sure about input
output {
elasticsearch {
hosts => "elasticsearch"
.....
可能有更简洁的方法(如果您找到了 post),但这是开始的方法。