Prometheus 监控 APISIX 全栈实战:云原生 API 网关的透明化可观测性
Prometheus 监控 APISIX 全栈实战云原生 API 网关的透明化可观测性Apache APISIX 作为云原生 API 网关的佼佼者凭借其动态路由、插件热插拔和高性能支撑着无数微服务集群的流量入口。它的请求吞吐量、上游健康状态、响应延迟分布、etcd 连接可靠性以及插件执行效率直接决定了业务 API 的可用性与用户体验。从 APISIX 2.0 版本开始内置的 prometheus 插件就可将核心指标以 Prometheus 标准格式暴露无需额外部署 Exporter。本文将带你从启用插件、配置抓取到解读关键指标、搭建 Grafana 大屏和落地告警规则彻底透视 APISIX 网关的每一个细节。1. 为什么选择 APISIX 原生 Prometheus 插件零侵入插件内置通过 Admin API 或声明式配置即可全局启用无需重启。指标丰富涵盖 HTTP 请求、连接数、带宽、上游状态、etcd 健康、插件调用统计等。高性能基于内置的prometheus插件采集对数据平面转发性能影响微乎其微。多协议支持同时监控 HTTP 和 gRPC 流量。生态兼容完美对接 Prometheus Operator、Grafana 社区仪表盘。2. 启用 Prometheus 插件2.1 全局启用推荐通过 APISIX Admin API默认http://127.0.0.1:9180/apisix/admin全局启用使所有服务和路由的指标统一收集。curlhttp://127.0.0.1:9180/apisix/admin/global_rules/1-XPUT\-HX-API-KEY: edd1c9f034335f136f87ad84b625c8f1\-d{ plugins: { prometheus: { prefer_name: true } } }参数prefer_name设为true时指标标签中会使用路由和服务的名称而非 ID更易读。2.2 在特定路由上启用如果只需监控特定接口可针对单个路由启用curlhttp://127.0.0.1:9180/apisix/admin/routes/1-XPATCH\-HX-API-KEY: ...\-d{ plugins: { prometheus: {} } }2.3 验证端点APISIX 默认在数据平面端口 9091上暴露/apisix/prometheus/metricsAPISIX 2.7 开始。在配置文件中确认plugin_attr.prometheus的export_addr# conf/config.yamlplugin_attr:prometheus:export_addr:ip:0.0.0.0port:9091重启 APISIX 后访问curlhttp://localhost:9091/apisix/prometheus/metrics你将看到apisix_http_requests_total、apisix_bandwidth、apisix_etcd_modify_index等指标。注意早期版本可能直接在127.0.0.1:9091/metrics或通过数据面端口提供具体以版本为准。本文以 3.x 版本默认路径/apisix/prometheus/metrics为准。3. 配置 Prometheus 抓取3.1 静态配置scrape_configs:-job_name:apisixscrape_interval:15smetrics_path:/apisix/prometheus/metricsstatic_configs:-targets:[apisix-node1:9091,apisix-node2:9091]labels:cluster:prodcomponent:gateway3.2 Kubernetes 环境自动发现如果 APISIX 部署在 K8s 中使用 PodMonitorapiVersion:monitoring.coreos.com/v1kind:PodMonitormetadata:name:apisixspec:selector:matchLabels:app.kubernetes.io/name:apisixpodMetricsEndpoints:-port:prometheuspath:/apisix/prometheus/metricsinterval:15s需确保 APISIX Pod 暴露了名为prometheus的容器端口对应 9091。4. 核心监控指标与 PromQLAPISIX 的 Prometheus 插件暴露的指标以apisix_为前缀标签包括route、service、consumer、node、status等。4.1 HTTP 请求与状态码指标含义apisix_http_requests_totalHTTP 请求总数Counter按route、service、consumer、status分组apisix_http_status各状态码的请求数与上类似视版本可能合并PromQL 示例整体 QPSsum(rate(apisix_http_requests_total[1m]))5xx 错误率sum(rate(apisix_http_requests_total{status~5..}[5m])) / sum(rate(apisix_http_requests_total[5m]))某个路由的 QPSrate(apisix_http_requests_total{routemy-route}[1m])4.2 延迟指标含义apisix_http_latency(Histogram)APISIX 处理延迟从接收到请求到转发给上游的时间apisix_upstream_latency(Histogram)上游服务响应时间PromQLAPISIX 处理延迟 P95histogram_quantile(0.95, rate(apisix_http_latency_bucket[5m]))上游延迟 P99histogram_quantile(0.99, rate(apisix_upstream_latency_bucket[5m]))4.3 带宽指标含义apisix_bandwidth(Counter)入口和出口流量字节数标签type为ingress或egressPromQL入口流量字节/秒rate(apisix_bandwidth{typeingress}[1m])出口流量rate(apisix_bandwidth{typeegress}[1m])4.4 连接数指标含义apisix_nginx_http_current_connections当前 HTTP 连接数包含 reading、writing、waiting类似 Nginx 连接状态。告警apisix_nginx_http_current_connections{statewriting} 100004.5 上游健康与状态指标含义apisix_upstream_status上游健康检查状态1健康0不健康按upstream标签apisix_node_info节点信息主机名、版本等告警上游不健康apisix_upstream_status{upstreambackend-api} 04.6 etcd 连接与同步指标含义apisix_etcd_modify_indexetcd 修改索引反映配置变更频率apisix_etcd_reachableetcd 是否可达1连通0断开PromQLetcd 断连apisix_etcd_reachable 0立即告警配置变更速率rate(apisix_etcd_modify_index[5m])4.7 插件调用统计指标含义apisix_plugin_metrics特定插件如limit-count、prometheus本身的执行计数和延迟可据此分析限流、认证等插件的性能影响。5. Grafana 仪表盘推荐APISIX Official DashboardDashboard ID11719Apache APISIX 社区官方仪表盘完美适配 APISIX 2.x/3.x 的 Prometheus 指标涵盖 QPS、延迟、带宽、上游状态、etcd 健康等。APISIX Ingress Controller若在 Kubernetes 中使用可导入 ID14403。自定义业务视图基于route或service标签创建 QPS 排行、错误率热力、延迟分位数面板。导入后选择数据源通过cluster或instance变量区分不同 APISIX 集群。6. 告警规则实战groups:-name:apisix_alertsrules:-alert:APISIXNodeDownexpr:up{jobapisix} 0for:1mlabels:severity:criticalannotations:summary:APISIX 节点 {{ $labels.instance }} 指标端点不可达-alert:APISIXEtcdDisconnectedexpr:apisix_etcd_reachable 0for:1mlabels:severity:criticalannotations:summary:APISIX 与 etcd 失去连接配置可能无法生效-alert:APISIXHigh5xxRateexpr:sum(rate(apisix_http_requests_total{status~5..}[5m])) by (instance) / sum(rate(apisix_http_requests_total[5m])) by (instance)0.01for:5mlabels:severity:criticalannotations:summary:APISIX 节点 {{ $labels.instance }} 5xx 错误率超过 1%-alert:APISIXUpstreamUnhealthyexpr:apisix_upstream_status 0for:2mlabels:severity:criticalannotations:summary:上游服务 {{ $labels.upstream }} 健康检查失败-alert:APISIXHighUpstreamLatencyexpr:histogram_quantile(0.99,rate(apisix_upstream_latency_bucket[5m]))2for:5mlabels:severity:warningannotations:summary:上游服务 P99 延迟超过 2 秒-alert:APISIXHighConnectionsexpr:apisix_nginx_http_current_connections{statewriting}10000for:5mlabels:severity:warningannotations:summary:APISIX 正在写响应的连接数超过 10000可能过载-alert:APISIXBandwidthSaturationexpr:rate(apisix_bandwidth{typeingress}[5m]) * 8 / 1e90.8for:10mlabels:severity:warningannotations:summary:入口带宽使用率接近物理网卡上限根据实际硬件和流量调整阈值。7. 进阶多节点、安全与自定义指标7.1 监控多个 APISIX 节点每个节点独立暴露指标端点Prometheus 中使用文件服务发现或 Kubernetes Pod 注解自动添加。使用标签instance或node区分。Grafana 中可通过变量切换或聚合。7.2 安全加固指标端口保护9091 端口仅监听内网 IP (export_addr设为127.0.0.1或内网 IP)或使用防火墙限制。认证APISIX 指标端点本身无鉴权建议通过 Nginx/Caddy 反向代理添加 Basic Auth然后 Prometheus 配置basic_auth。Admin API 隔离永远不要将 Admin API (9180) 暴露到公网。7.3 自定义业务指标APISIX 支持通过serverless插件或自定义 Lua 插件向prometheus模块注册新指标。例如统计特定 API 的调用次数localprometheusrequire(apisix.plugins.prometheus)prometheus.define_metric(custom_api_calls,counter,API calls,{api_name})-- 在逻辑中prometheus.inc(custom_api_calls,{login})这些自定义指标会同样暴露在/apisix/prometheus/metrics端点。7.4 结合日志与追踪当告警触发时可联动 APISIX 的访问日志写入 Kafka/Loki和 SkyWalking/Zipkin 追踪快速定位错误原因。Prometheus 负责发现问题日志和追踪负责诊断问题。8. 总结通过 APISIX 内置的 Prometheus 插件云原生 API 网关的每一个请求、每一字节带宽、每一次上游健康检查和 etcd 同步状态都转化为可查询、可告警的时序数据。结合 Grafana 仪表盘和 Alertmanager 的及时通知你可以在网关 5xx 错误率攀升、上游服务宕机或 etcd 断连时第一时间响应。将 APISIX 的可观测性无缝纳入全栈监控体系意味着从网关到后端微服务整个流量生命周期的透明化已经完成。部署它让 APISIX 不仅是高性能的流量入口更是完全可观测的云原生网关基石。

相关新闻

你的“可编辑安装”为何总在“偷”错代码?——Python pip install -e . 的隐形陷阱与完美配置术

你的“可编辑安装”为何总在“偷”错代码?——Python pip install -e . 的隐形陷阱与完美配置术

你的“可编辑安装”为何总在“偷”错代码?——Python pip install -e . 的隐形陷阱与完美配置术 在 Python 开发中,pip install -e . 是令无数开发者爱恨交加的命令。它让你无需反复打包安装就能实时测试源码修改,仿佛为项目插上了“热更新”…

2026/9/29 18:08:03 阅读更多 →
2024年网站建设谈单技巧揭秘:从初次沟通到成功签单的实战指南

2024年网站建设谈单技巧揭秘:从初次沟通到成功签单的实战指南

做网站建设这一行,大家都懂,技术是敲门砖,但能不能把钱真正装进自己口袋里,靠的往往不是代码写得有多漂亮,而是“谈单”这个环节能不能打通。很多同行抱怨现在的客户难搞,预算低、要求高、还特别爱比价,这确实是真的。但是,如果你换个角度想,为什么有些公司总能轻松拿…

2026/9/26 7:49:56 阅读更多 →
微信数据备份:如何在合规前提下保护你的数字记忆

微信数据备份:如何在合规前提下保护你的数字记忆

微信数据备份:如何在合规前提下保护你的数字记忆 【免费下载链接】PyWxDump 删库 项目地址: https://gitcode.com/GitHub_Trending/py/PyWxDump 还在为微信聊天记录丢失而焦虑吗?想备份重要对话却担心技术门槛太高?本文将带你了解微信…

2026/9/27 14:08:56 阅读更多 →

最新新闻

安卓APP上架全攻略:从材料准备到隐私合规避坑指南

安卓APP上架全攻略:从材料准备到隐私合规避坑指南

1. 上架前必须搞清楚的平台格局与材料清单 先说一个很扎心的现实:安卓市场从来不是一个市场,而是十几个市场。你在国内做APP,至少得面对华为、小米、OPPO、vivo、应用宝、360手机助手、百度手机助手、阿里应用分发这些主流渠道,再…

2026/9/30 11:54:21 阅读更多 →
Linux后台运行:nohup、setsid与tmux原理与选型指南

Linux后台运行:nohup、setsid与tmux原理与选型指南

1. 为什么SSH断开后程序就“死了”?——从进程组与会话机制讲起你有没有遇到过这样的场景:在Linux服务器上用python3 train.py启动一个耗时数小时的模型训练,刚喝口咖啡转身去接个电话,回来发现终端黑了,ps aux | grep…

2026/9/30 11:54:21 阅读更多 →
iOS交付失败全链路排查:从证书签名到上传审核的工程实践指南

iOS交付失败全链路排查:从证书签名到上传审核的工程实践指南

“ios交付失败”这几个字,可能出现在你准备提审的前一夜:Xcode转了半天,突然弹出一句“App Store Connect operation failed”;也可能出现在你信心满满地传完安装包之后,第二天醒来收到一封被拒邮件;还可能…

2026/9/30 11:54:21 阅读更多 →
微信小程序案例 4.2 checkbox 与 radio 组件:动态控制字体样式

微信小程序案例 4.2 checkbox 与 radio 组件:动态控制字体样式

一、案例简介本案例是微信小程序选择类组件的实战练习,综合运用了 checkbox/checkbox-group(多选)和 radio/radio-group(单选)两套组件。页面上方是一段示例文字,下方有两组选项:一组 checkbox&…

2026/9/30 11:54:21 阅读更多 →
TCP/IP协议栈四层模型详解:从封装原理到抓包排查

TCP/IP协议栈四层模型详解:从封装原理到抓包排查

搞网络的人基本都绕不开“TCP/IP协议栈”这五个字。无论你是在调一个C中间件的网络模块,还是排查Windows系统端到端的发包收包延迟,又或者是在单片机上移植LoRa协议栈,最后都会落到对这四层结构的理解上。协议栈不是课本里需要背的抽象名词&a…

2026/9/30 11:54:21 阅读更多 →
手写签名组件封装:Canvas坐标换算与Pointer Events实战

手写签名组件封装:Canvas坐标换算与Pointer Events实战

1. 组件设计思路:为什么要把手写签名做成一个独立封装 先讲个背景。业务系统里总会碰到“请签名”的环节——合同签署、巡检确认、验收单、处方笺、维修工单,这些场景不约而同地需要一个能“写”字的区域。Web 端最通用、最可靠的做法就是在 canvas 上监…

2026/9/30 11:53:21 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →