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 生成器,您可以阅读