SLO Generator
项目描述
SLO Generator
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名称(例如availability
、latency128ms
等)。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 生成器,您可以阅读