暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

预警!Elasticsearch监控告诉你潜在问题的真相

Linux运维智行录 2025-04-16
118

在这个数据驱动的时代,Elasticsearch作为搜索和分析引擎的佼佼者,被广泛应用于日志分析、实时应用监控、网站搜索等多个领域。然而,随着业务的增长和数据量的激增,如何有效地监控Elasticsearch集群的性能和健康状况成为了运维人员面临的重大挑战之一。一个未被及时发现的问题可能导致查询响应时间延长、服务中断甚至数据丢失。因此,构建一个全面的Elasticsearch监控体系不仅能够帮助我们及时发现并解决问题,还能为优化集群性能提供重要依据。


01
部署Elasticsearch-exporter

1、通外网主机操作

# 添加chart仓库
$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts --force-update 

# 下载elasticsearch-exporter chart包
$ helm pull prometheus-community/prometheus-elasticsearch-exporter --version 6.4.0

# 推送到私有harbor仓库
$ sudo docker push core.jiaxzeng.com/library/elasticsearch/elasticsearch-exporter:v1.8.0
The push refers to repository [core.jiaxzeng.com/library/elasticsearch/elasticsearch-exporter]
83b2a89f3be6: Pushed 
339d7795d6a2: Pushed 
134949ec8800: Pushed 
v1.8.0: digest: sha256:be27eafadd2edea033383630bd11020b6ea4e46ca47cad447fbdc178503d670e size: 949



kubernetes主机操作

1、下载chart包

$ sudo helm pull oci://core.jiaxzeng.com/plugins/prometheus-elasticsearch-exporter --version 6.5.0 --untar --untardir etc/kubernetes/addons/
Pulled: core.jiaxzeng.com/plugins/prometheus-elasticsearch-exporter:6.5.0
Digest: sha256:1d6b3991d0e7593cdfbb43a4eec8232c54cd7c67585fa9540b50cd949f3449a0

2、部署elasticsearch-exporter配置文件

fullnameOverride: elasticsearch-exporter

image:
repository:core.jiaxzeng.com/library/elasticsearch/elasticsearch-exporter
tag:v1.8.0
pullPolicy:IfNotPresent

log:
level:info

es:
uri:https://elastic:pwd@elasticsearch.obs-system.svc:9200
all:true
indices:true
indices_settings:true
indices_mappings:true
aliases:false
shards:true
snapshots:true
cluster_settings:false
slm:false
data_stream:false
ilm:true
timeout:30s
sslSkipVerify: true

Tip:上述配置写在/etc/kubernetes/addons/prometheus-elasticsearch-exporter-values.yaml 文件中

3、部署服务

$ helm -n obs-system install elasticsearch-exporter -f prometheus-elasticsearch-exporter-values.yaml prometheus-elasticsearch-exporter
NAME: elasticsearch-exporter
LAST DEPLOYED: Wed Apr 16 11:05:18 2025
NAMESPACE: obs-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
1. Get the application URL by running these commands:
  export POD_NAME=$(kubectl get pods --namespace obs-system -l "app.kubernetes.io/name=prometheus-elasticsearch-exporter" -o jsonpath="{.items[0].metadata.name}")

  kubectl port-forward $POD_NAME 9108:9108 --namespace obs-system
  echo "Visit http://127.0.0.1:9108/metrics to use your application"


02
Prometheus采集es指标

1、Prometheus采集elasticsearch-exporter数据

- job_name:'es-exporter'
kubernetes_sd_configs:
-role:service
relabel_configs:
-action:keep
    source_labels:[__meta_kubernetes_namespace,__meta_kubernetes_service_name,__meta_kubernetes_service_port_name]
    regex: obs-system;elasticsearch-exporter;http

2、验证是否采集成功

$ curl -s -u admin $(kubectl -n kube-system get svc prometheus -ojsonpath='{.spec.clusterIP}:{.spec.ports[0].port}')/prometheus/api/v1/query --data-urlencode 'query=up{job=~"es-exporter"}' | jq '.data.result[] | {job: .metric.job, instance: .metric.instance ,status: .value[1]}'
Enter host password for user 'admin':
{
  "job""es-exporter",
  "instance""elasticsearch-exporter.obs-system.svc:9108",
  "status""1"
}


03
grafana添加es监控面板

grafana上导入以下 dashboard ID号:14191(Elasticsearch Exporter Quickstart and Dashboard)



效果图

04
结语

通过这篇文章,我们希望您对Elasticsearch监控有了更加深入的理解,并且认识到建立有效的监控机制对于保障系统的稳定运行至关重要。无论是使用官方提供的X-Pack监控插件,还是借助于开源工具如Prometheus和Grafana,找到适合自己业务需求的监控解决方案都是至关重要的。记住,监控不仅仅是为了发现问题,更是为了预防问题的发生,从而确保我们的Elasticsearch集群可以持续、高效地服务于我们的业务目标。让我们一起动手,打造属于自己的Elasticsearch监控体系吧!


【推荐阅读】点击下方蓝色标题跳转至详细内容!

别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!

END


文章转载自Linux运维智行录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论