本教程将指导你如何在Ubuntu系统上使用Loggie将FastAPI的Web日志上传到阿里云SLS。我们将一步步地完成安装、配置和测试。
步骤1:安装Loggie
1. 安装Golang
首先,确保你的Ubuntu系统上已经安装了Golang。如果尚未安装,可以使用以下命令:
bash
sudo apt update
sudo apt install -y golang-go
2. 下载Loggie源码
你可以从GitHub下载Loggie的源码:
bash
git clone https://github.com/loggie-io/loggie.git
cd loggie
3. 编译Loggie
如果你下载了源码,需要编译Loggie:
bash
go build -o loggie main.go
4. 配置环境变量(可选)
如果你想全局使用Loggie,可以配置环境变量:
bash
export PATH=$PATH:/path/to/loggie
步骤2:配置阿里云SLS
1. 创建阿里云SLS Project和Logstore
- 登录阿里云控制台,进入SLS控制台。
- 创建一个新的Project和Logstore。
2. 获取AccessKey ID和AccessKey Secret
- 创建一个RAM用户,并授予该用户对Project和Logstore的写入权限。
- 获取RAM用户的AccessKey ID和AccessKey Secret。
步骤3:配置Loggie
1. 创建Loggie配置文件
创建一个名为pipelines.yml
的配置文件,内容如下:
yaml
pipelines:
- name: web-logs
sources:
- type: file
name: web-logs
paths:
- /path/to/your/web/logs/*.log
addonMeta: true
sink:
type: sls
endpoint: ${endpoint} # 阿里云SLS服务入口
accessKeyId: ${accessKeyId}
accessKeySecret: ${accessKeySecret}
project: ${project} # 你的Project名称
logstore: ${logstore} # 你的Logstore名称
topic: myweblogs # 自定义日志主题
2. 设置环境变量
在终端中设置环境变量:
bash
export endpoint="cn-shanghai.log.aliyuncs.com"
export accessKeyId="YOUR_ACCESS_KEY_ID"
export accessKeySecret="YOUR_ACCESS_KEY_SECRET"
export project="YOUR_PROJECT_NAME"
export logstore="YOUR_LOGSTORE_NAME"
步骤4:运行Loggie
1. 启动Loggie服务
使用以下命令启动Loggie:
bash
./loggie --config.path=pipelines.yml
2. 确保Loggie持续运行
可以使用systemd
或supervisord
等工具来管理Loggie服务。
步骤5:测试日志上传
1. 生成测试日志
确保你的FastAPI应用正在生成日志,并且日志文件位于配置的路径中。
2. 检查SLS日志
登录阿里云SLS控制台,进入你的Logstore查看是否成功上传了日志。
示例代码:FastAPI生成日志
如果你使用FastAPI,可能需要配置日志输出到文件。以下是一个简单的示例:
python
from fastapi import FastAPI
from logging.handlers import RotatingFileHandler
import logging
app = FastAPI()
# 配置日志
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
# 创建文件处理器
file_handler = RotatingFileHandler('/path/to/your/web/logs/app.log', maxBytes=1024*1024*10, backupCount=5)
file_handler.setLevel(logging.INFO)
# 创建格式器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
# 添加处理器
logger.addHandler(file_handler)
@app.get("/")
def read_root():
logger.info("访问根路径")
return {"Hello": "World"}
通过这些步骤,你应该能够成功地使用Loggie将FastAPI的Web日志上传到阿里云SLS中。