Uptime-Elastic Stack 实战手册

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 现在互联网架构随着用户的增加,而越来越复杂,可能要有成千上万个不同的组件和不同的实例,对这些组件可用性的监控是提供高可用服务的关键之一,Elastic 为此推出了 Uptime App。

970X90.png

· 更多精彩内容,请下载阅读全本《Elastic Stack实战手册》

· 加入创作人行列,一起交流碰撞,参与技术圈年度盛事吧

创作人:程序员历小冰
审稿人:朱荣鑫

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

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

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

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

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

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

1.png

Uptime 监控示意图

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

安装 Uptime App

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

2.png

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

3.png

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

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

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

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

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

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

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

docker ps
docker exec -it 5b3785357c26(要替换为自己ps命令输出的CONTAINER ID) bash

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

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

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

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

./heartbeat setup
./heartbeat -e

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

4.png

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

5.png

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

配置 Heartbeat

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

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

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

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

heartbeat.monitors:
- type: http # 使用http方式监控,还可以使用 TCP 和 ICMP
  schedule: '@every 5s' # 每 5s 抓取一次
  urls: # 需要监控的 url 地址
    - https://cn.aliyun.com/
    - https://www.taobao.com/

output.elasticsearch:
  hosts: '${ELASTICSEARCH_HOSTS:http://es-cn-n6w24fib900797tgz.public.elasticsearch.aliyuncs.com:9200}'
  username: '${ELASTICSEARCH_USERNAME:111}'
  password: '${ELASTICSEARCH_PASSWORD:111}'

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

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

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

heartbeat.monitors:
- type: icmp
  schedule: '@every 5s'
  hosts:
    - http://cn.aliyun.com/
    - http://www.taobao.com/
- type: tcp
  schedule: '@every 5s'
  hosts:
    - 127.0.0.1:8080

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

heartbeat.monitors:
- type: http
  schedule: '@every 5s'
  urls:
    - https://cn.aliyun.com/
  # request details:
  check.request:
       method: GET
  check.response:
       body: "aliyun"  

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

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

创作人简介:
程序员历小冰,专注于探讨后端生态的点点滴滴,包括微服务、分布式、数据库、性能
调优和各类中间件源码分析。
博客: http://remcarpediem.net/
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
12月前
|
监控 网络协议 中间件
带你读《Elastic Stack 实战手册》之52:——3.5.11.Uptime (下)
带你读《Elastic Stack 实战手册》之52:——3.5.11.Uptime (下)
|
12月前
|
Shell iOS开发 Docker
带你读《Elastic Stack 实战手册》之52:——3.5.11.Uptime (中)
带你读《Elastic Stack 实战手册》之52:——3.5.11.Uptime (中)
|
12月前
|
监控 网络协议 程序员
带你读《Elastic Stack 实战手册》之52:——3.5.11.Uptime (上)
带你读《Elastic Stack 实战手册》之52:——3.5.11.Uptime (上)
|
12月前
|
机器学习/深度学习 数据建模 索引
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(中)
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(中)
|
12月前
|
机器学习/深度学习 运维 数据可视化
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(上)
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(上)
|
12月前
|
机器学习/深度学习
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(下)
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(下)
|
12月前
|
存储 算法 数据处理
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(2)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(2)
118 0
|
12月前
|
存储 JSON 安全
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(1)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(1)
138 0
|
12月前
|
存储 前端开发 数据可视化
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(3)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(3)
120 0
|
12月前
|
存储 Kubernetes 数据可视化
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(4)
带你读《Elastic Stack 实战手册》之6:——3.3.1.Elastic Stack家族(4)
112 0