28 - 有效的使用 Observability 的资料 (2) - 使用 Kibana Alerts 主动通知异常状况

有效的使用 Observability 的资料 系列文章


本篇学习重点

  • 使用 Kibana Alerts 之前的准备工作。
  • 了解 Elastic Observability 针对 Kibana Alerts 的整合上有提供哪些 Alert 的设置。

使用 Kibana Alerts

在使用 Kibana Alerts 之前,有以下几点需要注意及准备的项目:

准备及设定好加密的密钥

由於 Kibana 中的敏感资料和 Alerting Rules (警报规则),储存时都会进行加密,所以要先准备好加密的密钥。

密钥需设定在 kibana.yml 中的 xpack.encryptedSavedObjects.encryptionKey 设定之中,以下是协助产生密钥的工具及指令:

bin/kibana-encryption-keys generate

设定好对外开放存取的 Base URL

要让 Alert 发送通知到外部之後,可以透过连结导回 Kibana,所以会需要设定好外部存取 Kibana 时有效的 Base URL,设定在 kibana.yml 中的 server.publicBaseUrl

使用 TLS 安全的连线

如果有启用 Elastic 的 Security 功能时,必须要设定并启用 TLS 连线。(可参考 官方文件 - Setup basic security for the Elastic Stack plus secured HTTPS traffic )

为了在背景执行的处理程序能安全的存取 Elasticsearch,Kibana alerting 会使用 API key 的安全认证机制,而要使用 API key 的话,就一定要启用 TLS。

要让 Elasticsearch 与 Kibana 之间使用 TLS 连线,会有以下几个设置步骤:

  1. 使用 elasticsearch-certutil 配合 http 参数,来建立 TLS 相关的 certificate。

如果你的环境之中没有 CA (Certificate Authorities),又或是先前没有建立过 CA 的话,会要先透过 bin/elasticsearch-certutil 配合 ca 参数来建立 CA。

建立完成 http 使用的 certificate 之後,压缩档里面会有以下的内容:

image-20211013021828881

  1. kibana/elasticsearch-ca.pem 档案,复制到 Kibana 的 config 目录中,并修改 kibana.yml 中 的 elasticsearch.ssl.certificateAuthorities 设定,以及将 Elasticsearch 的 protocol 改成 HTTPS:
elasticsearch.ssl.certificateAuthorities: $KBN_PATH_CONF/elasticsearch-ca.pem
elasticsearch.hosts: ["https://localhost:9200"]
  1. 同时也要确保 Elasticsearch 也启用 TLS 连线有正确设定,并且将先前产生的 http.p12 复制到 config 目录底下。
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: http.p12
  1. 重新启动 Elasticsearch 与 Kibana 。

建立好 Connector

Kibana Alerts 有支援多种的 Connectors 如下:

  • 寄 Email
  • 写入 Elasticsearch Index
  • 建立 Jira incident
  • PageDuty
  • Slack
  • Webhook
  • IBM Resilient
  • Microsoft Teams
  • 写到 Kibana 的 ServerLog
  • 建立 ServiceNow incident
  • 建立 Swimlane incident

在 Kibana > Stack Management > Rules and Connectors > Connector 里可以进行设定,有些与 Security 相关的,可能会要使用到 keystore 来保存密钥,细节相关的设定,可以参考 官方文件 - Kibana Action Types 的说明。

这些 Connector 建立好之後,就会是 Alert 最後要发送通知时的接口。

Elastic Observability 对於 Alerts 的整合与支援

Elastic Observability 的功能之中,有针对 Alerts 进行整合,也就是在 Observability 的 UI 当中,针对该服务的特性,有建立能较快速建立 Alerts Rules (规则) 的功能,以下针对 Alerts 设置的部份进行说明。

Logs

Log 的部份,能快速针对 Log threshold (门槛) 进行 Alerts 的设置,设置重点如下:

  • 在一段时间区间之中,针对一个特定条件下的 logs 数量,或某两种条件之间的 logs 数量的比例,达到一个门槛时,发出 alert。
  • 同时这个计算时,能依照特定栏位的值来进行分群 (group by),也就是上述的规则可以限定在某些条件的分类上执行,例如每台机器分开计算、或是每种服务分开计算。

28-logs

设定细节可以参考 官方文件 - Observability - Create a logs threshold rule

Metrics

Metrics 在 Inventory 与 Metric Explorer 的页面当中,分类提供不同的 Alerts 设置。

Inventory - Infrastructure Alerts

在 Inventory 当中,关注的重点就是 Infrastructure,不论是 Host、Docker、Kubernetes 或是 AWS 云端主机或服务。

所以针对 Inventory 的部份,Alerts 的主要设置重点如下:

  • 当指定的主机或服务,在最近一段时间内,在任何 metrics 的条件下 (例如:CPU 或 Memory 使用率、网路流量、Log rate、甚至是任何一个栏位的平均数…等) 达到指定的门槛时,就发出 Alert。
  • 除了以上的 metrics 条件外,若是在最近一段时间内,没有任何的 logs 产生,也可以发出 Alert。
  • 另外除了 Alert 的报警之外,也可以定义 Warning 层级的条件。
  • 与 Metrics 中 Alert 设定的差别,主要在於 Inventory 会指定主机或服务相关的范围。

28-metrics-inventory

设定细节可以参考 官方文件 - Observability - Infrastructure threshold rule

Metric Explorer

在 Metric 的部份,主要的设定如下:

  • 支援任何所收集到的 Metrics,在最近的一段时间内,若达到一定的门槛,就发送 Alert。
  • 若是在最近一段时间内,没有任何的 logs 产生,也可以发出 Alert。
  • 也能支援设定 Warning 的门槛。

28-metrics-metrics

设定细节可以参考 官方文件 - Observability - Metrics threshold rule

Uptime

在 Uptime 的部份,主要的 Alert 设定有以下三种:

  • Monitor status: 服务的可用性是否正常。
  • TLS certificate: 凭证是否快过期。
  • Uptime duration anomaly: 服务的回应时间是否异常。

Monitor Status

在 Monitor 的页面之中,Uptime 最主要的任务就是确认服务是否还活着,因此 Alert 的设定重点为:

  • Status Check,在一小段时间区间,如果服务没有依照预期的结果回应并且超过一定的数量,就发出 Alert。
  • Availability,在较长的一段时间区间 (例如一个月),如果服务总共异常超过某个比例 (例如 99.9%),就发出 Alert,可用作 SLA 的警示。

28-uptime-monitor

设定细节可以参考 官方文件 - Observability - Monitor status rule

TLS Certificate

TLS Certificate 的 Alert 很单纯,就只有一个重点:

  • 在 Certificate 剩一段时间就要过期时,发出 Alert。

28-uptime-tls

设定细节可以参考 官方文件 - Observability - TLS certificate rule

Uptime Duration 异常

在 Uptime Monitor 的页面中,如我们前一篇文章的介绍,可以开启 Machine Learning 的 Anomaly detecion 的功能。

一但开始这个功能之後,就可以在 Monitor 的回应时间被判定成异常时,主动发送 Alert。

28-uptime-abnormal

点选 Enable anomaly alert 後的设定画面如下:

28-uptime-abnormal-alert

设定细节可以参考 官方文件 - Observability - Uptime duration anomaly rule

参考资料

  1. 官方文件 - Kibana Alerting Setup
  2. 官方文件 - Setup basic security for the Elastic Stack plus secured HTTPS traffic
  3. 官方文件 - Kibana Action Types

查看最新 Elasticsearch 或是 Elastic Stack 教育训练资讯: https://training.onedoggo.com
欢迎追踪我的 FB 粉丝页: 乔叔 - Elastic Stack 技术交流
不论是技术分享的文章、公开线上分享、或是实体课程资讯,都会在粉丝页通知大家哦!


<<:  Day28 - DFS、Backtracking

>>:  [火锅吃到饱-16] 斗牛士二锅 - 台中文心店

完赛!YA!关於 Vue.js 进阶心法系列

其实原本不是要叫这个名字的。原本要叫《官网没教你的「如何把 Vue 写好」》但是太狂了,竟然敢代替官...

D13: 工程师太师了: 第7话

工程师太师了: 第7话 杂记: 这次的COVID-19 疫情, 究竟对我们产生了什麽影响? 很多人会...

Day 8. 我在解VR Simulator的Bug的途中,常看到叫人改Active Input Handling的设定

昨天很开心的给大家看我可以用键盘和滑鼠移动视角跟位置就结束了呢,今天来稍微讲讲我的心得吧(?。   ...

Day2-他看我是个练武奇才-规格书(递)

成为武林高手的第一步-轻小说阅读模式启动【ON】 ------------------------ ...

19 APCS 观念题考试技巧

前几天在和有考过 APCS 的朋友聊天,才发现有一部分实作很强的同学事实上没办法看懂观念题的题目,观...