# Prometheus 监控

URL: https://caijiao.org/pingora/prometheus
Source: docs/pingora/prometheus.md
Description: 学习如何在 Pingora 中启用 Prometheus 监控，收集指标数据并可视化服务性能。

Pingora 内置对 **Prometheus** 的支持，可以实时导出服务器指标，便于性能监控、容量规划和故障排查。

## 启用 Prometheus

在配置文件中添加 `metrics` 配置：

```yaml
metrics:
  enable: true
  listen: "127.0.0.1:9090"
````

* `enable`：是否启用指标导出
* `listen`：Prometheus 拉取指标的地址和端口

## 可用指标示例

Pingora 导出的指标包括：

| 指标名称                               | 说明        |
| ---------------------------------- | --------- |
| `pingora_requests_total`           | 总请求数      |
| `pingora_request_duration_seconds` | 请求处理耗时（秒） |
| `pingora_active_connections`       | 当前活跃连接数   |
| `pingora_upstream_errors_total`    | 上游请求错误数   |
| `pingora_rate_limiter_hits_total`  | 限流命中次数    |

### 访问指标

启用后，可以在浏览器访问：

```txt
http://127.0.0.1:9090/metrics
```

Prometheus 将定期抓取这些指标进行存储与分析。

## 配置 Prometheus 采集

在 Prometheus 配置文件 `prometheus.yml` 中添加 scrape 配置：

```yaml
scrape_configs:
  - job_name: 'pingora'
    static_configs:
      - targets: ['127.0.0.1:9090']
```

然后重启 Prometheus，开始采集 Pingora 指标。

## 可视化与告警

* **Grafana**：将 Prometheus 数据可视化，绘制请求量、延迟、错误率等面板；
* **告警规则**：根据指标设置阈值，当异常发生时触发告警。

## 监控最佳实践

1. **采集重要指标**：请求数、延迟、错误率、活跃连接数等；
2. **定期检查指标**：确保采集正常，及时发现性能瓶颈；
3. **结合日志**：指标异常时对照日志排查问题；
4. **适度采集**：过于频繁的抓取可能增加 CPU 开销。

---

启用 Prometheus 监控后，你可以实时掌握 Pingora 的运行状态，为服务稳定性和容量规划提供可靠数据支撑。
