05 - Uptime - 掌握系统的生命徵象 (3/4) - 透过 Kibana 观看心电图及设定警报

Uptime - 掌握系统的生命徵象 系列文章


本篇学习重点

  • 如何使用 Kibana 的 Uptime 功能来观察 Heartbeat 记录的资料。
  • 当发生问题时,如何透过 Alert 设定主动通知。

Kibana 的 Uptime 功能介面

当我们透过前一篇所介绍的 Heartbeat 收集资料後,接下来我们要将介绍如何透过 Kibana 的 Uptime 功能,来检视这些资料。

进入 Kibana 的主画面後,点选主选单,并从 Observability 的区块,可以找到 Uptime 的进入点。

05-kibana-uptime-ui

Monitors 主画面

点选进入後,我们可以看到 Uptime 的主要 Dashboard,画面蛮单纯,直接列出监控的汇总结果,包含多少个 Monitors 其中有哪些目前是 Down 以及过去指定的时间区间中,UpDown 的 Histogram 图表。

05-kibana-uptime-overview

在底下的监控总览的区块,会条列出每一项我们所设定的 Monitor,并且包含这些 Monitor 的主要状态资讯。

指定 Monitor 的内容画面

点选其中一个 Monitor 之後,可以进入 ES Cluster Monitor 的页面,如下图。

05-kibana-uptime-monitor-detail

这个 Monitor 的画面会包含几个重点,以上图我的情境为例进行说明:

  • 这一组 Monitor 项目的主要资讯,包含这组监控在指定时间之内的可用性 (availability) 比例 100.00%、监控这组服务的 URL http://training.onedoggo.com,监控的类型 HTTP 、有哪些 Tags onedoggo training web、以及 TLS Certificate 多久之後会到期 Expires in 9 monthes
  • 这一组 Monitor 项目,包含哪些从哪些地区的监控: taipeitokyo,以及这些地区各自在这段时间的可性用 (availability) 比例及最後检查的时间。
  • Monitor duration: 这里会列出每个地区在监控时,Heartbeat 所收到回应的时间,可以看出有没有在那个时段或是哪个地区的延迟时间 (latency) 特别久。
  • Pings over time: 在每个时段之中,总共 Pings 多少次,也就是代表发送了多少次 monitor check 的请求,以及异常与正常的比例 (图中都是正常,所以都是灰色,有异常会是红色)。
  • History: 这部份会详细的列出每次执行检查请求的执行结果,包含结果是否正常 UpDown、检查的时间、从哪个 Geo Location 执行、HTTP status,花了多少时间 (Duration)、如果有错误的话,错误的内容是什麽 (如下图),另外如果有开启记录 HTTP response 的话,包含 HTTP Response Headers 与 Body 都会被详细的记录下来,在追查问题时很方便。

image-20210920134237187

TLS Certificates 监控总览

Kibana Uptime 会协助我们将所有 Monitors 之中有包含 SSL/TLS 的 Certificate 汇总起来,在 TLS Certificates 这里可以看到所有的凭证列表及状态,这个功能很方便,可以直接一览所有凭证的状态。

05-kibana-uptime-tls-certificates

另外也能透过 Settings 的画面,指定 Certificate 的过期通知的期限设定。

05-kibana-uptime-setting-tls

除了 Kibana Uptime 的功能之外,可以汇入 Elastic 替 Heartbeat 建好的 Dashboard

若要使用 Elastic 替 Uptime 建立的 Dashboard,要另外到 Github (https://github.com/elastic/uptime-contrib) 下载,并且使用 Kibana > Stack Management > Saved Objects 的功能,使用 Import 将对应 Github 里的 http_dashboard.ndjson 档案汇入,汇入完成後,就可以到 Dashboard 选择开启 Heartbeat HTTP monitoring 的 Dashboard。

image-20210920224716126

设定 Alert 让我们能主动接受到异常的通知

当有异常发生时,我们想要主动收到通知,这时就要使用到 Elastic Alert 的功能,我们首先要建立 Connector 来设定通知发送到哪边,再透过 Uptime 进行 Alert 的设定。

这边要注意 Alert 的功能有蛮多会是需要使用到进阶的授权,不是免费的。

初始化 Kibana 的 Alert 设定

如果是第一次使用 Alerting 的功能,在进入 Stack ManagementConnectors 设定中要建立 Connectors 时,会看到以下的画面,提示我们会需要先设定好 xpack.encryptedSavedObjects.encryptionKey

05-alert-warning

要产生这个 EncryptionKey 可以透过 kibana-encryption-keys 的指令来协助产生,这个指令就放在 kibana 的 bin资料夹里面。[1]

./bin/kibana-encryption-keys generate

执行指令後,就会产生 encryption keys。

05-kibana-generate-encryption-key

这个指令只会协助我们产生 key,我们需要将产生出来的设定,添加到 config/kibana.yml 里面。

一但设定完成、重新启动 kibana 之後,我们回到 Connectors 的设定页面,就可以建立新的 Connector 了。

05-kibana-create-connector

建立 Connectors

这边使用 Slack Connector 为例。

请注意:要使用 Slack Connector 会需要拥有 Gold License 以上的授权。

image-20210920125136535

选择 Slack 之後,在建立 Connector 的画面,会出现 Create a Slack Webhook URL 的连结,点选下去之後,会导到 Elastic 的官方文件,里面有完整的设定教学,当中有提到要进入 Slack WebHook 的设定页面 https://my.slack.com/services/new/incoming-webhook 去建立 WebHook。

image-20210920125453553

指定 Alert 要通知的 Channel 之後,建立 WebHook integration,就可以拿到 WebHook URL

image-20210920125647084

接着在 Add Connector 的地方,把这些资讯填写完成,并且建立 Connector。

image-20210920130533941

Uptime 设定 Default Connectors

接下来,我们可以在 Uptime 设定 Default Connectors,让之後 Uptime 有异常发生时,透过这些 Connectors 发送通知。

05-kibana-uptime-setup-default-connector

在 Monitors 中启用 Alert 的通知

一但我们设定好 Alert 的 Connectors 之後,我们就可以到 Monitors 的页面,启动 Status alert,接下来有异常发生时,就会通知到我们指定的 Connecters 了。

image-20210920135724633

设定 TLS Certifcate 快过期时的通知报警

如果我们想在 TLS Certificate 快要过期时收到通知,我们要在 Uptime 设定 Alert。

  1. 建立 Alerts and rules
  2. 选择 Create rules
  3. 选择 TLS rule
  4. 填写基本资料後,选择要使用的 Actions。
  5. 按下 Save

05-kibana-create-tls-expire-alert

从 Slack 接收 Alert 的通知

接着从 Slack 的画面可以看到有发生问题、或是状态恢复时通知的内容。

05-slack-alert


以上的介绍,是透过 Kibana 针对 Uptime 所提供的功能,让我们能迅速的掌握系统的可用性状态,以及能在异常时发送通知提醒,除了 Kibana Uptime 所提供的画面之外,我们也能自己透过 Virtualize 等工具,从 Heartbeat 所记录并存放在 Elasticsearch 里的资料,建立我们自己想要检视的图表与仪表版 (Dashboard),这部份就不在这里介绍,有兴趣的可以从官方 Kibana 的说明文件参考做法。

参考资料

  1. 官方文件 - Alerting and action settings in Kibana

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


<<:  [Day_6]资料型别、变数与运算子 - 练习题

>>:  Day 20 实作表单 (3)

DAY 14:Simple Factory Pattern,把复杂细节隐藏的小工厂

工厂模式主要有三种不同的实作: Simple Factory Pattern Factory Met...

Day03 建立一个 React 专案

1.建立一个新的React 专案 npx create-react-app first-app cd...

冒险村27 - Concern

27 - Concern 最後整理的方式再来讲到 Rails 提供功能,主要目的在把相同逻辑 cod...

DAY16-前後端合体 建立打卡页面-前端元件篇

在前几天接触新的工具、新的方法,使用不同的套件,现在终於要回到side project 最初的目标-...