跳转到主要内容

SLO Generator

项目描述

SLO Generator

test build deploy PyPI version Downloads

sl-generator 是一个工具,用于使用YAML(或JSON)格式编写的配置来计算和导出 服务级别目标SLOs)、错误预算燃烧速率

重要提示:以下内容是 sl-generator v2 文档。v1 文档可在 此处 获取,有关迁移到 v2 的说明可在 此处 获取。

目录

描述

slo-generator运行后端查询计算服务等级指标,将其与定义的服务等级目标进行比较,并通过计算重要指标生成报告

  • 服务等级指标(SLI)定义为SLI = Ngood_events / Nvalid_events
  • 错误预算(EB)定义为EB = 1 - SLI
  • 错误预算燃烧率(EBBR)定义为EBBR = EB / EBtarget
  • ...等等,请参阅示例SLO报告

通常使用错误预算燃烧率在SLO上发出警报,因为它在实践中比直接在指标或SLI > SLO阈值上发出警报更可靠稳定

本地使用

要求

  • Python 3.7及以上版本
  • pip3

安装

slo-generator是一个发布在PyPI上的Python库。要安装它,运行

pip3 install slo-generator

说明

  • 要安装提供者,请使用pip3 install slo-generator[<PROVIDER_1>, <PROVIDER_2>, ... <PROVIDER_n]。例如
    • pip3 install slo-generator[cloud_monitoring]安装Cloud Monitoring后端/导出器。
    • pip3 install slo-generator[prometheus, datadog, dynatrace]安装Prometheus、Datadog和Dynatrace后端/导出器。
  • 要安装slo-generator API,运行pip3 install slo-generator[api]
  • 要启用调试日志,将环境变量DEBUG设置为1
  • 要启用彩色输出(本地使用),将环境变量COLORED_OUTPUT设置为1

CLI 使用

要使用CLI计算SLO报告,请运行

slo-generator compute -f <SLO_CONFIG_PATH> -c <SHARED_CONFIG_PATH> --export

其中

  • <SLO_CONFIG_PATH>SLO配置文件或文件夹路径。
  • <SHARED_CONFIG_PATH>共享配置文件路径。
  • --export | -e启用使用SLO配置文件中指定的exporters导出数据。

使用slo-generator compute --help列出所有可用参数。

API 使用

除了CLI之外,slo-generator还可以作为使用Cloud Functions Framework SDK(Flask)的API运行,使用api子命令

slo-generator api --config <SHARED_CONFIG_PATH>

其中

  • <SHARED_CONFIG_PATH>共享配置文件路径或GCS URL。

API启动运行后,您可以通过HTTP POST请求发送您的SLO配置(YAML或JSON)到请求体中

curl -X POST -H "Content-Type: text/x-yaml" --data-binary @slo.yaml localhost:8080 # yaml SLO config
curl -X POST -H "Content-Type: application/json" -d @slo.json localhost:8080 # json SLO config

有关API和高级使用的更多信息,请参阅docs/shared/api.md

配置

slo-generator运行需要两个配置文件,一个SLO配置文件,描述您的SLO,以及一个共享配置文件(所有SLO的通用配置)。

SLO 配置

SLO配置(JSON或YAML)遵循Kubernetes格式,由以下字段组成

  • api: sre.google.com/v2

  • kind: ServiceLevelObjective

  • metadata:

    • name: [必需] 字符串 - 完整SLO名称(必须是唯一的)。
    • labels: [可选] 映射 - 元数据标签,例如
      • slo_name: SLO名称(例如availabilitylatency128ms等)。
      • service_name: 监控服务(按服务分组SLO)。
      • feature_name: 监控功能(按功能分组SLO)。
  • spec:

    • description: [必需] 字符串 - 此SLO的描述。
    • 目标:[必需] 字符串 - SLO 目标(或指标)(必须在 0 到 1 之间)。
    • 后端:[必需] 字符串 - 后端名称(必须在 SLO 生成器配置中存在)。
    • 方法:[必需] 字符串 - 要使用的后端方法(必须在后端类定义中存在)。
    • 服务级别指标:[必需] 映射 - SLI 配置。本节内容针对每个提供商而异,请参阅 docs/providers
    • 错误预算策略:[可选] 字符串 - 错误预算策略名称(必须在 SLO 生成器配置中存在)。如未指定,则默认为 default
    • 导出器:[可选] 字符串 - 导出器名称列表(必须在 SLO 生成器配置中存在)。

注意: 您可以通过使用 ${MY_ENV_VAR} 语法在 SLO 配置中使用环境变量,以避免在版本控制中包含敏感数据。环境变量将在运行时自动替换。

→ 请参阅 示例 SLO 配置

共享配置

共享配置(JSON 或 YAML)配置 slo-generator 并作为所有 SLO 配置的共享配置。它由以下字段组成

  • 后端:[必需] 映射 - 数据后端配置。每个后端别名定义为键 <后端名称>/<后缀> 和配置映射。

    backends:
      cloud_monitoring/dev:
        project_id: proj-cm-dev-a4b7
      datadog/test:
        app_key: ${APP_SECRET_KEY}
        api_key: ${API_SECRET_KEY}
    

    请参阅特定提供商的文档以获取详细配置

  • 导出器:将结果导出的导出器映射。每个导出器定义为键格式为 <导出器名称>/<可选后缀>,以及详细导出器配置的映射值。

    exporters:
      bigquery/dev:
        project_id: proj-bq-dev-a4b7
        dataset_id: my-test-dataset
        table_id: my-test-table
      prometheus:
        url: ${PROMETHEUS_URL}
    

    请参阅特定提供商的文档以获取详细配置

    • bigquery 将 SLO 报告导出到 BigQuery 以进行历史分析和 DataStudio 报告。
    • cloudevent 将 SLO 报告流式传输到 Cloudevent 接收器。
    • pubsub 将 SLO 报告流式传输到 Pubsub。
    • cloud_monitoring 将指标导出到 Cloud Monitoring。
    • prometheus 将指标导出到 Prometheus。
    • datadog 将指标导出到 Datadog。
    • dynatrace 将指标导出到 Dynatrace。
    • <custom> 将 SLO 数据或指标导出到自定义目的地。
  • 错误预算策略:[必需] 各种错误预算策略的映射。

    • <ebp_name>:错误预算策略的名称。
      • 步骤:错误预算策略步骤的列表,每个步骤包含以下字段
        • 窗口:此错误预算的滚动时间窗口。
        • alerting_burn_rate_threshold:需要警报的目标燃烧率阈值。
        • 紧急通知:布尔值,表示违反此错误预算是否应触发页面。
        • overburned_consequence_message:当错误预算高于目标时显示的消息。
        • achieved_consequence_message:当错误预算在目标内时显示的消息。
    error_budget_policies:
      default:
        steps:
        - name: 1 hour
          burn_rate_threshold: 9
          alert: true
          message_alert: Page to defend the SLO
          message_ok: Last hour on track
          window: 3600
        - name: 12 hours
          burn_rate_threshold: 3
          alert: true
          message_alert: Page to defend the SLO
          message_ok: Last 12 hours on track
          window: 43200
    

→ 请参阅 示例共享配置

更多文档

要进一步了解 SLO 生成器,您可以阅读

使用BigQuery和DataStudio构建SLO成就报告

在Cloud Run中部署SLO生成器

在Kubernetes中部署SLO生成器(Alpha版)

在CloudBuild管道中部署SLO生成器

已弃用:在Google Cloud Functions(Terraform)上部署SLO生成器

为SLO生成器做出贡献

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

slo-generator-2.6.0.tar.gz (68.0 kB 查看哈希值)

上传时间

构建分发

slo_generator-2.6.0-py2.py3-none-any.whl (93.3 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面