ElasticSearch 如何配置Uptime 监控组件可用性

服务器
现在互联网架构随着用户的增加,而越来越复杂,可能要有成千上万个不同的组件和不同的实例,对这些组件可用性的监控是提供高可用服务的关键之一,Elastic 为此推出了 Uptime App。

[[403143]]

本文转载自微信公众号「程序员历小冰」,作者历小冰。转载本文请联系程序员历小冰公众号。

现在互联网架构随着用户的增加,而越来越复杂,可能要有成千上万个不同的组件和不同的实例,对这些组件可用性的监控是提供高可用服务的关键之一,Elastic 为此推出了 Uptime App。

Elasticsearch 使用 Heartbeat 进行组件的监控。

Heartbeat 也就是我们通常所说的心跳,通过 Hearteat 我们可以判断一个网络组件,当前是否存活,是否可以对外正常提供服务。

Heartbeat 是一个轻量级的数据收集器。它用来帮我们进行 Uptime 的健康监控。它可以定期通过 HTTP、TCP 或 ICMP 等方式验证组件是否处于运行状态,然后将收集到的状态和信息上报给 Elasticsearch。

而 Kibana 中的 Uptime app 则为我们提供了查看可用性数据的仪表板,以监控服务器或服务的正常运行,并提供了报警功能支持。

Elasticsearch 使用 Heartbeat 来进行 Uptime 的监控的架构可以表述如下:

下面,我们将依次讲解 Uptime App 的安装,Heartbeat 的配置和各类监控组件的配置。

安装 Uptime App

如果我们打开我们的 Kibana 并点击 Uptime 应用,那么第一次打开的时候,我们可以看到,如下的界面。

点击 Install Heartbeat,就会跳转到配置 Uptime Monitors 的文档界面,你可以按照这个界面上的步骤进行 Heartbeat 的安装,配置,启动和测试 Kibana 是否接收到 Heartbeat 上传的数据。

Heartbeat 在不同平台有多种安装方式,比如说 macOS、DEB、RPM 和 Windows 等,我们这里介绍最为常用的 Docker 安装方式,其后续部署和启动步骤则大同小异,读者可以自行根据需要进行实践。

需要注意的是,安装的 Heartbeat 必须和 Elasticsearch 或 Kibana 版本相同,所以我们这里选取 heartbeat:7.10.0 版本的镜像。

  1. docker pull docker.elastic.co/beats/heartbeat:7.10.0 

接着,我们可以使用如下命令启动 Heartbeat 容器。

  1. docker run -d   --name=heartbeat   --user=heartbeat    
  2. --volume="/tmp/heartbeat.docker.yml:/usr/share/heartbeat/heartbeat.yml:ro"    
  3. docker.elastic.co/beats/heartbeat:7.10.0   --strict.perms=false 

这里使用了 docker 的 --volume 参数,挂载了宿主机文件系统路径下的 heartbeat.docker.yml 文件到容器的对应路径下,这是在为 Heartbeat 提供配置文件。具体配置文件内容后续继续讲解,我们这里先演示完整个 Uptime 安装流程。

启动 Heartbeat 容器后,通过 docker ps 和 docker exec 命令可以进入到相应的容器内部。

  1. docker ps 
  2. docker exec -it 5b3785357c26(要替换为自己ps命令输出的 

然后,通过 ls 命令,我们可以看到 Heartbeat 的整体文件结构。

  1. bash-4.2$ ls 
  2. LICENSE.txt  NOTICE.txt  README.md  data  fields.yml  heartbeat   
  3. heartbeat.reference.yml  heartbeat.yml  kibana  logs  monitors.d 

在目录中,有一个叫做 heartbeat.yml 的配置文件,这个文件就是上边通过 --volume 参数挂载进来的。同时在 monitor.d 目录中,有一些不同监控器配置的配置文件案例可供大家参考,heartbeat.reference.yaml 中则是最全的配置案例。

接着,我们要使用如下命令来启动 Heartbeat,让它开始收集数据并向配置文件中指定的 Elasticsearch 中上报数据。

  1. ./heartbeat setup 
  2. ./heartbeat -e 

查看上述命令的输出日志没有什么异常后,可以再次来到 Uptime Monitors 界面,点击其 Check data 按钮检查是否接收到了数据,如果接受到了数据,则可以点击 Uptime App 按钮,前往 Uptime App 界面查看详细数据。

运行过一段时间的 Uptime App 界面如下图所示。

我们可以看到界面分为两大部分,上半部分是统计区,通过饼图和柱状图展示了当前监控器 Monitor 的状态和过去一段时间中 Monitor 的状态。而下半部分是具体的 Monitor 列表,一共有两个 Monitors,分别是监听 taobao 网和 aliyun 网站,目前两个都是 Up 状态。

配置 Heartbeat

上边讲解了安装 Heartbeat 和 Uptime 的整体流程,本小节详细解决一下 Heartbeat 的配置,也就是 heartbeat.yml 文件的配置。

heartbeat.yml 文件一般有两部分组成:

  • 监控器配置 heartbeat.monitors,配置要监控的目标和监控的方式;
  • 输出配置 output.elasticsearch,配置数据上报的 Elasticsearch 的地址,用户名和密码。

比如说,上一小节我们启动 docker 时指定的 heartbeat.yaml 文件如下所示:

  1. heartbeat.monitors: 
  2. - type: http # 使用http方式监控,还可以使用 TCP 和 ICMP 
  3.   schedule: '@every 5s' # 每 5s 抓取一次 
  4.   urls: # 需要监控的 url 地址 
  5.     - https://cn.aliyun.com/ 
  6.     - https://www.taobao.com/ 
  7.  
  8. output.elasticsearch: 
  9.   hosts: '${ELASTICSEARCH_HOSTS:http://es-cn-n6w24fib900797tgz.public.elasticsearch.aliyuncs.com:9200}' 
  10.   username: '${ELASTICSEARCH_USERNAME:111}' 
  11.   password'${ELASTICSEARCH_PASSWORD:111}' 

为了使 Heartbeat 知道要检查的服务,它需要一个 URL 列表。

heartbeat.yaml 中的 heartbeat.monitors 中指定了此配置。如上的 heartbeat.yaml 配置文件,对 cn.aliyun.com 和 www.taobao.com 两个网址每隔 5s 进行一次 HTTP 检查。

除了 HTTP 监视器,Heartbeat 还可以进行 TCP 和 ICMP 类型的检查。

  1. heartbeat.monitors: 
  2. - type: icmp 
  3.   schedule: '@every 5s' 
  4.   hosts: 
  5.     - http://cn.aliyun.com/ 
  6.     - http://www.taobao.com/ 
  7. - type: tcp 
  8.   schedule: '@every 5s' 
  9.   hosts: 
  10.     - 127.0.0.1:8080 

此外,它还支持定义不同的检查语句,例如,使用 HTTP 监视器,可以检查响应代码(code)、正文(body)和标头(header)。使用 TCP 监视器,能定义端口检查和字符串检查。

  1. heartbeat.monitors: 
  2. - type: http 
  3.   schedule: '@every 5s' 
  4.   urls: 
  5.     - https://cn.aliyun.com/ 
  6.   # request details: 
  7.   check.request: 
  8.        method: GET 
  9.   check.response: 
  10.        body: "aliyun"   

如上的配置, Heartbeat 会每 5s 使用 GET 调用一次 https://cn.aliyun.com/ ,并在其 Response 的 Body 中寻找字符串 aliyun。如果没有找到这个字符串,则本次检查未通过。

其他更加详细的配置,你可以参考 heartbeat.reference.yml 文件。

阿里云 Elastic Stack 实战手册 https://developer.aliyun.com/topic/elasticstack/playbook

 

责任编辑:武晓燕 来源: 程序员历小冰
相关推荐

2017-03-07 16:49:45

2013-08-28 10:30:39

vSphere

2011-08-25 15:42:49

2012-07-04 11:21:07

OpenStack

2018-06-21 08:23:35

云存储高可用应用

2012-02-13 23:20:18

linux集群高可用

2018-02-28 07:31:51

数据中心可用性IT设备

2011-11-25 13:24:56

2017-08-24 17:05:06

2011-03-29 16:37:59

备份安全性可用性

2011-02-17 08:49:49

WebHTMLCSS

2013-11-19 17:50:33

Linux辅助软件

2012-09-07 09:57:14

2009-04-16 15:34:35

SQL Server

2014-05-14 09:43:01

SUSE私有云

2012-09-04 13:43:31

SQL Server

2024-02-27 09:48:25

Redis集群数据库

2021-05-24 09:15:42

Go熔断熔断器

2012-11-19 11:05:01

实时迁移高可用性虚拟机迁移

2010-08-05 09:03:27

DB2 9.5高可用性
点赞
收藏

51CTO技术栈公众号