1.首先查看集群整体健康状态

# curl -XGET http://10.27.35.94:9200/_cluster/health?pretty
{
"cluster_name" : "yunva-es",
"status" : "red",
"timed_out" : false,
"number_of_nodes" : 7,
"number_of_data_nodes" : 6,
"active_primary_shards" : 85,
"active_shards" : 157,
"relocating_shards" : 0,
"initializing_shards" : 6,
"unassigned_shards" : 19,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 86.26373626373626
}

如果是red状态,说明有节点挂掉,找到挂掉的索引分片和节点

如下例子,可以看到 voice:live:logout 这个索引的0分片都没有分配说明挂掉了,我们可以查看之前正常的时候的分片情况(可以定期将分片的分配情况记录下来)

# curl 10.26.241.237:9200/_cat/shards
....
voice:live:logout 2 p STARTED 428 62.9kb 10.27.65.121 yunva_etl_es6
voice:live:logout 2 r STARTED 428 62.9kb 10.26.241.239 yunva_etl_es3
voice:live:logout 4 r STARTED 444 99.8kb 10.45.150.115 yunva_etl_es9
voice:live:logout 4 p STARTED 444 99.8kb 10.25.177.47 yunva_etl_es11
voice:live:logout 1 p STARTED 419 97.7kb 10.26.241.239 yunva_etl_es3
voice:live:logout 1 r STARTED 419 97.7kb 10.25.177.47 yunva_etl_es11
voice:live:logout 3 p STARTED 440 73.2kb 10.27.35.94 yunva_etl_es7
voice:live:logout 3 r STARTED 440 73.2kb 10.27.78.228 yunva_etl_es5
voice:live:logout 0 p UNASSIGNED
voice:live:logout 0 r UNASSIGNED

定期记录分片的脚本

# cat es_shard.sh
#!/bin/bashecho $(date +"%Y-%m-%d %H:%M:%S") >> /data/es_shards.txt
curl -XGET http://10.26.241.237:9200/_cat/shards >> /data/es_shards.txt

2.依次查询节点的健康状态,如果哪个节点不返回,或者很慢,可能是内存溢出,需要直接重启该节点

# curl -XGET http://IP:9200/_cluster/health?pretty

内存溢出的典型特征会在elasticsearch/bin目录下产生类似如下文件:

hs_err_pid27186.log
java_pid1151.hprof

3.zabbix添加监控
①如果挂掉自动启动(注意不能是root用户)

自动启动elasticsearch脚本:

# cat /usr/local/zabbix-agent/scripts/start_es.sh#!/bin/bash
# if elasticsearch process exists kill it
source /etc/profilecount_es=`ps -ef|grep elasticsearch|grep -v grep|wc -l`
if [ $count_es -gt 1 ];then
ps -ef|grep elasticsearch|grep -v grep|/bin/kill `awk '{print $2}'`
fi
rm -f /data/elasticsearch-5.0.1/bin/java_pid*.hprof
# start it
su yunva -c "cd /data/elasticsearch-5.0.1/bin && /bin/bash elasticsearch &"

②有hs_err*.log或者hprof文件删除文件然后重启该节点(可以直接触发start_es.sh脚本)

elasticsearch报错监控项:
UserParameter=es_debug,sudo /bin/find /data/elasticsearch-5.0.1/bin/ -name hs_err_pid*.log -o -name java_pid*.hprof|wc -l

java报错的监控项:

UserParameter=java_error,sudo /bin/find /home -name hs_err_pid*.log -o -name java_pid*.hprof -o -name jvm.log|wc -l

③curl -XGET http://IP:9200/_cluster/health?pretty 如果响应时间超过30S重启

for IP in 10.28.50.131 10.26.241.239 10.25.135.215 10.26.241.237 10.27.78.228 10.27.65.121 10.27.35.94 10.30.136.143 10.174.12.230 10.45.150.115 10.25.177.47
do
curl -XGET http://$IP:9200/_cluster/health?pretty
done

4.优化配置:

# 以下配置可以减少当es节点短时间宕机或重启时shards重新分布带来的磁盘io读写浪费

discovery.zen.fd.ping_timeout: 300s
discovery.zen.fd.ping_retries: 8
discovery.zen.fd.ping_interval: 30s
discovery.zen.ping_timeout: 300s

5.es集群状态检测
UserParameter=es_cluster_status,curl -sXGET http://10.11.117.18:9200/_cluster/health/?pretty | grep "status"|awk -F '[ "]+' '{print $4}'|grep -c 'green'

后续如果有其他方面的一些好的方法也会更新上来

索引修改以后,需要刷新index表达式,否则无法正常识别

转载于:https://www.cnblogs.com/reblue520/p/6972138.html

elasticsearch5.0.1集群排错的几个思路总结相关推荐

  1. ElasticSearch-5.3.1集群环境搭建,安装ElasticSearch-head插件,安装错误解决

    说起来甚是惭愧,博主在写这篇文章的时候,还没有系统性的学习一下ES,只知道可以拿来做全文检索,功能很牛逼,但是接到了任务不想做也不行, leader让我搭建一下分布式的ES集群环境,用来支持企业信用数 ...

  2. Spark 0.8 集群(CentOS6.4)-简单统计测试

    环境:CentOS 6.4, hadoop-2.0.0-cdh4.2.0, JDK 1.6, spark-0.8.0-incubating-bin-cdh4.tar.gz,Scala 2.9.3 1. ...

  3. redis-5.0.4集群部署

    redis-5.0.4 集群搭建 redis-cluster介绍 ​ 1:redis是一个开源的key value存储系统,受到了广大互联网公司的青睐. ​ 2:redis集群采用P2P模式,是完全去 ...

  4. redis 3.0 cluster 集群 学习之路篇 [3]

    周氏一族,整理技术文档,给下一代留点教程...... redis 3.0 cluster 安装篇,请看 http://zhoushouby.blog.51cto.com/9150272/1560400 ...

  5. redis 3.0的集群部署

    2019独角兽企业重金招聘Python工程师标准>>> redis 3.0的集群部署 博客分类: 缓存 文章转载自:http://hot66hot.iteye.com/blog/20 ...

  6. 【MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记】

    MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-1 - likingzi - 博客园 MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-2 - likingzi ...

  7. 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群

    其实这是一篇来自:http://www.open-open.com/lib/view/open1435468300700.html 个人认为很适合新手参考的文章,感谢原创作者的努力. 分布式存储 Ce ...

  8. Redis-5.0.5集群配置

    Redis-5.0.5集群配置 版本:redis-5.0.5 参考:http://redis.io/topics/cluster-tutorial. 集群部署交互式命令行工具:https://gith ...

  9. 手动搭建高可用的Redis5.0分片集群,从理论到实践,超详细

    前言 前一篇 高可用的Redis主从复制集群,从理论到实践 发布后,反响非常热烈.所以今天继续深入讲解redis集群的搭建和相关理论. 好吧,其实是因为上篇搭建的主从复制集群,还有一个实际问题不能解决 ...

最新文章

  1. 推荐一些视觉SLAM的深度学习方法(下)
  2. 一块CPU就能运行超逼真水流特效!胡渊鸣的算法被这样实现,本人看了都说好...
  3. SAXReader解析xml繁体字乱码问题
  4. Quartus II 订购版 和 网络版 软件功能 区别
  5. C++ struct结构体 实现搜索二叉树(BST)
  6. 高效的企业测试–测试框架(5/6)
  7. Python类对象的运算符add重载
  8. 缠论k线合并处理python实现_缠论期货:道琼斯工业指数缠论分解体系5F趋势背驰,3买能否构筑成功?...
  9. 秋天的第一杯奶茶,没喝到?那这个你绝对不能再错过
  10. 凸优化理论基础2——凸集和锥
  11. tensorflow pb模型获得权重wts
  12. nodejs解压缩zip文件:adm-zip
  13. 阿里云 Teambition 网盘亲测体验,秀翻全网!
  14. 使用FFmpeg设置视频文件的详细信息
  15. springboot 和 js (vue) 实现SM3加密 防篡改
  16. HTTP 首部:通用首部、请求首部、响应首部和实体首部
  17. opencv学习4——图像缩放
  18. 04_星仔带你学Java之流程语句(顺序结构、选择结构、循环结构、控制循环结构语句)
  19. 人行征信密码控件完美卸载(去除代理提示)
  20. vs2012运行项目报未能加载文件或程序集“System.Web.Mvc, Version=4.0.0.1,Culture=neutral”问题和解决方法...

热门文章

  1. python中for循环格式_如何将python中for循环的输出写入csv格式的文件?
  2. 接口自动化测试(Python+Requests+Unittest)
  3. oracle 模式_oracle专用模式修改为共享模式
  4. 数据结构和算法 D2
  5. 7.8 一阶常系数线性方程
  6. matlab ifft频率分辨率,[FFT] matlab中关于FFT的使用(理解频率分辨率、补零问题)
  7. mysql inno_mysql inno优化配置方法
  8. oracle虚拟机怎么拖到windows,如何使用Virtualbox从Windows 10拖放到Ubuntu 18 VM
  9. c语言利用参数方程绘图,CG实验1-利用C语言图形函数绘图概要1.doc
  10. linux shell运行脚本,Linux shell脚本中调用另一个shell(exec、source、fork)