今天,就给大家分享一个在Ubuntu系统上,使用Loggie把FastAPI的Web日志上传到阿里云SLS的详细教程,一步一步带你完成安装、配置和测试。

一、安装Loggie

(一)安装Golang

在安装Loggie之前,要先确保Ubuntu系统上安装了Golang。要是还没装,可以用下面的命令来安装:

sudo apt update sudo apt install -y golang-go 

这两条命令,第一条sudo apt update用于更新系统的软件包列表,获取最新的软件信息;第二条sudo apt install -y golang-go则是直接安装Golang,-y参数表示自动确认安装,不需要手动输入y来确认。

(二)下载Loggie源码

安装好Golang后,就可以从GitHub上下载Loggie的源码了,执行下面的命令:

git clone https://github.com/loggie-io/loggie.git cd loggie 

git clone命令会把Loggie的代码仓库克隆到本地,cd loggie命令则是进入到刚刚克隆下来的Loggie目录中。

(三)编译Loggie

下载完源码后,还需要对Loggie进行编译,命令如下:

go build -o loggie main.go 

这条命令会根据main.go文件,编译生成可执行文件loggie-o参数指定了生成的可执行文件的名称。

(四)配置环境变量(可选)

如果希望在系统的任何位置都能直接使用Loggie命令,那就需要配置环境变量,操作命令如下:

export PATH=$PATH:/path/to/loggie 

这里把Loggie的可执行文件路径添加到了系统的环境变量PATH中,这样在任何目录下都能直接运行Loggie命令了。不过要注意,/path/to/loggie需要替换成你实际的Loggie可执行文件所在路径。

二、配置阿里云SLS

(一)创建阿里云SLS Project和Logstore

先登录阿里云控制台,找到SLS控制台。进入之后,创建一个新的Project和Logstore。Project可以理解为一个项目空间,Logstore则是存放日志数据的地方,相当于项目里的一个具体的日志仓库。

(二)获取AccessKey ID和AccessKey Secret

创建一个RAM用户,给这个用户授予对刚才创建的Project和Logstore的写入权限。之后就能获取到该RAM用户的AccessKey ID和AccessKey Secret,这两个信息就像是登录SLS的“钥匙”,后续配置Loggie时会用到。

三、配置Loggie

(一)创建Loggie配置文件

创建一个名为pipelines.yml的配置文件,内容如下:

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 # 自定义日志主题 

这个配置文件主要配置了数据源和数据的目标存储位置。sources部分指定从文件中读取日志,paths里要填写你实际的FastAPI日志文件路径。sink部分表示把日志发送到阿里云SLS,其中的endpointaccessKeyIdaccessKeySecretprojectlogstore都使用了环境变量,后续会通过设置环境变量来确定具体的值。topic则是自定义的日志主题。

(二)设置环境变量

在终端中设置环境变量,具体命令如下:

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" 

这里设置了与阿里云SLS相关的环境变量,endpoint是SLS服务入口地址,accessKeyIdaccessKeySecret是之前获取的RAM用户的访问密钥,projectlogstore就是前面在阿里云上创建的项目和日志仓库名称。记得把YOUR_ACCESS_KEY_IDYOUR_ACCESS_KEY_SECRETYOUR_PROJECT_NAMEYOUR_LOGSTORE_NAME替换成你自己的真实信息。

四、运行Loggie

(一)启动Loggie服务

配置好之后,就可以启动Loggie服务了,使用下面的命令:

./loggie --config.path=pipelines.yml 

这条命令会根据pipelines.yml配置文件来启动Loggie服务,让Loggie按照配置去读取日志并上传到阿里云SLS。

(二)确保Loggie持续运行

为了保证Loggie一直稳定运行,可以使用systemdsupervisord等工具来管理Loggie服务。这些工具可以帮助我们监控Loggie服务的运行状态,在服务出现异常时自动重启,确保日志上传工作不间断。

五、测试日志上传

(一)生成测试日志

首先要确保你的FastAPI应用正在产生日志,并且日志文件存放在之前在Loggie配置文件里设置的路径中。如果不确定,可以检查一下FastAPI应用的日志配置。

(二)检查SLS日志

登录阿里云SLS控制台,进入之前创建的Logstore,查看是否成功上传了日志。如果能在里面看到日志信息,那就说明Loggie配置和运行都没问题,成功把FastAPI的Web日志上传到了阿里云SLS。

(三)示例代码:FastAPI生成日志

要是你还不清楚怎么让FastAPI生成日志,下面是一个简单的示例:

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"} 

这段代码配置了FastAPI的日志输出,把日志记录到指定的文件中,并且设置了日志的格式和滚动策略。每次访问根路径/时,都会记录一条日志信息。

按照上面这些步骤,你就能成功地使用Loggie把FastAPI的Web日志上传到阿里云SLS了。希望这个教程能帮到大家,要是在操作过程中有问题,欢迎一起交流。