1. CPU使用率是否存在风险
2. 磁盘使用率是否存在风险
3. 内存使用率是否存在风险
3.1. JVM堆内存使用率
3.2. 节点内存使用率
需要到es所在ecs的物理节点上查看整个节点内存的使用率
4. IOPS 是否存在风险
IOPS(Input/Output Per Second):指每秒 I/O 请求的数量。
云盘性能及指标计算参考文档:https://help.aliyun.com/zh/ecs/user-guide/block-storage-performance?spm=a2c4g.11186623.0.i9
5. IO是否存在风险
6. data节点磁盘大小是否一致(是否存在数据节点 差异过大)
6.1. 控制台查看
6.2. GET ALLOCATION API
GET _cat/allocation?v # 查看 disk.total 即可 # shards disk.indices disk.used disk.avail disk.total disk.percent host ip node # 210 15.2gb 19.6gb 19.5gb 39.2gb 50 10.x 10.x mtEhu7m # 209 15.3gb 19.6gb 19.6gb 39.2gb 50 10.x 10.x lApeSqm
7. 是否存在程序挂机
近7天没有节点离线和索引不可用
8. jvm配置是否合理(是否与机型匹配)
节点内存分配(JVM堆内存)默认不支持用户修改,产品侧以官方最佳实践配置。
64G的规格一下,一半堆内存 一半堆外存 超过64的规格,堆内存32GB 其他全是堆外存,堆外存由Lucene实例使用。
9. 是否存在节点主机名不符合规范
节点名称默认生成,不支持修改
# 可通过如下两个命令或控制台查看名字 GET /_cat/nodes?v GET /_nodes/stats?human&pretty
10. 集群当前节点数与预设节点数是否相符
预设节点数 = 客户购买的节点数
集群当前节点数可以在监控或者控制台查看
11. 是否存在超大索引
# 可以根据所有节点存储的大小来观察是否有超常的超大索引 GET /_cat/indices?v&s=store.size:desc
12. 分片数与 节点数 差异较大
分片数最好是节点数的整数倍。
可以观察下索引的pri列与节点数的差异
GET /_cat/indices?v
13. 是否配置 node_left
index.unassigned.node_left.delayed_timeout,节点从集群中移除后,副本分片延迟分配的超时时间,默认是1min(分钟)
需要查看是否有默认pattern为[*]的template修改这一参数的默认值
GET /{索引名称} # 在setting中查看相关的配置
14. 是否存在关闭的索引
GET /_cat/indices?v # 查看 status 列是否有close的索引
15. 单node接近 1000个分片
GET _cat/allocation?v # 查看 shards 列是否超过额定数额
16. 单分片的文档数不超过 20E
- 单个分片的存储 doc 数为21亿(2,147,483,519),超过则无法写入。
GET /_cat/shards?v&s=docs:desc # 查看 docs 列是否超过额定数额
- 这里的doc数不光为shards中显示的doc count,还包含了delete的数据,可以通过如下的方式查看docs和indexing.delete_total的和是否超过指定阈值来判断巡检风险
GET _cat/shards{/某索引}?v&h=index,shard,prirep,docs,indexing.delete_total
17. 是否存在年久不用的 repo
GET /_cat/repositories?v # 通过上面的命令来看 repo都有哪些 # 至于是否年久不用 可以通过下面的snapshot来看 # aliyun_auto_snapshot 这个是云es默认的一个快照仓库
18. 是否存在 无用的 snapshot
GET /_snapshot/{repo的名称}/_all # 通过指定 repo的名称来看是否有最近的快照 start_time 和 end_time # 这个看了一下,目前没有命令能一下判断出来是否存在无用的snapshot,要不写个脚本,要不手动看