当前位置: 首页 > news >正文

使用 Prometheus 和 Grafana 监控 FastAPI 服务

在现代应用开发中,监控和可视化服务的运行状态和性能指标对于保证系统稳定性至关重要。本文将介绍如何使用 Prometheus 和 Grafana 对 FastAPI 服务进行监控和可视化,并展示如何通过 prometheus_fastapi_instrumentator 将 FastAPI 应用与 Prometheus 集成。

1. 环境准备

首先,你需要准备以下环境:

  • Docker: 用于快速部署 Prometheus 和 Grafana。
  • python: 本地安装好python环境

2. 安装 Prometheus

创建 Prometheus 配置文件

在服务器上创建一个 prometheus.yml 文件,定义需要监控的目标:

global:scrape_interval: 15s
scrape_configs:- job_name: 'fastapi_service'static_configs:- targets: ['localhost:8000']  # 替换为你的 FastAPI 服务地址和端口
使用 Docker 运行 Prometheus

在服务器上执行以下命令启动 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 端口暴露出来。
访问 Prometheus

在浏览器中访问 http://<your-server-ip>:9090,确保 Prometheus 正常运行。

3. 安装 Grafana

使用 Docker 运行 Grafana

在服务器上执行以下命令启动 Grafana:

docker run -d \--name=grafana \-p 3000:3000 \grafana/grafana
  • -p 3000:3000:将 Grafana 的 3000 端口暴露出来。
访问 Grafana

在浏览器中访问 http://<your-server-ip>:3000,默认用户名为 admin,密码也是 admin。首次登录后,系统会提示你修改密码。

4. 配置 Prometheus 数据源

  1. 登录 Grafana 后,点击左侧菜单栏的 “Configuration” -> “Data Sources”。
  2. 点击 “Add data source”。
  3. 选择 “Prometheus”。
  4. 在 “URL” 栏中填入 http://<your-server-ip>:9090
  5. 点击 “Save & Test” 确保配置成功。

5. 集成 Prometheus 到 FastAPI

要将 Prometheus 与 FastAPI 集成,你可以使用 prometheus_fastapi_instrumentator 库。

安装 prometheus_fastapi_instrumentator

执行以下命令安装:

pip install prometheus-fastapi-instrumentator
修改 FastAPI 应用

在你的 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 格式的指标数据正常展示。

6. 创建 Grafana 仪表盘

  1. 添加面板
    • 点击左侧菜单栏的 “+” -> “Dashboard”。
    • 点击 “Add new panel” 创建新的面板。
    • 在 “Query” 部分选择 Prometheus 数据源,填写 PromQL 查询语句,例如 rate(http_requests_total[1m]) 用于监控 HTTP 请求速率。
    • 配置完毕后,点击 “Apply” 保存面板,一个监控请求数的图表就做好了。
      在这里插入图片描述

7. 设置告警

  • 在 Prometheus 中定义告警规则并配置告警管理器(Alertmanager)来处理告警。
  • 在 Grafana 中基于 Prometheus 的数据源设置告警阈值,并配置通知渠道(如邮件、Slack)。

总结

通过上述步骤,你可以成功实现 Prometheus 和 Grafana 的集成,对 FastAPI 服务进行全面的监控和可视化。Prometheus 负责采集和存储指标数据,Grafana 提供强大的可视化功能,本地搭建监控环境可以帮我们本地压测提供数据支撑。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • access函数
  • LabVIEW软件开发的未来是什么?
  • fastadmin 修改弹窗大小
  • WPP多重值绑定
  • 基于JAVA的外来人口管理系统设计与实现,源码、部署+讲解
  • java消息队列ActiveMQ
  • 【Python零基础学习】变量和简单数据类型
  • 【Python】Jupyter Notebook的安装及简单使用
  • 【流媒体协议】RTMP协议概述
  • c++精品小游戏(无错畅玩版)
  • 一文打通pytorch中几个常见的张量操作
  • 第43集《大佛顶首楞严经》
  • 贪吃蛇游戏的实现:C++ 控制台版
  • PyTorch:从零实现一个双向循环神经网络
  • MySQL-MHA高可用配置及故障切换
  • 自己简单写的 事件订阅机制
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • ES6语法详解(一)
  • Next.js之基础概念(二)
  • node 版本过低
  • node学习系列之简单文件上传
  • React组件设计模式(一)
  • vue脚手架vue-cli
  • 好的网址,关于.net 4.0 ,vs 2010
  • 基于 Babel 的 npm 包最小化设置
  • 简单易用的leetcode开发测试工具(npm)
  • 聊聊redis的数据结构的应用
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前端_面试
  • 如何用vue打造一个移动端音乐播放器
  • 实战|智能家居行业移动应用性能分析
  • 想写好前端,先练好内功
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • Java性能优化之JVM GC(垃圾回收机制)
  • MyCAT水平分库
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​iOS安全加固方法及实现
  • ​渐进式Web应用PWA的未来
  • # 飞书APP集成平台-数字化落地
  • # 数据结构
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #Z0458. 树的中心2
  • #单片机(TB6600驱动42步进电机)
  • (1)SpringCloud 整合Python
  • (arch)linux 转换文件编码格式
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (ZT)薛涌:谈贫说富
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (黑马点评)二、短信登录功能实现