本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
连接 Grafana
Grafana 集成使 AWS DevOps 代理能够在事件调查期间查询来自 Grafana 实例的指标、仪表板和警报数据。这种集成遵循两个步骤:在账户级别注册 Grafana,然后将其连接到各个代理空间。
为了提高安全性,Grafana 集成仅启用只读工具。写入工具已禁用且无法启用。这意味着代理可以查询和读取您的 Grafana 实例中的数据,但不能创建、修改或删除任何 Grafana 资源,例如仪表板、警报或注释。有关更多信息,请参阅 AWS DevOps 客户端中的安全。
Grafana 要求
在连接 Grafana 之前,请确保你有:
Grafana 版本 9.0 或更高版本。由于缺少 API 端点,某些功能,尤其是与数据源相关的操作,可能无法在早期版本中正常运行。
可通过 HTTPS 访问的 Grafana 实例。支持公有和私有网络终端节点。通过私有网络连接,您的 Grafana 实例可以托管在没有公共互联网访问权限的 VPC 内。有关更多信息,请参阅 连接到私人托管的工具。
具有相应读取权限的访问令牌的 Grafana 服务账户
注册 Grafana(账户级)
Grafana 在 AWS 账户级别注册,并在该账户中的所有代理空间之间共享。每个注册对应一个 Grafana 实例。要注册其他 Grafana 实例,请对每个实例重复此过程,并为每个注册指定自己的服务名称。
第 1 步:配置 Grafana
登录到 AWS 管理控制台
导航到 AWS DevOps 代理控制台
转到能力提供者页面(可从侧面导航中访问)
在 “遥测” 下的 “可用提供商” 部分中找到 Grafana,然后选择注册
在配置 Grafana 页面上,输入以下信息:
服务名称(必填)-仅使用字母数字字符、连字符和下划线输入 Grafana 服务器的描述性名称。例如
my-grafana-server。Grafana URL(必填)— 输入 Grafana 实例的完整 HTTPS 网址。例如
https://myinstance.grafana.net。服务账户访问令牌(必填)— 输入 Grafana 服务账户访问令牌。代币通常以开头
glsa_。要创建服务帐号令牌,请导航到您的 Grafana 实例,转到管理 > 服务账户,创建具有查看者角色的服务帐号,然后生成令牌。描述(可选)-添加描述以帮助确定服务器的用途。例如
Production Grafana server for monitoring。
(可选)为注册添加 AWS 标签以用于组织目的。
选择下一步。
第 2 步:查看并提交 Grafana 注册
查看 Grafana 的所有配置细节
选择 “提交” 完成注册
成功注册后,Grafana 将显示在 “能力提供者” 页面的 “当前已注册” 部分
将 Grafana 添加到代理空间
在账户级别注册 Grafana 后,您可以将其连接到各个代理空间:
在 AWS DevOps 代理控制台中,选择您的代理空间
转到 “能力” 选项卡
在遥测部分中,选择添加
选择要连接到此代理空间的 Grafana 注册表。
选择保存
一个代理空间可以使用多个 Grafana 注册。要连接其他注册,请重复这些步骤。
配置 Grafana 警报网络挂钩
您可以将 Grafana 配置为通过 Grafana 联系点发送网络挂钩来在警报触发时自动触发 AWS DevOps 代理调查。有关 webhook 身份验证方法和凭据管理的详细信息,请参阅。通过 Webhook 调用 DevOps 代理
如果您丢失了 webhook 密钥,请轮换 webhook 以生成新的密钥。webhook 网址不变。有关管理 webhook 凭据的说明,请参阅管理 webhook 凭据。
第 1 步:创建自定义通知模板
在您的 Grafana 实例中,导航到警报 > 联系点 > 通知模板,然后创建一个包含以下内容的新模板:
{{ define "devops-agent-payload" }} { "eventType": "incident", "incidentId": "{{ (index .Alerts 0).Labels.alertname }}-{{ (index .Alerts 0).Fingerprint }}", "action": "{{ if eq .Status "resolved" }}resolved{{ else }}created{{ end }}", "priority": "{{ if eq .Status "resolved" }}MEDIUM{{ else }}HIGH{{ end }}", "title": "{{ (index .Alerts 0).Labels.alertname }}", "description": "{{ (index .Alerts 0).Annotations.summary }}", "service": "{{ if (index .Alerts 0).Labels.job }}{{ (index .Alerts 0).Labels.job }}{{ else }}grafana{{ end }}", "timestamp": "{{ (index .Alerts 0).StartsAt }}", "data": { "metadata": { {{ range $k, $v := (index .Alerts 0).Labels }} "{{ $k }}": "{{ $v }}", {{ end }} "_source": "grafana" } } } {{ end }}
此模板将 Grafana 警报格式化为代理所 AWS DevOps 期望的 webhook 负载结构。它将警报标签、注释和状态映射到相应的字段中,并将所有警报标签作为元数据包括在内。
第 2 步:创建 webhook 联系点
在 Grafana 中,导航到警报 > 联系点,然后选择添加联系点
选择 Webhook 作为集成类型
将 URL 设置为您的 AWS DevOps 代理 webhook 端点
在 “可选 Webhook 设置” 下,根据您的 webhook 类型配置身份验证标头。有关详细信息,请参阅 Webhook 身份验证方法。
将 “自定义负载” 字段设置为使用您的自定义模板:
{{ template "devops-agent-payload" . }}选择 “保存联系点”
第 3 步:为通知策略分配联系点
导航到警报 > 通知策略
编辑现有策略或创建新策略
将联系点设置为您创建的 webhook 联系点
选择 “保存政策”
当匹配的警报触发时,Grafana 会将格式化的有效载荷发送给 AWS DevOps Agent,后者将自动开始调查。
限制
ClickHouse 数据源工具 -目前不支持 ClickHouse 数据源工具。
主动预防事件 — 目前主动预防事故不使用 Grafana 工具。计划在未来的版本中提供支持。
亚马逊托管 Grafana 注意事项
如果您使用的是亚马逊托管 Grafana
不支持 Webhook 联系点 — AMG 目前在其警报配置中不支持 Webhook 联系点。您不能使用 AMG 将警报网络挂钩直接发送到代理。 AWS DevOps 有关详细信息,请参阅亚马逊托管 Graf ana 中的提醒联系人。
服务账户令牌到期 — AMG 服务账户令牌的最大有效期为 30 天。在代币到期之前,你需要轮换代币并在 AWS DevOps 代理中更新你的 Grafana 注册信息。有关如何更新凭证的信息,请参阅管理 Grafana 连接。有关 AMG 代币限制的详细信息,请参阅亚马逊托管 Grafan a 中的服务账户。
管理 Grafana 连接
更新凭证 — 如果您的服务帐号令牌过期或需要更新,则可以在不取消注册的情况下对其进行轮换。在能力提供者页面上,选择您的 Grafana 注册,从 “操作” 菜单中选择 “更新”,然后输入新令牌。您的代理空间关联会被保留。
查看连接的实例 -在 AWS DevOps 代理控制台中,选择您的代理空间并转到功能选项卡以查看连接的遥测源。
移除 Grafana — 要断开 Grafana 与代理空间的连接,请在遥测部分将其选中,然后选择移除。 要完全删除注册,请先将其从所有代理空间中删除,然后从 “能力提供者” 页面取消注册。