mcpField
P
prometheus

prometheus

github.com/alphaonedev云与 DevOps51 次安装
代码仓库

关于 prometheus

prometheus 是用于基础设施、应用和服务监控的技能,面向 DevOps/SRE 场景。它介绍 HTTP 指标采集、PromQL 查询、告警规则和时序数据保留,也涵盖多实例联邦。

主要功能

  1. 01通过 HTTP 抓取指标
  2. 02使用 PromQL 查询时序数据
  3. 03配置 YAML 告警规则
  4. 04设置数据存储与保留期限
  5. 05汇总多个 Prometheus 实例

适用场景

  1. 01监控服务器或应用指标
  2. 02查询 CPU 等运行数据
  3. 03针对高 CPU 或错误率设置告警
  4. 04聚合多个实例的指标

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill prometheus

安装后在 Claude Code 中输入/prometheus确认已加载。

详细介绍

prometheus

用途

Prometheus 用于监控各种目标的指标并基于指标发送告警。它通过 HTTP 拉取时序数据、存储数据,并允许查询数据以触发告警。

适用场景

在 DevOps/SRE 环境中监控基础设施、应用或服务时使用此技能。可将其用于实时指标采集、异常检测或扩缩容决策,例如跟踪 Kubernetes 集群中的服务器运行状况,或在微服务错误率过高时发送告警。

主要功能

  • 指标采集:使用可配置的作业抓取 HTTP 端点;在 YAML 配置中指定目标,例如 scrape_configs: - job_name: 'node' static_configs: - targets: ['localhost:9100']。
  • 查询:使用 PromQL 检索数据;例如,使用 rate(node_cpu_seconds_total{mode="idle"}[5m]) 查询 CPU 使用情况。
  • 告警:在 YAML 文件中定义规则以触发告警;例如:groups: - name: example rules: - alert: HighCPU usage: (avg by(instance) (rate(node_cpu_seconds_total{mode="system"}[5m])) > 0.8) for: 1m。
  • 存储与保留:处理时序数据,并支持配置保留期限;通过 --storage.tsdb.retention.time=15d 标志设置。
  • 联邦:聚合多个 Prometheus 实例的指标,以适用于更大规模的部署。

使用模式

要监控某个目标,请先创建包含抓取作业的 YAML 配置文件(例如 prometheus.yml),然后使用该配置启动 Prometheus 服务。查询时,可使用内置 API 或集成 Grafana 等工具。尽早设置告警规则。如果在容器中使用,请挂载配置卷并公开 Web 端口(默认端口为 9090)。对于生产环境,可通过设置 --web.external-url 并使用环境变量(如 $PROMETHEUS_AUTH_USER 和 $PROMETHEUS_AUTH_PASS)配置基本身份验证。

常用命令/API

  • CLI 命令:使用 prometheus --config.file=prometheus.yml --web.listen-address=":9090" --storage.tsdb.path="/prometheus" 启动服务。使用 curl -X POST http://localhost:9090/-/reload 动态重新加载配置。使用 promtool 测试规则:promtool check rules prometheus.rules.yml。
  • API 端点:通过 GET /api/v1/query 和查询参数查询指标,例如 curl "http://localhost:9090/api/v1/query?query=up"。范围查询可使用 GET /api/v1/query_range?query=up&start=1630000000&end=1630003600&step=15s。如果需要身份验证,请添加类似 Authorization: Bearer $PROMETHEUS_API_KEY 的标头。
  • 代码片段:
    // Simple Go client to query Prometheus
    client, err := prometheus.NewClient(http.Client{}, "http://localhost:9090")
    result, err := client.Query(context.Background(), "up", time.Now())
    
    # Python example using prometheus-api-client
    from prometheus_api_client import MetricsList
    metrics = MetricsList('http://localhost:9090/api/v1/query?query=up')
    print(metrics)
    
  • 配置格式:主配置使用 YAML;示例片段:global: scrape_interval: 15s。告警规则使用 YAML 数组,参见“主要功能”部分中的示例。

集成说明

通过在配置中添加抓取作业,将 Prometheus 与导出器(例如,用于系统指标的 Node Exporter)集成。要进行可视化,可连接 Grafana,添加 URL 类似 http://prometheus:9090 的 Prometheus 数据源,并通过环境变量 $GRAFANA_PROM_DS_KEY 进行身份验证。要配置联邦,请在 YAML 中设置远程写入:remote_write: - url: 'http://federate-prometheus:9090/api/v1/write'。如果与 Kubernetes 配合使用,请通过 Helm charts 部署,并使用标签设置 ServiceMonitors。务必通过环境变量处理 API 密钥,例如将其导出为 $PROMETHEUS_API_KEY 以确保安全访问。

错误处理

常见错误包括配置语法问题(使用 promtool check config prometheus.yml 检查)、抓取失败(检查配置中的目标和超时设置)或查询错误(使用 API 响应码判断,例如错误查询会返回 422)。调试时,可通过 --log.level=debug 启用日志记录,并检查日志中类似 "error scraping target" 的消息。对于 API 调用,请处理 HTTP 错误:如果状态码为 500,请使用指数退避重试;代码示例如下:

if err != nil && strings.Contains(err.Error(), "context deadline exceeded") { log.Fatal("Scrape timeout; increase timeout in config") }

先使用 /api/v1/query 端点验证 PromQL 查询。如果身份验证失败(例如,401),请确保已设置环境变量 $PROMETHEUS_AUTH_TOKEN 并正确传递。

具体使用示例

  1. 监控本地 Web 服务:创建 prometheus.yml,内容如下:scrape_configs: - job_name: 'web' metrics_path: '/metrics' static_configs: - targets: ['localhost:8080']。启动 Prometheus:prometheus --config.file=prometheus.yml。查询运行状态:curl "http://localhost:9090/api/v1/query?query=up{job='web'}"。此操作每 15 秒采集一次指标,并允许在服务宕机时触发告警。
  2. 设置 CPU 告警:定义规则文件:groups: - name: instance rules: - alert: HighCPU expr: avg by(instance) (rate(node_cpu_seconds_total{mode="system"}[5m])) > 0.9 for: 2m。通过配置加载规则:将 rule_files: ["alert.rules.yml"] 添加到 prometheus.yml 中。运行 prometheus --config.file=prometheus.yml。通过添加以下配置与 Alertmanager 集成:alerting: alertmanagers: - static_configs: - targets: ['localhost:9093']。这会在 CPU 使用率过高时触发告警并发送通知。

图关系

  • 所属集群:devops-sre
  • 标签:monitoring、metrics、alerting
  • 相关技能:(例如,通过标签关联)用于可视化的 grafana、用于通知的 alertmanager

评论

支持 Markdown