Prometheus: 使用 CLI 实现自动化

通过 Stackhero CLI 以编程方式启动 Prometheus、获取其凭证并更改其配置

👋 欢迎来到 Stackhero 文档!

Stackhero 提供即用型 Prometheus 云 解决方案,具有多种优势,包括:

  • 包含 Alert Manager,可发送警报到 SlackMattermostPagerDuty 等。
  • 专用邮件服务器发送无限制邮件警报
  • Blackbox 用于探测 HTTPICMPTCP 等。
  • 使用在线配置文件编辑器进行轻松配置
  • 只需点击即可轻松更新
  • 专用私有 VM提供的最佳性能和强大安全性

节省时间简化生活:只需 5 分钟即可试用 Stackhero 的 Prometheus 云托管 解决方案!

本指南将演示如何通过命令行创建 Prometheus 服务、读取其凭证并更新其配置,全程无需在控制台点击操作。非常适合脚本、CI 流水线和 AI agent 场景。

我们将使用 Stackhero CLI 完成所有操作。如果您尚未安装,可以通过以下命令进行安装:

curl -fsSL https://www.stackhero.io/install.sh | sh

最简单的方式是通过浏览器登录。当您运行登录命令时,CLI 会自动打开网页,您只需在网页上授权访问,无需在 CLI 输入密码或 2FA 验证码。

stackhero login

登录后,您的凭证会被本地保存,后续 CLI 命令会自动使用。

对于完全自动化的环境(如脚本或 CI 流水线),您可以选择使用非交互式的访问令牌。您可以在控制台(账户 > Access tokens)创建令牌,然后将其导出为环境变量。CLI 及您运行的任何脚本都会自动读取该变量。

export STACKHERO_TOKEN="usr-xxxxxx:your-token"

接下来,您可以列出账户下可用的 Prometheus 服务商店。CLI 直接接受商店名称prometheus),无需查找或复制任何 ID。

# 列出 Prometheus 服务商店(如管理多个组织,可加 --organization)
stackhero services-store-list --name="prometheus"

后续命令中,您可以直接使用商店名称 prometheus,也可以从列表中选择具体的 svs-xxxxxx ID。

# 列出服务商店可用的实例规格(使用 NAME 列作为 --instance 参数)
stackhero instances-store-list --service-store=prometheus

# 列出可用区域(如 "europe")
stackhero regions-list

以下是一个示例脚本:创建一个 stack,将您的 Prometheus 服务添加到 stack,等待服务启动,获取其配置信息(包括自动生成的凭证),然后应用新的配置。

#!/bin/bash
set -e

export STACKHERO_TOKEN="usr-xxxxxx:your-token"

serviceStore="prometheus"   # Prometheus 服务商店名称(见第 2 步)
instance="..."                # 第 3 步获取的实例规格
region="europe"               # 第 3 步获取的区域名称

# 为您的服务创建一个 stack(默认使用您的组织,如有需要可加 --organization)
stackId=$(stackhero --format=script stack-create \
  --name="My Prometheus stack")
echo "Stack created: ${stackId}"

# 将 Prometheus 添加到 stack(名称会自动解析)
serviceId=$(stackhero --format=script service-add \
  --stack="My Prometheus stack" \
  --service-store="${serviceStore}" \
  --instance="${instance}" \
  --region="${region}")
echo "Service added: prometheus"

# 等待服务完全启动(可能需要几分钟)
stackhero service-wait-for --service="prometheus"

# 获取服务配置,包括自动生成的凭证
stackhero service-configuration-get --service="prometheus" --format=json

service-configuration-get 命令会返回服务的完整配置信息,包括自动生成的密码和连接信息。输出为 JSON 格式,方便在脚本和自动化流程中使用。

stackhero service-configuration-get --service=svc-xxxxxx --format=json

您可以先查看配置 schema 示例,然后应用自定义配置。当您更新配置时,服务可能会自动重启以应用更改。

# 查看服务的配置 schema 及示例
stackhero service-configuration-example --service=svc-xxxxxx

# 应用自定义配置(如有需要服务会自动重启)
stackhero service-configuration-set \
  --service=svc-xxxxxx \
  --configuration='{ "...": "..." }'

# 等待新配置生效
stackhero service-wait-for --service=svc-xxxxxx

就是这样。您已经完整体验了整个生命周期:启动服务、获取凭证、重新配置服务,全部可通过脚本自动化完成。如需深入了解,请参阅完整 CLI 文档,其中也包含了本指南演示的非交互式 STACKHERO_TOKEN 认证方式。