alerts.discovery.read,建规则需要 alerts.rules.manage。
找什么
日志:每个组织看 20 个带级别字段(
level、severity、severity_text、severity_number 之类)的日志流,最近改过结构的在前。error、fatal、critical 一类的级别算错误,severity_number 为 17 及以上也算。指标:只看 OpenTelemetry 的主机和 Kubernetes 接收器、Prometheus 的 node_exporter 和 kube-state-metrics 里一组常见的资源指标,指标目录里有才查,不扫别的指标。
性能建议(慢依赖、N+1、慢语句、热点接口)不算问题,不进自动发现。忽略和已解决的 issue 也不算。
同一个问题(种类、服务或应用、环境和指标相同)只有一条进行中的发现:再看到就更新现值和最近一次看到的时间;连续三轮没再看到就算结束,结束的发现保留 30 天。一边读不出来(例如 APM 或 RUM 暂时查不了,或某个日志流查失败)时,这一轮不动那一边进行中的发现。有多个 alert 节点时,组织按 id 分给各节点。
发现列表
在 进行中 和 已结束 之间切换,可以按种类筛选。每一行用一句话说明发现了什么,例如「checkout 的错误率变为 12.0%(之前 0.40%)」,下面是严重度、种类和环境,后面是开始和最近一次看到(已结束的是结束)的时间。 点击一行打开详情:种类、现在的值、前一段和上周同段的值、版本、错误位置,以及开始和最近一次看到的时间;APM 的发现还列出开始前后的部署和版本变更。在 APM 里打开、在 RUM 里打开、看这些日志、在指标里打开 分别打开对应的服务、应用、日志流或查询。 让 Mole Agent 调查 关掉详情,就这条发现开一个 Mole Agent 对话:Mole Agent 用get_discovery_finding 读这条发现,看它开始前后的日志、指标、链路和变更,再说下一步该做什么。
用规则通知
发现只进列表,不会叫醒任何人:它们是推算出来的,直接通知容易误报。要通知,建一条自动发现规则:- 点击 建自动发现规则,或在一条发现的详情里点击 为这类发现建规则(种类、服务和环境按这条发现填好)。
- 在 哪些发现 中填写 名称,选 种类(都不勾是全部),填 服务或应用(APM 服务名或 RUM 应用 id,逗号分开,空着是全部)、环境 和 最低严重度。
- 在 通知谁 中选 升级策略 和 紧急度:默认 低(默认),只通知第一级,免打扰时段不打扰。
- 点击 创建规则。
discovery.finding、discovery.kind 和 discovery.subject,路由规则和静默可以按它们匹配。发现结束,事件就恢复。规则出现在规则列表里,来源是 自动发现。