Uptime-Elastic Stack 实战手册

简介: 现在互联网架构随着用户的增加,而越来越复杂,可能要有成千上万个不同的组件和不同的实例,对这些组件可用性的监控是提供高可用服务的关键之一,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/
相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
开发工具 数据安全/隐私保护 Android开发
【教程】APP 开发后如何上架?
【教程】APP 开发后如何上架?
|
SQL 安全 关系型数据库
SQL注入漏洞实战演习
SQL注入漏洞实战演习
564 1
|
5月前
|
Web App开发 开发框架 监控
Playwright与Selenium对比:迁移策略与注意事项
本文分享团队将2000+ Selenium端到端测试迁至Playwright的实战经验:直面浏览器更新导致的随机失败,剖析架构、等待机制等核心差异;详解并行运行、选择器迁移、页面对象重构、分批替换四阶段策略;总结执行提速60%、稳定性提升至98%+等收益,并给出迁移决策指南。
|
4月前
|
人工智能 监控 搜索推荐
阿里云万小智建站使用教程:对话式AI建站,直接说需求,10分钟网站上线!
阿里云万小智是对话式AI建站工具,用户只需口述需求,10分钟即可完成网站搭建。教程涵盖四大阶段:域名备案(1–20工作日)、AI模板设计、一键发布上线、SEO推广与流量监控,全程零代码操作,新手友好。
869 5
|
5月前
|
数据采集 机器学习/深度学习 人工智能
大模型“驯化”指南:从人类偏好到专属AI,PPO与DPO谁是你的菜?
本文深入解析让AI“懂你”的关键技术——偏好对齐,对比PPO与DPO两种核心方法。PPO通过奖励模型间接优化,适合复杂场景;DPO则以对比学习直接训练,高效稳定,更适合大多数NLP任务。文章涵盖原理、实战步骤、评估方法及选型建议,并推荐从DPO入手、结合低代码平台快速验证。强调数据质量与迭代实践,助力开发者高效驯化大模型,实现个性化输出。
866 8
|
5月前
|
数据采集 监控 API
【量化基础】数据驱动决策:从零接入StockTV实时行情API
本文介绍量化交易基础,详解如何用Python对接StockTV实时行情API,获取毫秒级数据。涵盖REST与WebSocket实战代码,助你构建稳定策略,从数据获取迈向自动化交易,夯实量化基石。(238字)
|
12月前
|
安全 测试技术 网络虚拟化
端口安全配置示例
本文介绍了一种通过端口安全功能提高用户接入公司网络安全性的方式。具体实现中,PC1、PC2 和 PC3 通过接入设备连接公司网络,Router 接口启用端口安全功能并限制 MAC 地址学习数量为接入用户数,防止外来设备访问网络。配置思路包括创建 VLAN 实现二层转发和配置端口安全功能。测试结果显示,替换 PC1 后的新设备无法访问网络,而原有设备(如 PC2 和 PC3)仍可正常通信。
端口安全配置示例
|
存储 监控 关系型数据库
MySQL自增ID耗尽解决方案:应对策略与实践技巧
在MySQL数据库中,自增ID(AUTO_INCREMENT)是一种特殊的属性,用于自动为新插入的行生成唯一的标识符。然而,当自增ID达到其最大值时,会发生什么?又该如何解决?本文将探讨MySQL自增ID耗尽的问题,并提供一些实用的解决方案。
669 1
|
Java 数据库连接 mybatis
Mybatis使用注解方式实现批量更新、批量新增
Mybatis使用注解方式实现批量更新、批量新增
1051 1

热门文章

最新文章