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

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
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"
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"
}
grafana上导入以下 dashboard ID号:14191(Elasticsearch Exporter Quickstart and Dashboard)



通过这篇文章,我们希望您对Elasticsearch监控有了更加深入的理解,并且认识到建立有效的监控机制对于保障系统的稳定运行至关重要。无论是使用官方提供的X-Pack监控插件,还是借助于开源工具如Prometheus和Grafana,找到适合自己业务需求的监控解决方案都是至关重要的。记住,监控不仅仅是为了发现问题,更是为了预防问题的发生,从而确保我们的Elasticsearch集群可以持续、高效地服务于我们的业务目标。让我们一起动手,打造属于自己的Elasticsearch监控体系吧!
【推荐阅读】点击下方蓝色标题跳转至详细内容!
别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!





