【30天精通Prometheus:一站式监控实战指南】第9天:elasticsearch_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们👋

  欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀

  Prometheus是云原生和DevOps的核心监控工具,我们将从基础概念开始,逐步涵盖配置、查询、告警和可视化。💪

  在接下来的30天里,我们将解锁Prometheus的实战技巧,通过案例和分享,助你深入理解其工作原理。📆

  目标:30天后,你将熟练掌握Prometheus,为未来的项目挑战做好准备!💯

  这是一段精彩旅程,期待你的加入!🎉


一、elasticsearch_exporter概述📘

定义
  elasticsearch_exporter是一个用于监控和收集Elasticsearch集群关键性能指标的开源工具。它通过Prometheus的接口工作,为Elasticsearch集群提供全面的监控数据。

功能
  监控集群状态:elasticsearch_exporter能够实时监控Elasticsearch集群的健康状态和性能,包括节点状态、索引信息、JVM内存利用率等。

  数据收集与导出:该工具收集各种关键性能指标,并将这些数据导出为Prometheus可以识别的格式,便于后续的数据分析和可视化。

  兼容性与扩展性:elasticsearch_exporter设计灵活,兼容多种Elasticsearch版本,并可根据需要进行扩展,以适应不同的监控需求。

  告警与通知:结合Prometheus的告警机制,elasticsearch_exporter可以帮助设置性能阈值,并在达到这些阈值时触发告警,及时通知管理员。

应用场景
  Elasticsearch性能调优:当Elasticsearch集群出现性能瓶颈时,可以帮助管理员快速定位问题,通过监控数据找出性能下降的原因,并进行相应的调优。

  预防故障与灾难恢复:通过实时监控关键指标,如节点状态和索引健康情况,可以及时发现潜在问题并采取措施,防止故障发生或加快灾难恢复过程。

  资源规划与容量管理:elasticsearch_exporter提供的监控数据可以帮助管理员更好地了解集群的资源使用情况,从而进行合理的资源规划和容量管理。

  服务级别协议(SLA)保障:对于企业级应用,保障特定的服务级别是至关重要的。通过elasticsearch_exporter的监控数据,可以确保Elasticsearch服务满足预定的性能指标。

二、安装elasticsearch_exporter💾

注意事项和常见问题
  1.兼容性检查:确保elasticsearch_exporter的版本与你的Elasticsearch集群版本兼容。

  2.环境配置:elasticsearch_exporter需要运行在能够访问Elasticsearch集群的环境中。确保服务器的网络连接正常,以便exporter能够与Elasticsearch集群通信。

  3.依赖安装:安装前需确认服务器上已安装必要的依赖,如合适的操作系统、网络库等。

  4.配置文件:根据需要配置elasticsearch_exporter,例如设置Elasticsearch集群的地址、端口、认证信息等。

  5.运行权限:确保运行elasticsearch_exporter的用户具有足够的权限来访问Elasticsearch集群。

2.1 访问elasticsearch_exporter官方网站 🌐

2.2 选择适合的版本🔍

  • 在下载页面,你将看到不同操作系统的elasticsearch_exporter二进制包。根据你的操作系统选择适合的版本。例如,如果你使用的是Linux 64位系统,就选择elasticsearch_exporter-x.x.x.linux-amd64.tar.gz(其中x.x.x是版本号)。

2.3 下载elasticsearch_exporter⬇️

  • 点击所选版本的下载链接,将elasticsearch_exporter的二进制包下载到你的本地计算机。

2.4 解压安装包📂

  • 将下载的elasticsearch_exporter压缩包解压到你想要安装的目录。你可以使用命令行工具(如tar)来完成这个步骤。解压后,你将看到一个名为elasticsearch_exporter-x.x.x.linux-amd64的目录,其中包含elasticsearch_exporter的二进制文件和其他相关文件。
tar -xzf elasticsearch_exporter-x.x.x.linux-amd64.tar.gz

2.5 运行elasticsearch_exporter🚀

  • 进入解压后的目录,并运行elasticsearch_exporter服务器。在Linux下,你可以使用如下命令。这样就使用默认的配置启动elasticsearch_exporter服务器。如果一切正常,你应该能在终端看到elasticsearch_exporter的启动日志。
cd elasticsearch_exporter-x.x.x.linux-amd64

# 启动服务
/home/deploy/elasticsearch_exporter/elasticsearch_exporter \
  --es.all \
  --es.cluster_settings \
  --es.indices \
  --es.node="_local" \
  --es.indices_settings \
  --es.shards \
  --es.snapshots \
  --es.timeout=15s \
  --es.ssl-skip-verify \
  --es.clusterinfo.interval=5m \
  --es.uri http://elastic:elastic_password@127.0.0.1:9200 \
  --web.listen-address=:9114

三、elasticsearch_exporter指标和配置详解📖

  • 黑色:作为默认文本颜色。
  • 绿色:表示常规配置项
  • 橙色:表示具有互斥参数的配置项 / 建议开启(根据自己的场景确定需求)
  • 蓝色:不重要的配置项 / 建议不开启
  • 红色:表示关键信息和警告 / 最好开启

注意:

  • 1.相关参数配置建议仅供参考,具体要以自己生产的实际需要自行配置。
  • 2.以下配置参数介绍是基于elasticsearch_exporter-1.6.0版本说明的,其它版本会有不同。

3.1 elasticsearch_exporter.service

Web服务和监听配置

  • - -web.telemetry-path=“/metrics”
      定义exporter暴露metrics数据的HTTP路径。默认情况下,路径被设置为“/metrics”。意味着,当Prometheus或其他监控工具从exporter拉取数据时,将访问此路径来获取Elasticsearch相关的metrics。
  • - -[no-]web.systemd-socket
      用于指示exporter是否使用systemd套接字激活来监听请求,而不是直接绑定到一个网络端口。这种方式主要在Linux系统中使用,并且需要相应的systemd配置。如果启用了这个选项,exporter将不会直接监听网络端口,而是依赖systemd来传递进入的连接。
  • - -web.listen-address=:9114
      定义exporter监听的网络地址和端口。在这个例子中,exporter将在所有可用的网络接口(由“:”表示)上的9114端口进行监听。意味着任何发送到这台机器9114端口的请求都将被exporter接收并处理。
  • - -web.config.file=“”
      允许用户通过一个配置文件来定义web服务的额外配置,如TLS加密或基本身份验证。配置文件的路径应该在这个参数中指定。如果留空(如示例中的""),则不使用额外的配置文件,exporter将使用默认设置运行。

Elasticsearch连接和认证配置

  • - -es.uri=“http://localhost:9200”
      指定Elasticsearch集群的地址。Exporter会使用这个URI来连接到Elasticsearch集群并收集metrics。
  • - -es.timeout=5s
      设置与Elasticsearch集群通信的超时时间。在这个例子中,如果Exporter在5秒内无法从Elasticsearch获取响应,那么请求将会超时。
  • - -es.ca=“”
      用于指定CA证书的路径,该证书用于验证Elasticsearch服务器提供的TLS证书。如果Elasticsearch集群启用了HTTPS并且使用了自签名证书或者特定的CA证书,就需要设置这个参数。留空表示不使用特定的CA证书进行验证。
  • - -es.client-private-key=“”
      如果Elasticsearch集群要求客户端身份验证,此参数用于指定客户端私钥的路径。留空表示不进行客户端私钥身份验证。
  • - -es.client-cert=“”
      与–es.client-private-key配套使用,此参数用于指定客户端证书的路径,以便在与Elasticsearch的TLS连接中进行身份验证。如果留空,则表示不使用客户端证书。
  • - -[no-]es.ssl-skip-verify
      用于控制是否跳过Elasticsearch服务器TLS证书的验证。如果设置为- -es.ssl-skip-verify,则Exporter将不会验证Elasticsearch服务器的TLS证书,这可能会降低连接的安全性。如果不加这个标志或明确设置为–no-es.ssl-skip-verify,则会进行正常的TLS证书验证。
  • - -aws.region=“”
      如果Elasticsearch集群部署在AWS上,并且使用了AWS的IAM身份验证,此参数用于指定AWS的区域。留空表示不使用AWS的IAM身份验证。
  • - -aws.role-arn=“”
      当Elasticsearch集群部署在AWS上,并且使用了IAM角色进行身份验证时,此参数用于指定IAM角色的ARN(Amazon Resource Name)。Exporter会使用这个角色来获取临时凭证以访问Elasticsearch。如果留空,则表示不使用IAM角色进行身份验证。

导出指标配置

  • - -[no-]collector.cluster-info
      用于启用或禁用收集Elasticsearch集群信息(如集群名称、集群UUID、版本等)的collector。如果包含此标志(即- -collector.cluster-info),则该collector会被启用。如果使用了- -no-collector.cluster-info,则该collector会被禁用。
  • - -[no-]collector.clustersettings
      控制是否收集Elasticsearch集群的设置信息。启用时(- -collector.clustersettings),exporter会抓取集群级别的设置;禁用时(- -no-collector.clustersettings),则不会收集这些信息。
  • - -[no-]es.all
      用于启用或禁用所有Elasticsearch相关的collectors。如果设置为- -es.all,则所有与Elasticsearch相关的数据收集器都将被启用。如果使用- -no-es.all,则所有collector都会被禁用(尽管单独的collector标志仍可以覆盖这个设置)。默认为:false
  • - -es.node=“_local”
      指定exporter应该从哪个Elasticsearch节点收集数据。默认情况下,它设置为_local,意味着exporter将从其运行的同一个Elasticsearch节点收集数据。通常用于在Elasticsearch节点上本地运行的exporter。
  • - -[no-]es.indices
      控制是否收集有关Elasticsearch索引的信息。启用时(- -es.indices),将收集索引相关的metrics;禁用时(- -no-es.indices),则不收集。默认为:false
  • - -[no-]es.indices_settings
      决定是否收集各个索引的设置信息。如果启用(- -es.indices_settings),则exporter会获取每个索引的配置;如果禁用(- -no-es.indices_settings),则不会。默认为:false
  • - -[no-]es.indices_mappings
      控制是否收集Elasticsearch索引的映射信息。启用时(- -es.indices_mappings),exporter会获取索引的字段映射;禁用时(- -no-es.indices_mappings),不会收集这些信息。默认为:false
  • - -[no-]es.aliases
      决定是否收集Elasticsearch索引的别名信息。如果设置为- -es.aliases,则别名信息会被收集;如果设置为- -no-es.aliases,则不会。默认为:true
  • - -[no-]es.ilm
      控制是否收集有关Elasticsearch索引生命周期管理(ILM)的信息。启用时(- -es.ilm),ILM相关的metrics会被收集;禁用时(- -no-es.ilm),则不会。
  • - -[no-]es.shards
      决定是否收集Elasticsearch分片的信息,包括其状态和健康情况。启用时(- -es.shards),分片信息会被导出;禁用时(- -no-es.shards),则不会。默认为:false
  • - -[no-]es.snapshots
      是否收集Elasticsearch快照的信息。如果启用(- -es.snapshots),则快照相关的数据会被收集;如果禁用(- -no-es.snapshots),则不会。
  • - -[no-]es.slm
      决定是否收集有关Elasticsearch的快照生命周期管理(SLM)的信息。启用时(- -es.slm),SLM相关的数据会被导出;禁用时(- -no-es.slm),则不会。默认为:false
  • - -[no-]es.data_stream
      控制是否收集Elasticsearch数据流的信息。如果启用(- -es.data_stream),数据流相关的数据会被收集;如果禁用(- -no-es.data_stream),则不会。
  • - -es.clusterinfo.interval=5m
      设置收集集群信息的时间间隔。在这里,设置为5分钟,意味着exporter会每隔5分钟收集一次集群信息。可以帮助减少Elasticsearch的负载,同时仍然保持监控数据的更新。

四、实战演练:生产环境搭建指南🔨

4.1 创建普通用户管理elasticsearch_exporter👤

useradd deploy

4.2 解压elasticsearch_exporter.tar.gz📦

注意:
  我的是x86,所以使用elasticsearch_exporter-1.6.0.linux-amd64.tar.gz,您可以使用uname -a命令查看系统架构

tar xvf elasticsearch_exporter-1.6.0.linux-amd64.tar.gz -C /home/deploy/

4.3 将elasticsearch_exporter集成到Prometheus配置中✂️

  将elasticsearch_exporter集成到Prometheus配置中,确保数据能够正常采集。编辑Prometheus的配置文件(通常是prometheus.yml),在scrape_configs部分添加elasticsearch_exporter的配置。告诉Prometheus将采集localhost:9114的数据。

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "elasticsearch_exporter"
    static_configs:
      - targets: ["localhost:9114"]

4.4 更改elasticsearch_exporter软件包名称✂️

mv /home/deploy/elasticsearch_exporter-1.6.0.linux-amd64 /home/deploy/elasticsearch_exporter

4.5 编辑elasticsearch_exporter.service文件📝

cat > /etc/systemd/system/elasticsearch_exporter.service <<EOF
[Unit]
Description=Elasticsearch Exporter
After=network.target

[Service]
Type=simple
User=deploy
Group=deploy
ExecStart=/home/deploy/elasticsearch_exporter/elasticsearch_exporter \
  --es.all \
  --es.cluster_settings \
  --es.indices \
  --es.node="_local" \
  --es.indices_settings \
  --es.shards \
  --es.snapshots \
  --es.timeout=15s \
  --es.ssl-skip-verify \
  --es.clusterinfo.interval=5m \
  --es.uri http://elastic:cloudops@127.0.0.1:9200 \
  --web.listen-address=:9114 \
  --log.level="info"

Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

4.6 启动elasticsearch_exporter.service🔌

sudo systemctl daemon-reload

sudo systemctl enable --now elasticsearch_exporter.service

4.7 查看服务是否正常启动🔍

# 查看service服务是否启动
sudo systemctl status elasticsearch_exporter.service

# 查看端口是否存在
sudo ss -ntulp | grep 9114

五、基于云原生的部署方案 🚀

5.1 使用Docker部署elasticsearch_exporter🐳

5.1.1 获取Prometheus Docker镜像 📸

  • 从docker-hub下载镜像
docker pull prometheuscommunity/elasticsearch-exporter:v1.6.0

docker tag prometheuscommunity/elasticsearch-exporter:v1.6.0 elasticsearch-exporter:v1.6.0
  • 从阿里云下载镜像(如果访问不到docker-hub)
// 如果访问不到docker-hub的可以访问如下地址
docker pull registry.cn-beijing.aliyuncs.com/insights-ops/elasticsearch-exporter:v1.6.0

docker tag registry.cn-beijing.aliyuncs.com/insights-ops/elasticsearch-exporter:v1.6.0 elasticsearch-exporter:v1.6.0
  • 从百度网盘下载镜像
docker load -i elasticsearch-exporter-v1.6.0.tar

docker tag prometheuscommunity/elasticsearch-exporter:v1.6.0 elasticsearch-exporter:v1.6.0

5.1.2 运行elasticsearch_exporter容器 🏃

docker run -itd --rm -p 9114:9114 --name=elasticsearch_exporter elasticsearch-exporter:v1.6.0

5.1.3 验证Docker部署 ✅

# 查看容器是否正常启动,Status为Up为正常
docker ps -a | grep elasticsearch_exporter

# 端口监听
ss -ntulp | grep 9114

5.2 利用Docker-Compose简化部署 📘

5.2.1 编写docker-compose.yml配置文件 📜

---
version: '3'

services:
  elasticsearch_exporter:  
    image: elasticsearch-exporter:v1.6.0  
    container_name: elasticsearch_exporter  
    ports:  
      - "9114:9114"  
    restart: unless-stopped

5.2.2 使用Docker-Compose启动服务 🚀

docker-compose up -d

5.2.3 验证Docker部署 ✅

# 查看容器是否正常启动,Status为Up为正常
docker ps -a | grep elasticsearch_exporter

# 端口监听
ss -ntulp | grep 9114

5.3 在Docker Swarm中部署elasticsearch_exporter🐝——待更新,敬请期待!!!

5.4 在Kubernetes(K8s)上部署elasticsearch_exporter🚀——待更新,敬请期待!!!

相关资料下载地址📚

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜提yBei冰美式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值