在现代应用开发中,监控和可视化服务的运行状态和性能指标对于保证系统稳定性至关重要。本文将介绍如何使用 Prometheus 和 Grafana 对 FastAPI 服务进行监控和可视化,并展示如何通过 prometheus_fastapi_instrumentator
将 FastAPI 应用与 Prometheus 集成。
首先,你需要准备以下环境:
在服务器上创建一个 prometheus.yml
文件,定义需要监控的目标:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'fastapi_service'
static_configs:
- targets: ['localhost:8000'] # 替换为你的 FastAPI 服务地址和端口
在服务器上执行以下命令启动 Prometheus:
docker run -d \
--name prometheus \
-p 9090:9090 \
-v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
-v /your_path/prometheus.yml:/etc/prometheus/prometheus.yml
:将本地配置文件映射到容器内。-p 9090:9090
:将 Prometheus 的 9090 端口暴露出来。在浏览器中访问 http://
,确保 Prometheus 正常运行。
在服务器上执行以下命令启动 Grafana:
docker run -d \
--name=grafana \
-p 3000:3000 \
grafana/grafana
-p 3000:3000
:将 Grafana 的 3000 端口暴露出来。在浏览器中访问 http://
,默认用户名为 admin
,密码也是 admin
。首次登录后,系统会提示你修改密码。
http://:9090
。要将 Prometheus 与 FastAPI 集成,你可以使用 prometheus_fastapi_instrumentator
库。
prometheus_fastapi_instrumentator
执行以下命令安装:
pip install prometheus-fastapi-instrumentator
在你的 FastAPI 应用中,导入并使用 PrometheusInstrumentator
:
from fastapi import FastAPI
from prometheus_fastapi_instrumentator import Instrumentator
app = FastAPI()
# 添加 Prometheus 监控
instrumentator = Instrumentator()
instrumentator.instrument(app).expose(app)
启动 FastAPI 应用,并访问 http://localhost:8000/metrics
,确保 Prometheus 格式的指标数据正常展示。
rate(http_requests_total[1m])
用于监控 HTTP 请求速率。通过上述步骤,你可以成功实现 Prometheus 和 Grafana 的集成,对 FastAPI 服务进行全面的监控和可视化。Prometheus 负责采集和存储指标数据,Grafana 提供强大的可视化功能,本地搭建监控环境可以帮我们本地压测提供数据支撑。