后端与接口
需要管理 Grafana Cloud 账号、stack…
在 Grafana Cloud 中创建/删除 stack、邀请用户与团队、配置 SSO/SAML/OAuth/GitHub、分配 RBAC 角色、创建 CI/CD/Terraform 用的 service account,或通过 API/Terraform 做资源 provisioning 时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要管理 Grafana Cloud 账特定
解决思路
- 参考官方文档:https://grafana.com/docs/grafana-cloud/account-management.md。
- 创建新 stack:用 Cloud API 调用 `curl -X POST https://grafana.com/api/instances`,带 `Authorization: Bearer <grafana-com-api-key>` 和 `Content-Type: application/json`,请求体为 `{"name": "my-new-stack", "slug": "my-new-stack", "region": "us-east-0", "plan": "grafana-cloud-free"}`。
- 验证新 stack 可访问:轮询直到健康检查返回 200,使用 `until curl -fs https://my-new-stack.grafana.net/api/health > /dev/null; do sleep 2; done`。
- 为新 stack 铸造 admin service-account token(见下文 Service Accounts 步骤)。
- 测试该 token:`curl https://my-new-stack.grafana.net/api/org -H "Authorization: Bearer <token>"`;返回 200 + org JSON 表示 token 可用。
- 邀请用户加入团队:通过 `POST /api/org/invites`,每个用户执行一次 curl(完整端点见 `references/api-reference.md § Stack API`)。
- 创建团队:通过 `POST /api/teams`。
- 添加用户到团队:对每个用户调用 `POST /api/teams/{teamId}/members`。
- 给团队分配 RBAC 角色(见下文 RBAC 步骤)。
- 验证团队成员:调用 `GET /api/teams/{teamId}/members`,确认返回预期用户列表。
- 配置 SSO(Okta/SAML/GitHub):从 `references/sso.md` 选择对应 provider 配置并放入 `grafana.ini`。
- 重启 Grafana 使 SSO 配置生效。
- 在对外宣布前,始终用无痕窗口验证 SSO;按 `references/sso.md § Verifying SSO` 的 5 步验证 + 角色映射调试模式执行。
- 删除 stack(破坏性操作):通过 Cloud API 调用 `curl -X DELETE https://grafana.com/api/instances/{id} -H "Authorization: Bearer <grafana-com-api-key>"`。
- 验证 stack 已删除:调用 `curl https://grafana.com/api/instances/{id} -H "Authorization: Bearer <grafana-com-api-key>"`,必须返回 404。
- 如果删除后几秒 GET 仍返回 200,说明删除未生效;重新检查 stack ID 和 Cloud API key。
- 按 Grafana Cloud 结构组织资源:Organization 是顶层账号,含计费、用户、API keys、stacks;Stack 是独立 Grafana + LGTM 实例,拥有独立 URL 和凭据。
- 分配用户角色时按范围和权限选择:Org Admin 管理组织级 stacks/users/billing/API keys;Admin 管理 stack 级数据源/插件/用户/provisioning;Editor 创建/编辑 dashboard 和 alert;Viewer 只读 dashboard。
- 定义自定义 RBAC 角色:在 `provisioning/access-control/roles.yaml` 写 `apiVersion: 1` 和 `roles`,例如 `TeamDashboardEditor`,包含 `dashboards:read`、`dashboards:write`、`dashboards:create` 权限及 `scope: folders:UID:team-folder`。
- 定义 RBAC 角色分配:在 `provisioning/access-control/assignments.yaml` 写 `apiVersion: 1` 和 `roleAssignments`,包括 `roleName: TeamDashboardEditor`、`users`(如 `alice@example.com`、`bob@example.com`)、`teams`(如 `platform-team`)。
- 提交 YAML 并重启 Grafana 后,验证角色已应用:`GET /api/access-control/roles | jq '.[] | select(.name=="TeamDashboardEditor")'`。
- 对 CI/CD、Terraform、agent 等程序化访问,优先使用 service account。
- 创建 service account:`curl -X POST https://yourstack.grafana.net/api/serviceaccounts`,带 `Authorization: Bearer <admin-token>` 和 `Content-Type: application/json`,请求体如 `{"name": "terraform-provisioner", "role": "Admin", "isDisabled": false}`。
- 为 service account 铸造 token:`curl -X POST https://yourstack.grafana.net/api/serviceaccounts/{id}/tokens`,带 `Authorization: Bearer <admin-token>` 和 `Content-Type: application/json`,请求体如 `{"name": "ci-token", "secondsToLive": 0}`。
- 验证 service-account token:用 `curl https://yourstack.grafana.net/api/org -H "Authorization: Bearer <new-token>"`;返回 200 + org JSON 表示可用,否则重新检查第 1 步中的角色分配。
- 用 provisioning 声明式创建 service account:在 `provisioning/access-control/service_accounts.yaml` 写 `apiVersion: 1` 和 `serviceAccounts`,例如 `name: alloy-writer`、`orgId: 1`、`role: Editor`、`tokens: - name: alloy-token`。
- 需要 SSO/OAuth/SAML/GitHub 配置、5 步 SSO 验证、常见失败模式时,查阅 `references/sso.md`。
- 需要 Terraform provider 配置、teams/users/folders/dashboards 资源模式和 drift 排障时,查阅 `references/terraform.md`。
- 需要完整 Cloud API/Stack API 端点参考和 audit-log 查询时,查阅 `references/api-reference.md`。
适用边界 · 注意事项
- 没有 Grafana Cloud 账号、Cloud API key 或对应 stack 权限时,不适合使用这些步骤。
- 只需要本地 Grafana OSS/自托管且不涉及 Grafana Cloud API、Cloud stack、Terraform provider 时,不适用。
- 删除 stack 等破坏性操作未确认 stack ID、影响范围和备份时,不应执行。