数据源定位
Prometheus 是一个拉取(pull)模型的指标数据库,Grafana 通过 HTTP API(/api/v1/query、/api/v1/query_range)向它查询数据。几乎所有 Grafana 教程都从这对组合开始,本文亦如此。
添加数据源
前提:Prometheus 已在目标环境运行且从 Grafana 所在网络可达,例如本地 http://localhost:9090。
- 打开 Connections → Data sources → Add data source。
- 选择 Prometheus。
- 在 Prometheus server URL 填入地址,例如
http://localhost:9090。 - (可选)配置鉴权:反向代理后的 Prometheus 通常需要 Basic auth 或 Bearer token。
- 点击 Save & test,绿色对勾即连接成功。
注意: URL 填的是「Grafana 服务器能访问到的地址」,不是浏览器地址。如果 Grafana 跑在容器里而 Prometheus 在宿主机,常用写法是
http://host.docker.internal:9090。
关键选项速查
| 选项 | 作用 | 建议 |
|---|---|---|
| Default | 是否作为新面板的默认数据源 | 单 Prometheus 环境建议打开 |
| HTTP headers | 附加请求头 | 网关鉴权场景常用 |
| Custom query parameters | 查询时附加参数 | 用于租户路由等多租户网关 |
| Manage alerts | 允许在此数据源上管理 Prometheus 告警规则 | 需要统一管理时开启 |
| Direct connect | 浏览器直连 Prometheus 而非经 Grafana 代理 | 只有配好 CORS 才开 |
写第一个查询
在 Explore 中选择该数据源,输入一个最经典的查询:
rate(http_requests_total{status="500"}[5m])
几个调优心得:
- Legend(图例) 填
{{instance}},每条线自动带上标签值,告别「series 1/2/3」。 - Step 留空让 Grafana 按时间范围自动计算;排障细粒度查询可手动调小。
- 查询返回慢时,先在 PromQL 里收紧标签选择器,而不是急着调超时。
常见坑
- 时区对不上:Grafana 界面时间默认跟随浏览器,与 Prometheus 无关;若数字「差八小时」,先检查右上角时间选择器与浏览器时区。
rate全为空:指标可能刚启动、不足一个抓取间隔的两倍;或标签名写错,http_requests_total是Counter,increase()/rate()只对这类指标有意义。- CORS 报错:说明误开了 Direct connect,关掉即可(Grafana 代理模式没有跨域问题)。
下一步
- 面板层怎么用这个数据源,见查询与数据变换。
- 想基于指标告警,读告警规则。
- 日志侧的搭档,见Loki 日志数据源。