-
安装依赖:使用命令 pip install fastapi uvicorn elasticsearch logstash_async 安装FastAPI、Uvicorn、Elasticsearch和Logstash的Python客户端。
-
编写FastAPI应用:创建一个名为app.py的Python文件,编写一个简单的FastAPI应用,并且使用LogstashAsyncHandler来将日志发送到Logstash:
import logging
from fastapi import FastAPI
from logstash_async.handler import LogstashAsyncHandler
from elasticsearch import Elasticsearch
app = FastAPI()
logger = logging.getLogger("uvicorn")
logger.addHandler(LogstashAsyncHandler(host='logstash', port=5044))
@app.get("/")
def read_root():
logger.info("Hello, world!")
return {"Hello": "World"}
这个应用使用了LogstashAsyncHandler作为日志处理器,并且将日志发送到logstash:5044的地址上。可以根据实际情况修改Logstash的地址和端口。
- 编写Logstash配置文件:创建一个名为logstash.conf的配置文件,配置Logstash的输入、过滤器和输出。这里使用Elasticsearch作为输出,将日志存储在Elasticsearch中:
input {
tcp {
port => 5044
codec => json
}
}
filter {
json {
source => "message"
}
}
output {
elasticsearch {
hosts => ["elasticsearch:9200"]
}
}
这个配置文件定义了一个TCP输入,将从logstash:5044的地址上接收日志。接收到的日志使用json解码器进行解码,然后存储到Elasticsearch中。
- 启动服务:使用以下命令启动FastAPI应用和Logstash服务:
# 启动FastAPI应用
uvicorn app:app --host 0.0.0.0 --port 8000
# 启动Logstash服务
logstash -f logstash.conf
- 查看日志:使用Kibana查看日志,打开Kibana的Web界面,创建一个名为logstash-*的索引模式,然后就可以查看FastAPI应用的日志了。
网友评论