Linuxword Global
当前位置: Linux技术 > ElasticSearch 如何配置Uptime 监控组件可用性

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

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

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

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

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

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

modb_20210604_e6dd3bbe-c51b-11eb-936b-00163e068ecd

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

安装 Uptime App

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

modb_20210604_e70fc854-c51b-11eb-936b-00163e068ecd

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

modb_20210604_e75c1574-c51b-11eb-936b-00163e068ecd

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 界面查看详细数据。

modb_20210604_e78d8280-c51b-11eb-936b-00163e068ecd

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

modb_20210604_e7b95bc6-c51b-11eb-936b-00163e068ecd

我们可以看到界面分为两大部分,上半部分是统计区,通过饼图和柱状图展示了当前监控器 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 文件。

「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」

赞(0) 打赏
一分也是爱

支付宝扫一扫打赏

微信扫一扫打赏

上一篇:

下一篇:

相关推荐

博客简介

本站CDN采用VmShell免费提供离中国大陆最近的香港CMI高速网络做支撑,ToToTel打造全球最快速的边沿网络支撑服务,具体详情请见 :https://vmshell.com/ 以及 https://tototel.com/,网站所有的文件和内容禁止大陆网站搬迁复制,谢谢,VPS营销投稿邮箱: admin@linuxxword.com,我们免费帮大家发布,不收取任何费用,请提供完整测试文稿!

精彩评论

友情链接

他们同样是一群网虫,却不是每天泡在网上游走在淘宝和网游之间、刷着本来就快要透支的信用卡。他们或许没有踏出国门一步,但同学却不局限在一国一校,而是遍及全球!申请交换友链

站点统计

  • 文章总数: 2350 篇
  • 草稿数目: 13 篇
  • 分类数目: 6 个
  • 独立页面: 0 个
  • 评论总数: 2 条
  • 链接总数: 0 个
  • 标签总数: 6146 个
  • 注册用户: 139 人
  • 访问总量: 8,660,100 次
  • 最近更新: 2024年5月3日