1. 首页 > 快讯

Apache Elasticsearch 集群可访问性监测与配置实例

很多朋友对于Apache Elasticsearch 集群可访问性监测与配置实例和不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

[[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

 

关于Apache Elasticsearch 集群可访问性监测与配置实例的内容到此结束,希望对大家有所帮助。

用户评论

封心锁爱

感觉现在很多平台都开始关注弹性查询的可视化监控了。

    有8位网友表示赞同!

冷嘲热讽i

一直想了解一下这个uptime组件,主要是用来干什么?

    有18位网友表示赞同!

病态的妖孽

我平时使用elasticsearch基本就靠官网和文档指导,希望能看到更详细的配置步骤。

    有20位网友表示赞同!

三年约

这样可以实时掌握elasticSearch的状态吗?感觉很实用。

    有13位网友表示赞同!

黑夜漫长

其实很多时候服务器监控都依赖外部工具,这篇文章介绍是不是可以用内部组件来解决这个问题?

    有7位网友表示赞同!

话少情在

想了解一下这个uptime组件和其他的监控工具有什么区别?

    有13位网友表示赞同!

人心叵测i

弹性查询的性能一直都很强,加了这个监测还能提升效率吗?

    有9位网友表示赞同!

花海

看标题就感觉是高手分享的技术文章,一定要仔细看笔记!

    有18位网友表示赞同!

墨染殇雪

以前也遇到过elasticSearch出现问题时找不到原因,希望能从这篇文章学到一些经验。

    有20位网友表示赞同!

情字何解ヘ

配置这些监控组件会不会对Elasticsearch的性能造成负担?

    有8位网友表示赞同!

坠入深海i

51CTO的文章我还是蛮信赖的,分享技术点子挺多。

    有5位网友表示赞同!

微信名字

现在好多平台都开始重视系统的可用性了。

    有13位网友表示赞同!

孤自凉丶

我也要用elasticSearch搭建一个查询系统,看看这篇文章有没有什么启发。

    有19位网友表示赞同!

忘故

配置监控组件是不是每个Elasticsearch实例都必须配置?

    有10位网友表示赞同!

无望的后半生

这个uptime组件能监测哪些具体指标呢?

    有19位网友表示赞同!

聽風

ElasticSearch的监控越来越复杂了,还是得掌握一些关键技术。

    有14位网友表示赞同!

关于道别

很多时候elasticSearch的数据量很大,监控起来确实有点难度。

    有16位网友表示赞同!

话扎心

这篇文章应该能提供比较详细的配置指南吧!

    有14位网友表示赞同!

烟雨离殇

希望看到一些实用的案例分享,更容易理解。

    有11位网友表示赞同!

代价是折磨╳

以后自己搭建系统的时候一定要关注系统的可观测性!

    有18位网友表示赞同!

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/7413.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666