背景
生产上有个 olap 集群,因业务特殊性,导致集群中索引数和索引分片数特别多,集群元数据信息特别庞大,通过 _cat/indices,_cat/shards命令去获取索引信息时耗时会特别长,可能导致集群卡顿,影响业务查询、写入,而且会返回超时。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bz0iUoFN-1588584739190)(F:\Typora_picturesPath\image-20200504170329530.png)]](https://i-blog.csdnimg.cn/blog_migrate/154791674f993c64fb1d6128228f9809.png)
针对返回超时,解决方案是直接在 Linux 机器上,通过 curl 命令,将结果写入到文件里。eg:
curl -XGET http://ip:esClusterHttpPort/_cat/shards?v >shards # 注意:如果 _cat/shards?v 后面要加其余参数,如 _cat/shards?v&s=node,则要对 & 符号进行转义: curl -XGET http://ip:esClusterHttpPort/_cat/shards?v\&s=node >shards
索引状态文件
_cat/shards命令比 _cat/indices命令所需消耗的集群资源更少,响应更快,但是无法获取到索引的UUID。
生产上出现问题时,可直接通过在Linux机器上,获取到问题索引的UUID,然后进入索引目录下,根据索引状态文件(格式:state-*.st)定位到具体索引名称后,再根据_cat/shards/indexName,_cat/indices/indexName命令,去获取单个索引的信息。
索引状态文件路径:由 elasticsearch.yml 中 path.data 配置的路径确定。eg:
path.data/nodes/0/indices/索引UUID/_state/
找到以 *.st 结尾的状态文件后,vim 打开是乱码(因为 *.st 是二进制文件),但仍可以辨别出索引名称。eg:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ETj12cKt-1588584739210)(F:\Typora_picturesPath\image-20200504173039144.png)]](https://i-blog.csdnimg.cn/blog_migrate/d51e48eb715ee0c007e1646e11202358.png)
从图中可分辨出索引名称为:.monitoring-es-6-2019.10.29
在OLAP集群中,由于大量索引和分片导致通过常规命令获取索引信息耗时过长,可能影响业务。解决方法是在Linux上使用curl将结果写入文件,通过索引状态文件(state-*.st)来定位索引名称。这种方法响应快且资源消耗少,但无法获取详细信息。当需要特定索引信息时,可根据path.data配置找到状态文件,尽管显示为乱码,但仍能识别出索引名。
1161

被折叠的 条评论
为什么被折叠?



