当我们要观察系统的生命徵象时,Elastic Stack 的解决方案中,可以使用 Heartbeat 周期性的检查系统的可用性 (availability),不过在这边我们要先想一下,什麽是系统的生命徵象?代表的意义是什麽?以下一边透过以"人的生命徵象"来想像,另一边对应到"系统的生命徵象"来思考:
首先部署 Heartbeat 的最主要原则:当系统挂掉的时候,负责监测的 Heartbeat 不应该跟着挂掉。
因此官方文件就有直接提出,不建议使用 sidecar 的这种方式来部署 heartbeat,建议要部署成为独立的服务,以降低主要的系统发生问题时,Heartbeat 也同时出问题的可能性。[1]
什麽是 sidecar?
sidecar 的中文是『边车』,也就是把程序以另外的 process 挂载在主要的 process 或是 container 旁边,避免直接运作在主 process 之中,一方面是可以更好的模组化、布署的方式也能更容易标准化并重覆利用,另一方面是减少与主程序的相依性,不过实际运作上还是会有一些资源是共用的,例如安装在同一台主机上、使用同样的 disk,使用同样的 network 环境…等。
一般我们要监控服务时,最直接会想到从外层,也就是 Internet 去监控,但试想,如果今天外层发现服务不通的时候,但你从服务的 local 端发现是好的时候,中间的这些网路问题,要如何能更有效的盘查与找出问题呢?
我们重新检视从 Client 端,一路到服务运作的 Server 主机中,网路会经过哪些路径,对外的服务一般来说会经过 CDN,若是内部的服务也可能跨过多个 VPN,因此在这样有多段网路环境的路线当中,建议的做法是:CDN 内、外都要架设 heartbeat,不同 VPN 的网段内也要有各自的 heartbeat,透过一层一层的记录,能够最快速的帮我们在发生问题的当下,判断是在网路的哪一层发生问题。
当我们的服务对外有经过 CDN 时,CDN 的架构上会透过许多的 POPs (points of presence) 也就是散落在世界各地的节点,来处理快取,并且让 client 能最近、也就会最快速的取得需要的内容,所以如果有使用 CDN 时,一般也就会建议要在多个不同的地区布建 Heartbeat,收集各个不同地点是否能正常的存取服务的数据。
如果有不同的 Data Center时,除了建议一定要在各个 Data Center 内部布署自己的 Heartbeat,另外在设定监控时,除了监控自己 Data Center 的服务之外,也应该顺便监控另个 Data Center 的服务,这样跨 Data Center 时的网路环境会多透过 Internet,也会是出问题时能作为交互比对的参考资讯。
以上是建立监控之前,需要先思考及评估的部份,在经过这些评估及规划之後,下一篇我们将透过 Elastic heartbeat 的设定,来收集这些我们需要取得的资料。
查看最新 Elasticsearch 或是 Elastic Stack 教育训练资讯: https://training.onedoggo.com
欢迎追踪我的 FB 粉丝页: 乔叔 - Elastic Stack 技术交流
不论是技术分享的文章、公开线上分享、或是实体课程资讯,都会在粉丝页通知大家哦!
【前言】 本系列为个人前端学习之路的学习笔记,在过往的学习过程中累积了很多笔记,如今想藉着IT邦帮忙...
本系列文之後也会置於个人网站 这系列文章将带大家探讨软件开发上,那些身份验证与授权的相关议题。此外...
前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...
实作 import React, { useState } from 'react'; import...
LIFF太重要了,不得不提一下, LIFF是LINE Front-end Framework的简称,...