ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Grafana 如何将数据源管理的告警规则导入为 Grafana-managed rules

Grafana 如何将数据源管理的告警规则导入为 Grafana-managed rules Grafana 如何将数据源管理的告警规则导入为 Grafana-managed rules【免费下载链接】grafanaThe open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.项目地址: https://gitcode.com/GitHub_Trending/gr/grafana如果你已经把告警规则放在 Mimir、Loki 或 Prometheus 的数据源一侧管理现在想把它们收拢到 Grafana Alerting 里统一运维Grafana 提供了一条直接路径把数据源管理的规则data source-managed rules转换并导入为 Grafana-managed rules。导入完成后这些规则可以在 Grafana 中查看、编辑和管理而数据源中原来的规则保持原样不会被动到。Grafana 提供两种导入方式可以按工作流选择通过 Grafana Alerting 界面从已连接且启用了 ruler API 的 Mimir / Loki 数据源导入或上传 Prometheus YAML 规则文件导入通过命令行工具用mimirtool导入 Mimir 和 Prometheus 规则用cortextool版本0.11.3或更高导入 Loki 规则。完整操作参考项目内的官方迁移文档alerting-migration.md。导入时规则会发生什么变化导入本质上是把数据源管理的规则复制到另一个文件夹并转换为 Grafana-managed rules转换过程会保留原有配置和行为同时自动应用以下设置唯一 UID新规则分配唯一 UID。如果不想自动生成可以用__grafana_alert_rule_uid__标签指定。Query offset规则组的query_offset配置值会应用到每条规则例如1m会把查询时间范围调整为To: now-1m。如果规则组里没有定义则回落到 Grafana 的rule_query_offset配置项默认值1m。查询转换告警规则会追加prometheus_math和threshold表达式用来保留 Prometheus 的 no data 行为——query无数据返回时告警保持Normal状态。Missing series evaluations to resolve设为1以复现 Prometheus 的告警驱逐eviction行为对应文档见 stale-alert-instances.md。规则组级标签定义在规则组上的标签会加到组内每条导入的规则上。顺序求值导入的规则在各自规则组内按顺序求值与 Prometheus 行为一致这与原生 Grafana-managed rules 不强制求值顺序不同详见 evaluation strategies。版本与功能兼容的边界需要事先了解否则会直接导入失败规则组的limit选项和告警规则模板中的query函数目前不被 Grafana-managed rules 支持。如果limit选项存在导入会失败模板中含query的规则仍会被导入。带__grafana_origin标签的规则不会参与导入这类规则通常由 Kubernetes Monitoring、Synthetic Monitoring 等 Grafana 插件创建。官方建议的做法是在迁移全部规则之前先对导入流程做小规模测试和验证。方法一通过 Grafana Alerting 界面导入权限准备界面导入需要以下 RBAC 权限AlertingRules Writer、Set provisioning statusDatasourcesReaderFoldersCreator可选仅在需要为目标 namespace 新建文件夹时才必要如果你的账号没有查看某个 namespace 的权限工具会新建一个操作步骤进入Alerting Alert rules。在 Data source-managed alert rules 区域点击Import to Grafana-managed rules。选择Import sourceExisting data source-managed rules从启用了 ruler API 的已连接 Mimir 或 Loki 数据源导入Prometheus YAML file上传一个 Prometheus YAML 规则文件导入。在Data source下拉框中选择导入后的告警规则要查询的数据源。可选在 Additional settings 中选择目标文件夹或指定一个新文件夹。注意如果导入到已有文件夹不要选择其中已包含告警规则的文件夹否则可能被覆盖。可选选择 Namespace 和/或 Group 来限定导入范围。可选开启Pause imported alerting rules暂停会停止规则求值并为新创建的规则不产生任何 alert instances。可选开启Pause imported recording rules暂停新建 recording rules 的求值行为。可选在Recording rules区域的Target data source中指定 recording rules 写入指标的目标数据源默认是第 4 步选中的数据源。点击Import。此时会先展示一个预览列出将被导入的规则如果目标文件夹存在与导入文件夹同名的文件夹会显示警告点开警告可以看到可能被覆盖的文件夹列表。确认无误后点击Yes, import完成导入。通过界面导入的规则可以在界面中编辑和普通 Grafana-managed rules 一样之后也可以导出用于 provisioning。方法二通过命令行工具导入mimirtool的rules命令支持导入规则组rules load从文件导入规则组rules sync读取规则文件并与现有 Grafana-managed rules 比对、只应用差异按需创建、更新或删除规则适合自动化工作流。cortextool用法类似通过--backendloki处理 Loki 规则。权限与令牌准备命令行导入需要一个 service account具备以下 RBAC 权限AlertingRules Reader、Rules Writer、Set provisioning statusDatasourcesReaderFoldersCreator、Reader、Writer并用该 service account 创建一个 service account token参考 service accounts 文档。工具本身需要已安装mimirtool或cortextool版本0.11.3或更高。mimirtool 导入 Prometheus / Mimir 规则下面命令中需要替换的占位符GRAFANA_BASE_URL换成你的 Grafana 实例地址SERVICE_ACCOUNT_TOKEN换成第 1 步创建的 service account tokenDATASOURCE_UID_QUERY_TARGET换成导入后的告警规则要查询的数据源 UIDrule_file.yaml换成实际的规则文件。MIMIR_ADDRESSGRAFANA_BASE_URL/api/convert/ \ MIMIR_AUTH_TOKENSERVICE_ACCOUNT_TOKEN \ MIMIR_TENANT_ID1 \ mimirtool rules load rule_file.yaml \ --extra-headers X-Grafana-Alerting-Datasource-UIDDATASOURCE_UID_QUERY_TARGET两个关键点指向GRAFANA_BASE_URL/api/convert/端点时mimirtool实际操作的是 Grafana 而不是 Mimir 实例因此MIMIR_TENANT_ID必须固定为1。X-Grafana-Alerting-Datasource-UIDheader 决定导入的告警规则查询哪个数据源其他可选 header 用额外的--extra-headers标志传入。rules sync命令的用法类似注意--concurrency必须显式设为1默认值8可能触发 API 错误MIMIR_ADDRESSGRAFANA_BASE_URL/api/convert/ \ MIMIR_AUTH_TOKENSERVICE_ACCOUNT_TOKEN \ MIMIR_TENANT_ID1 \ mimirtool rules sync rule_file.yaml \ --extra-headers X-Grafana-Alerting-Datasource-UIDDATASOURCE_UID_QUERY_TARGET \ --concurrency 1sync会读取文件中的规则、与实例中现有 Grafana-managed rules 比对只应用差异。官方文档给出的执行结果示例如下文档示例实际数值随导入内容不同而不同## Sync Summary: 0 Groups Created, 1 Groups Updated, 0 Groups Deletedcortextool 导入 Loki 规则Loki 规则使用cortextool版本0.11.3或更高加--backendloki标志。占位符替换方式同上CORTEX_ADDRESSGRAFANA_BASE_URL/api/convert/ \ CORTEX_AUTH_TOKENSERVICE_ACCOUNT_TOKEN \ CORTEX_TENANT_ID1 \ cortextool rules load loki_rules.yaml \ --extra-headers X-Grafana-Alerting-Datasource-UIDLOKI_DATASOURCE_UID_QUERY_TARGET \ --backendloki可选 Header 与 API 端点命令行导入还支持一组 header用于更细粒地控制导入行为Header作用X-Grafana-Alerting-Datasource-UID告警规则查询用的数据源 UID。不指定时 Grafana 使用unified_alerting.prometheus_conversion.default_datasource_uid的配置值header 和配置都没有提供时请求会失败。X-Grafana-Alerting-Target-Datasource-UIDrecording rules 的目标数据源不指定时沿用X-Grafana-Alerting-Datasource-UID。X-Disable-Provenance设为true后导入的规则不标记为 provisioned可以在界面中编辑且被排除在/api/convert的GET和DELETE操作之外。使用rules sync时不要开启因为 sync 依赖GET/DELETE来检测并更新现有规则。X-Grafana-Alerting-Alert-Rules-Paused设为true以 paused 状态导入告警规则。X-Grafana-Alerting-Recording-Rules-Paused设为true以 paused 状态导入 recording rules。X-Grafana-Alerting-Folder-UID指定导入规则的目标文件夹 UID。X-Grafana-Alerting-Notification-SettingsJSON 编码的AlertRuleNotificationSettings对象用于设置告警规则的联系人receiver必填且必须已存在可选group_by、group_wait、group_interval、repeat_interval、mute_time_intervals、active_time_intervals。需要说明的是通过 API 或命令行工具导入的规则默认是Provisioned状态在界面中不可编辑要改为可编辑需启用X-Disable-Provenanceheader。/api/convert端点兼容 Mimir HTTP Rule API端点路径中的 namespace 对应 Grafana 中的文件夹标题。POST端点用于导入接受 YAML 或 JSON未指定 media type 时默认按 YAML 解析端点方法说明/convert/prometheus/config/v1/rulesPOST跨多个 namespace 创建或更新多个规则组成功返回202。请求体为 namespace 标题到规则组数组的映射例如/convert/prometheus/config/v1/rules/:namespaceTitlePOST在某个 namespace 中创建或更新单个规则组。文档给出的请求体示例namespace1: - name: MyGroupName1 rules: - alert: MyAlertName1 expr: up 0 labels: severity: warning namespace2: - name: MyGroupName2 rules: - alert: MyAlertName2 expr: rate(http_requests_total[5m]) 0.1 labels: severity: criticalGET和DELETE端点只作用于 provisioned 状态的导入规则可用于导入后核对结果GET /convert/prometheus/config/v1/rules列出所有已导入规则组按 namespace 或 namespacegroup 查询DELETE可按 namespace 或规则组删除。所有GET端点根据Acceptheader 返回 JSONapplication/json或 YAMLapplication/yaml未指定时默认 YAML。导入后如何核对与边界说明界面导入以第 10 步的预览为核对依据确认点击Yes, import后到Alerting Alert rules查看导入的规则及其所在文件夹如果目标文件夹存在同名文件夹预览阶段的警告会列出可能被覆盖的文件夹务必先处理。命令行导入rules sync结束时的Sync Summary输出Created / Updated / Deleted 组数是核对差异是否已应用的直接依据也可以用GET /convert/prometheus/config/v1/rules系列端点查询实际导入的规则组。导入是安全操作数据源中原来的规则保持在原位置不动转换复制出的规则使用等价特性保留原有行为因此可以先小范围试导、确认无误后再处理全部规则。如果你的规则组使用了limit选项导入会失败需要先移除该选项模板中使用了query函数时规则会被导入但该函数本身不受 Grafana-managed rules 支持。导入后的 recording rules 默认写回Data source下拉框选中的数据源界面或沿用X-Grafana-Alerting-Datasource-UIDAPI也可以在导入时显式改到别的目标数据源。数据源 UID 的默认值可以在 Grafana 配置文件 的[unified_alerting.prometheus_conversion]段设置default_datasource_uid为空时 header 必填和rule_query_offset默认1m适合在 API 导入中省去逐个传 header。导入完成后这些规则就作为普通 Grafana-managed rules 存在界面导入的可以直接编辑和导出命令行导入的默认带 Provisioned 标记需要编辑时用X-Disable-Provenance重新导入。【免费下载链接】grafanaThe open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.项目地址: https://gitcode.com/GitHub_Trending/gr/grafana创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表