Elasticsearch 集群Cluster API(7.5.0)
1. cluster stats:集群统计信息,如jvm版本、内存使用、cpu等
A. 请求:GET /_cluster/stats | GET /_cluster/stats/nodes/<node_id>
路径参数:node_id是节点ID或名称,多个以逗号分隔
B. 结果信息
nodes下字段 | 说明 |
count | 节点总数、以及各角色节点数 |
versions | 版本信息 |
os | 操作系统信息:处理器数量、系统名称、内存等 |
jvm | java虚拟机信息:版本、内存、线程 |
fs | 文件系统信息 |
network_types | 网络信息 |
indices下字段 | 说明 |
count | 索引数 |
shards | 分片信息:总数、主分片数、副本分片数、以及最大、最小、均值 |
docs | 文档信息:文档数、删除的文档数 |
store | 存储大小 |
fielddata | 字段缓存信息 |
query_cache | 查询缓存信息 |
C. kibana操作
D. java编码
/** * 获取磁盘容量信息 * * @return map */ private Map<String, Long> getDiskSpace() { Request request = new Request(HttpMethod.GET.toString(), "/_cluster/stats"); Map<String, Long> map = new HashMap<>(4); try { Response response = restHighLevelClient.getLowLevelClient().performRequest(request); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { String content = EntityUtils.toString(response.getEntity()); // 获取nodes数据 Object obj = JSONUtil.toBean(content, Map.class).get("nodes"); // 获取节点数 Integer size = (Integer) ((Map) ((Map) obj).get("count")).get("total"); // 获取磁盘总容量 Long totalSpace = (Long) ((Map) ((Map) obj).get("fs")).get("total_in_bytes"); // 获取磁盘空闲容量 Long freeSpace = (Long) ((Map) ((Map) obj).get("fs")).get("free_in_bytes"); map.put("totalSpace", totalSpace / size); map.put("freeSpace", freeSpace / size); map.put("usableSpace", (totalSpace - freeSpace) / size); log.info(String.format("磁盘容量信息:%s", map.toString())); } else { log.info("获取磁盘容量信息失败"); } } catch (IOException e) { e.printStackTrace(); log.info("获取磁盘容量信息失败"); } return map; }
2. nodes stats:集群节点统计信息
A. 请求:GET /_nodes/stats | GET /_nodes/<node_id>/stats | GET /_nodes/stats/<metric>
路径参数:metric是将返回的信息限制为特定指标,如:fs、http、jvm等
B. 查询参数及返回结果:详见官网介绍
C. kibana操作
可参考:ES集群官网地址