监控 Elasticsearch 集群状态是确保其稳定性和性能的关键任务。以下是全面的监控方案,涵盖自建和云服务场景:
一、核心内置工具
1. Elasticsearch APIs(关键健康检查)
bash
# 集群总体健康(颜色标识:GREEN/YELLOW/RED)
curl -XGET 'http://localhost:9200/_cluster/health?pretty'
# 节点状态统计
curl -XGET 'http://localhost:9200/_cat/nodes?v'
# 索引级健康(含分片分布)
curl -XGET 'http://localhost:9200/_cat/indices?v&health=yellow'
# 热点线程分析(排查性能瓶颈)
curl -XGET 'http://localhost:9200/_nodes/hot_threads'
2. Kibana Stack Monitoring
- 启用步骤:
-
配置
elasticsearch.yml
:yamlxpack.monitoring.collection.enabled: true
-
Kibana 中进入 Stack Monitoring > 实时可视化集群拓扑、资源使用率和性能指标。
-
二、专业监控方案
✅ Prometheus + Grafana(生产推荐)
-
数据采集:
-
Prometheus 配置示例:
yamlscrape_configs: - job_name: 'elasticsearch' static_configs: - targets: ['es-exporter:9114']
-
Grafana 仪表盘:
- 导入官方模板:Elasticsearch Grafana dashboards
- 核心监控项 :
- JVM 堆内存使用率
- GC 次数与耗时
- 索引/搜索延迟(P99)
- 线程池拒绝次数(
thread_pool
rejections) - 磁盘空间水位(需监控
disk_watermark
)
✅ Elastic 官方方案(需付费)
- Elastic Stack Monitoring:集成 APM 和日志分析
- Elastic Alerting:设置阈值告警(如分片未分配超30分钟)
三、关键监控指标分类
类别 | 核心指标 | 告警阈值建议 |
---|---|---|
集群健康 | status (GREEN/YELLOW/RED) |
非 GREEN 立即告警 |
节点存活 | 节点数 (_cat/nodes ) |
节点丢失持续5分钟 |
JVM 性能 | 堆内存使用率 (>75% 告警) | >85% 紧急告警 |
磁盘空间 | disk.avail_percent |
<20% 低水位,<10% 紧急 |
索引性能 | indices.indexing.index_time_avg (ms) |
>1s (SSD) / >3s (HDD) |
搜索性能 | indices.search.query_time_avg (ms) |
>500ms 告警 |
线程池阻塞 | thread_pool.write.rejected / search.rejected |
>0 立即排查 |
四、日志与告警配置
-
日志监控:
- 收集
ES_HOME/logs/*.log
到 ELK 或 Splunk - 重点关注日志级别
WARN
/ERROR
- 收集
-
告警规则示例(Prometheus Alertmanager):
yamlrules: - alert: ElasticsearchClusterRed expr: es_cluster_health_status{color="red"} == 1 for: 5m labels: severity: critical
五、云服务简化方案
- AWS OpenSearch :使用内置 CloudWatch 指标 + SNS 告警
- Elastic Cloud :控制台直接查看 Deployment Health 和性能分析
六、故障排查工具箱
bash
# 查看未分配分片原因
GET /_cluster/allocation/explain?pretty
# 检查 pending tasks(集群级阻塞)
GET /_cluster/pending_tasks
# 清除缓存(紧急恢复性能)
POST /_cache/clear
💡 最佳实践:
- 生产环境至少部署 3个 Master 节点(奇数个)
- 定期运行
_cluster/reroute?retry_failed
修复分片- 启用 Slow Query Log 捕获性能瓶颈查询
通过以上方法组合,可实现对 Elasticsearch 集群的全维度监控,快速响应异常。建议优先部署 Prometheus+Grafana 方案,成本低且扩展性强。