如何从GCP组织导出SLO至Prometheus并在Grafana中使用?
两种方案解决GCP SLO指标在Grafana中的使用问题
方案一:将GCP SLO指标导入Prometheus
1. 部署Google Cloud Monitoring Exporter
这个工具可以把GCP Cloud Monitoring中的SLO指标同步到Prometheus:
- 先给exporter分配GCP权限:创建一个服务账号,授予
monitoring.viewer角色,确保能读取SLO相关数据。 - 启动exporter(以容器为例),指定要抓取的GCP项目和SLO相关指标类型:
docker run -p 9255:9255 \ -e GOOGLE_APPLICATION_CREDENTIALS=/path/to/your-service-account-key.json \ -v /local/path/to/key.json:/path/to/your-service-account-key.json \ prometheuscommunity/google-stackdriver-exporter:latest \ --stackdriver.project-id=your-gcp-project-id \ --stackdriver.metrics-type-prefixes=service_level_objective,service_level_indicator
2. 配置Prometheus抓取exporter数据
在Prometheus的prometheus.yml中添加抓取任务:
scrape_configs: - job_name: 'gcp-slo-exporter' static_configs: - targets: ['your-exporter-ip:9255']
重启Prometheus后,就能在Prometheus中查询到类似stackdriver_service_level_objective_sli_value的SLO指标了。
方案二:直接通过Grafana的Cloud Monitoring连接器获取SLO指标
无需中转Prometheus,直接用Grafana内置的Cloud Monitoring数据源即可:
1. 确认数据源配置正确
在Grafana中已添加Cloud Monitoring数据源,且认证方式(服务账号/OAuth)有权限访问目标GCP项目的监控数据。
2. 可视化面板中构建SLO查询
在面板选择Cloud Monitoring数据源后:
- 选择资源类型:根据你的SLO关联资源选择,比如
global(全局SLO)或cloud_run_revision(云运行服务关联SLO) - 选择指标:搜索
sli/slo相关指标,比如service_level_indicator/value(当前SLI值)、service_level_objective/burn_rate(错误预算烧录速率)、service_level_objective/error_budget_remaining(剩余错误预算) - 添加过滤器:通过
metric.labels.slo_name筛选特定SLO,或用project_id指定目标项目
方案三:通过BigQuery连接器获取SLO数据
如果你的GCP SLO数据已导出到BigQuery(通过Cloud Monitoring导出功能),可直接用Grafana的BigQuery数据源查询:
- 确保BigQuery数据源有对应数据集的访问权限
- 编写SQL查询筛选SLO数据,例如:
SELECT timestamp, metric.labels.slo_name, value FROM `your-gcp-project-id.monitoring.reports_*` WHERE metric.type = 'service_level_indicator/value' AND metric.labels.slo_name = 'your-target-slo-name' AND _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)) AND FORMAT_DATE('%Y%m%d', CURRENT_DATE()) ORDER BY timestamp DESC
将该SQL填入Grafana的BigQuery查询框,即可实现SLO数据可视化。
内容的提问来源于stack exchange,提问作者Mihir Sharma
相关产品推荐
相关产品推荐

