博客/工程

Grafana警报代码:开始起程拓殖和Grafana报警

2022年9月20日 7分钟

提醒基础设施往往是复杂的,有许多部分的管道,通常生活在不同的地方。扩展这个在许多团队和组织是一个特别具有挑战性的任务。

随着组织的发展规模,可观测性组件会随之增长。例如,您可能有许多组件,每一个都需要一组不同的警报。你可能有几个团队,每一个都有不同的频道,通知应交付。你可能有几个部署管道,都需要保持你的提醒与代码保持同步。更不用说如何手动跟踪所有这些耗时且容易出错。

如代码工作流帮助你驯服大规模复杂的可观测性。与基础设施代码(IaC),您可以定义您的可观测性工具的一部分需要的组件。你可以将你的整个配置存储在版本控制。你甚至可以将它部署正确的与你其他的基础设施,不需要手动任务!

这就是为什么我们很高兴宣布起程拓殖提供者支持的一般可用性Grafana报警。这个提供程序很容易创建、管理和维护整个堆栈Grafana报警代码。

加入我们参观了新功能和开始管理你Grafana提醒今天基础设施代码。

连接起程拓殖Grafana

为了提供警报Grafana,你需要Grafana版本9.1或更高版本,起程拓殖提供者1.27.0或更高版本。

创建一个API提供的关键

你可以创建一个正常Grafana API键验证与Grafana起程拓殖。大多数现有的工具使用的API密钥应该自动使用新的Grafana报警的支持。

我们还提供专门的RBAC角色提醒配置。这让你很容易验证服务帐户与你所需要的最小权限规定Grafana报警设施。或者,如果你喜欢基本认证,工作!

起程拓殖提供者配置

Grafana提醒支持包含的一部分Grafana起程拓殖提供者。你可以看到下面的一个例子如何配置它。

起程拓殖{required_providers {grafana ={源= " grafana / grafana " version = " > = 1.28.2}}}提供者“grafana”{url = < YOUR_GRAFANA_URL > auth = < YOUR_GRAFANA_API_KEY >}

提供你Grafana提醒堆栈

现在让我们开始构建Grafana提醒堆栈使用起程拓殖!

接触点和模板

接触点是一个提醒堆栈连接到外面的世界。他们告诉Grafana如何连接外部系统,提供通知。我们在15个不同的集成提供可供选择。

让我们看一个例子,如何创建一个接触点,发送提醒通知松弛。

”资源”grafana_contact_point“my_slack_contact_point“{name = "发送到我松弛频道”松弛{url = = < < < YOUR_SLACK_WEBHOOK_URL >文本传输结束{{len .Alerts。发射}}警告射击!警报摘要:{{.Alerts范围。发射}}{{模板“警报实例模板”。}}{{结束}}传输结束}}

在运行起程拓殖应用,你可以去Grafana UI和检查我们的接触点的细节。由于资源配置通过起程拓殖,它将出现在UI。这个可以帮助你确保你的提醒堆栈总是与代码保持同步。

截图起程拓殖供应资源Grafana报警界面接触点。

我们还可以使用测试按钮来验证该接触点是否正常工作。

文本场,代表发送的消息的内容,支持Go-style模板。这允许您管理您的模板直接在起程拓殖Grafana提醒消息。

你也可以重用相同的模板在许多接触点。在上面的示例中,我们嵌入一个共同的模板使用的语句{{模板“警报实例模板”。}}这在起程拓殖片段可以分别管理:

”资源”grafana_message_template“my_alert_template“{name = "警惕实例模板”模板= < <测试结束{{定义“警报实例模板”}}射击:{{.Labels。沉默alertname}}: {{.SilenceURL}}{{结束}}传输结束}

通知政策和路由

通知的政策告诉Grafana如何路线提醒实例我们的接触点。

让我们来看看一个通知的政策路线都提醒我们刚刚创建的接触点。我们还将组织警报alertname,这意味着任何来自警报通知共享相同的名称将被分成相同的消息。

资源”grafana_notification_policy”“my_policy”{group_by = [“alertname”] contact_point = grafana_contact_point.my_slack_contact_point.name}

沉默的时间

沉默的时间提供的能力静音警戒时期定义的通知。

让我们来看一个例子,在周末关闭警报通知。

资源“grafana_mute_timing my_mute_timing“{name =“我的沉默时间”间隔{工作日=[“星期六”、“星期天”]}}

您可以应用沉默的时间到特定的通知在通知中通过引用它们的政策。让我们来看一个例子如何沉默的所有通知和标签a = b在周末。

资源”grafana_notification_policy”“my_policy”{group_by = [“alertname”] contact_point = grafana_contact_point.my_slack_contact_point.name政策{匹配器{标签=“a”=“=”价值=“b”匹配}group_by = [“alertname”] contact_point = grafana_contact_point.my_slack_contact_point.name mute_timings = [grafana_mute_timing.my_mute_timing.name]}}

预警规则

最后,预警规则使您能够警告反对任何Grafana数据源。这是一个你已经配置数据源,或者你甚至可以在起程拓殖定义数据源你旁边预警规则。

首先,让我们创建一个数据源来查询和一个文件夹来存储我们的规则。我们就使用内置的TestData数据源。

资源“grafana_data_source testdata_datasource“{name = " TestData " type = " TestData}资源“grafana_folder”“rule_folder”{title =“我的文件夹”}

然后我们定义警报的规则。更多地了解你能做什么与预警规则,看看我们的导游如何创建Grafana-managed警报

规则总是分成组,让我们包装规则使用grafana_rule_group资源。

”资源”grafana_rule_group“my_rule_group“{name = "我警告规则”folder_uid = grafana_folder.rule_folder.uid interval_seconds = 60 org_id = 1规则{name = "我随机漫步警戒”条件=“C”=“0”/ /查询数据源。数据{ref_id = "一个" relative_time_range从= 600 = {0}datasource_uid = grafana_data_source.testdata_datasource。uid / /“模型”是一个JSON blob datasource-specific发送数据。/ /这是不同的对于每一个数据源。这里的警报定义的查询。模型= jsonencode ({intervalMs = 1000 maxDataPoints = 43200 refId = " A "})} / /查询获取配置数据从过去60秒。让我们警觉的平均值系列使用减少的阶段。数据{datasource_uid = " -100 " / /在UI中您还可以创建一个规则,然后得到规则获取JSON。/ /使用更复杂的减少时这是很有用的表达式。模型= < <测试结束{“条件”:[{“评估者”:{“参数”:(0,0),“类型”:“gt”},“操作符”:{“类型”:“和“},“查询”:{“参数”:[A]},“减速器”:{“参数”:[],“类型”:“去年”},“类型”:“avg”}],“数据源”:{“名称”:“表达”,“类型”:“__expr__”、“uid”:“__expr__”},“表达”:“一”,“隐藏”:假的,“intervalMs”: 1000年,“maxDataPoints”: 43200年,“减速器”:“去年”、“refId”:“B”,“类型”:“减少”}传输结束ref_id =“B”relative_time_range从= 0 ={0}}/ /现在,让我们使用一个数学表达式作为阈值。/ /我们想提醒当舞台上面的“B”的价值超过70。 data { datasource_uid = "-100" ref_id = "C" relative_time_range { from = 0 to = 0 } model = jsonencode({ expression = "$B > 70" type = "math" refId = "C" }) } } }

警报会出现警报规则下面板。在这里,你可以看到规则是否解雇。你也可以看到每个规则的可视化查询阶段。

Grafana报警界面截图显示一个警告。

当我们的警戒火灾、Grafana将路线通知通过我们前面定义的政策。

因为我们配置这一政策发送提醒通知我们松弛接触点,Grafana嵌入Alertmanager为我们的松弛通道会自动留言!

截图Grafana提醒消息。

了解更多关于Grafana警报

自从推出新Grafana提醒经验在Grafana 9.0中,我们增加了很多新特性和改进。要了解更多,你可以看我们的深潜水Grafana报警,或阅读我们Grafana提醒文档

如果你正在寻找更多的方法来提供你的提醒堆栈,看看我们的博客文件配置

最后,如果您没有看到一个你想要的特性,或如果您有任何反馈关于新的起程拓殖支持或Grafana报警,请让我们知道!你可以通过打开的一个问题提供者GitHub库,Grafana GitHub库或问的#报警通道bob电竞频道Grafana实验室社区松弛

Grafana云是最简单的方法开始使用指标,日志、痕迹和仪表板。我们有一个慷慨的自由永远层和每个用例的bob体育手机二维码计划。现在免费注册!