跳到主要内容
版本:3.9.x

监控指标

API7 网关提供两种流量监控方式:

  • 控制台内置的监控页面,无需额外基础设施即可快速查看状态。
  • 数据面的 Prometheus 格式端点,用于检查原始网关指标。

前置条件

方法一:使用内置监控页面

控制台的监控部分显示最重要的实时指标:

指标说明
QPS每秒查询数,表示当前负载。
延迟请求处理时间,包括平均值、p90 和 p99。
错误率返回 4xx 或 5xx 状态码的请求占比。
吞吐量入站和出站数据量。

登录控制台,然后进入监控页面即可查看。

方法二:使用 Prometheus 抓取端点

prometheus 插件启用为全局规则,即可在 http://<data-plane>:9091/apisix/prometheus/metrics 暴露原始指标。当前发布版本存在下文所述的直接抓取限制;将指标发送到 Prometheus 时,请使用 DP Manager 远程写入。

步骤一:全局启用 Prometheus 插件

curl -k "https://localhost:7443/apisix/admin/global_rules/prometheus?gateway_group_id={gateway_group_id}" -X PUT \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"plugins": {
"prometheus": {}
}
}'

步骤二:验证端点

先通过任意路由发送请求以生成指标,然后抓取数据面的 Prometheus 端点:

curl "http://127.0.0.1:9091/apisix/prometheus/metrics"

输出应包含网关生成的 Prometheus 格式指标,包括 Counter、Gauge 和 Histogram。

Prometheus 直接抓取限制

当前发布版本使用两个前缀相同的指标注册表,因此会重复暴露 apisix_nginx_metric_errors_total。Prometheus 会拒绝整个抓取,将目标标记为失败,并且不会采集任何网关指标。在重复暴露问题修复前,请使用 DP Manager 远程写入路径将指标发送到 Prometheus。该端点仍可用于手动检查,或供已验证能够容忍重复指标族的采集器使用。

指标监听器默认绑定到 127.0.0.1。仅发布 9091 端口,无法使容器或 Pod 外部访问仅绑定到环回地址的监听器。

对于使用 config.yaml 配置的网关,请将监听器设置为监控网络可以访问的地址:

config.yaml
plugin_attr:
prometheus:
export_addr:
ip: 0.0.0.0
port: 9091

重启网关,然后发布或暴露该端口。

如果使用 API7 网关 Helm Chart 和 Prometheus Operator 部署网关,请先确认网关已包含重复暴露问题的修复。确认后,启用 Helm Chart 的 ServiceMonitor 集成。此选项会将监听器绑定到 0.0.0.0、通过网关 Service 暴露 9091 端口并创建 ServiceMonitor:

values.yaml
serviceMonitor:
enabled: true

此选项要求集群已安装 ServiceMonitor 自定义资源定义。在当前发布版本中,该选项会产生上述失败的 Prometheus 抓取。对于手动检查或其他经验证兼容的采集器,请配置 pluginAttrs.prometheus.export_addr。你还必须使用 Kubernetes Service 暴露 9091 端口,或直接请求 Pod IP;仅更改 pluginAttrs 不会添加 Service 端口。

如果不希望暴露监听器,请使用 DP Manager 远程写入路径

警告

指标端点未启用身份认证。请将其限制在监控网络内,不要通过代理流量对外暴露。

步骤三:选择采集路径

使用 Prometheus 时,请使用 DP Manager 远程写入路径。此路径无需将数据面的 9091 端口暴露到外部。

如果使用其他已验证能够接受重复指标族的采集器,请将其配置为从 <data-plane-host>:9091 请求 /apisix/prometheus/metrics

关键指标

创建监控面板或告警时,重点关注 prometheus 插件生成的指标:

  • apisix_http_status:按状态码统计响应数,标签为 code
  • apisix_http_latency:请求延迟直方图,标签 type 区分 requestupstreamapisix
  • apisix_bandwidth:发送和接收字节数,标签为 type
  • apisix_nginx_http_current_connections:活动连接数,标签为 state

有关数据面指标族及其内置标签,请参阅数据面指标参考。有关插件配置和标签调优,请参阅 prometheus

其他资源