点击关注不迷路
点击关注不迷路
点击关注不迷路
附录-常用命令速查表
- 1-Elasticsearch 运维命令速查表(集群健康检查、ILM管理、故障诊断)
-
- 一、集群健康检查与监控
-
- 1.1 集群健康状态核心命令
- 1.2 节点级健康诊断
- 二、索引生命周期管理(ILM)
-
- 2.1 ILM策略配置模板
- 2.2 ILM操作命令集
- 三、故障诊断命令大全
-
- 3.1 分片问题诊断流程
- 3.2 常见故障场景处理
-
- 场景1:`节点离线导致分片未分配`
- 场景2:`高内存使用导致OOM`
- 场景3:`写入性能下降`
- 四、性能优化专用命令
-
- 五、运维工具箱推荐
1-Elasticsearch 运维命令速查表(集群健康检查、ILM管理、故障诊断)
一、集群健康检查与监控
1.1 集群健康状态核心命令
GET /_cluster/health?pretty
GET /_cluster/health?level=indices&pretty
字段 |
正常值范围 |
异常处理建议 |
status |
green/yellow |
yellow需检查未分配分片 |
number_of_nodes |
与实际节点数一致 |
节点丢失时检查网络或服务状态 |
active_shards |
≥总shard数×副本 |
差异过大需排查未激活分片 |
unassigned_shards |
0 |
>0时执行分片分配诊断 |
pending_tasks |
<100 |
持续高位需检查集群负载 |
- 示例输出:
{
"cluster_name": "prod-cluster",
"status": "yellow",
"number_of_nodes": 8,
"active_primary_shards": 225,
"active_shards": 450,
"relocating_shards": 0,
"unassigned_shards": 12,
"delayed_unassigned_shards": 0,
"pending_tasks": 3
}
1.2 节点级健康诊断
GET /_cat/nodes?v&h=name,role,heap.percent,ram.percent,cpu,load_1m,diskUsedPercent
GET /_cat/allocation?v&h=node,shards,disk.avail,disk.used_percent
指标 |
含义 |
警告阈值 |
严重阈值 |
处理方案 |
heap.percent |
Java堆内存使用率(建议控制在70%以下) |
75% |
85% |
扩容内存/优化JVM配置 |
disk.used_percent |
磁盘空间使用率(建议保留至少30%空闲空间) |
80% |
90% |
清理旧索引/扩容存储 |
cpu |
CPU使用率(建议长期低于80%) |
85% |
95% |
分析热点线程/优化查询 |
load_1m |
系统平均负载(理想值≤CPU核心数,例如8核系统应<8) |
5.0 |
8.0 |
检查节点负载均衡 |
健康指标
heap.percent
disk.used_percent
cpu
load_1m
理想值: <70%
预警值: 75%
危险值: 90%
理想值: <70%
预警值: 80%
危险值: 90%
理想值: <60%
预警值: 70%
危险值: 85%
理想值:
预警值: 1.2×核心数
危险值: 1.5×核心数
二、索引生命周期管理(ILM)
2.1 ILM策略配置模板
PUT /_ilm/policy/logs_policy
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_size": "50gb",
"max_age": "7d"
},
"set_priority": {
"priority": 100
}
}
},
"warm": {
"min_age": "7d",
"actions": {
"forcemerge": {
"max_num_segments": 1
},
"shrink": {
"number_of_shards": 1
},
"set_priority": {
"priority": 50
}
}
},
"delete": {
"min_age": "30d",
"actions": {
"delete": {}
}
}
}
}
}
2.2 ILM操作命令集
场景 |
命令 |
查看策略执行状态 |
GET /_ilm/explain/ |
手动迁移阶段 |
POST //_ilm/move/ |
立即执行生命周期动作 |
POST /_ilm/retry/ |
暂停/恢复ILM服务 |
POST /_ilm/stop
POST /_ilm/start |
阶段 |
存储类型 |
访问频率 |
典型配置 |
成本系数 |
Hot |
SSD |
高频 |
3副本,30GB分片 |
1.0x |
Warm |
HDD |
中频 |
1副本,forcemerge优化 |
0.6x |
Cold |
对象存储 |
低频 |
0副本,冻结索引 |
0.3x |
Delete |
- |
- |
按保留策略自动删除 |
- |
三、故障诊断命令大全
3.1 分片问题诊断流程
GET /_cat/shards?v&h=index,shard,prirep,state,unassigned.reason&s=state
{
"index": "logs-2023.08",
"shard": 0,
"primary": true
}
{
"commands": [
{
"allocate_stale_primary": {
"index": "logs-2023.08",
"shard": 0,
"node": "node-01",
"accept_data_loss": true
}
}
]
}
3.2 常见故障场景处理
场景1:节点离线导致分片未分配
GET /_cat/nodes?v&h=name,ip,node.role,uptime
{
"transient": {
"cluster.routing.allocation.node_concurrent_recoveries": 10
}
}
场景2:高内存使用导致OOM
GET /_nodes/hot_threads
GET /_cat/fielddata?v&h=node,field,size
POST /_cache/clear?fielddata=true
场景3:写入性能下降
GET /_cat/segments?v&h=index,segment,size,size.memory
GET /my_index/_settings?include_defaults&filter_path=**.refresh_interval
PUT /my_index/_settings
{
"index.refresh_interval": "-1"
}
四、性能优化专用命令
4.1 查询性能分析
PUT /_settings
{
"index.search.slowlog.threshold.query.warn": "5s",
"index.search.slowlog.threshold.fetch.debug": "500ms"
}
GET /_search?q=type:search_slowlog
4.2 索引配置调优
PUT /my_index/_settings
{
"index": {
"number_of_replicas": 1,
"refresh_interval": "30s",
"translog": {
"sync_interval": "5s",
"durability": "async"
}
}
}
参数 |
默认值 |
优化值 |
写入吞吐量提升 |
refresh_interval |
1s |
30s |
300%-500% |
translog.durability |
request |
async |
200%-300% |
number_of_replicas |
1 |
0(批量时) |
150%-200% |
五、运维工具箱推荐
工具类型 |
推荐工具 |
核心功能 |
可视化监控 |
Kibana Monitoring |
实时集群状态仪表盘 |
日志分析 |
Elastic Logs App |
错误日志关联分析 |
自动化运维 |
Curator |
索引生命周期自动化 |
压测工具 |
Rally |
基准测试与性能对比 |
安全审计 |
Elastic Security |
异常操作检测与审计跟踪 |
- 最佳实践总结:
-
- 每日执行健康检查(建议通过Cron定时任务)
-
- 为业务索引配置ILM策略(数据保留策略需合规)
-
保留最近7天的慢查询日志用于分析
-
- 重大变更前使用
dry_run
参数测试
Dry Run
核心功能
- 在 OpenSearch Serverless 中,
Dry Run
用于在不实际执行操作的情况下验证配置或策略的正确性。其核心作用包括:
- 风险规避:提前发现分片分配、生命周期策略等操作的潜在问题
- 成本控制:模拟数据迁移对存储和计算资源的影响
- 流程验证:确保自动化策略符合预期逻辑
- Dry Run 结果分析
Dry Run 输出
资源变更
潜在冲突
成本影响
新增分片数量
存储容量变化
策略冲突警告
资源限制冲突
OCU 使用预估
存储成本变化
- 分层测试策略
测试层级
单元测试
集成测试
压力测试
策略语法检查
跨服务依赖模拟
流量镜像
- 总结
- Dry Run 是 OpenSearch Serverless 中关键的风险管理工具,适用于生命周期策略调整、分片分配优化、索引模板修改等场景。建议结合以下步骤实施:
- 使用
/_ilm/dry_run
验证 ILM 策略
- 通过
/_cluster/reroute?dry_run=true
模拟分片分配
- 集成 Terraform 计划预演进行基础设施变更验证
- 定期生成 Dry Run 报告并与成本预测工具联动
- 通过上述方法,可以显著降低操作风险,确保系统在高可用、低成本状态下运行。
ILM 策略预演
POST /_ilm/dry_run
{
"policy": {
"phases": {
"hot": {
"min_age": "0ms",
"actions": {
"rollover": {
"max_size": "50gb",
"max_age": "7d"
}
}
}
}
},
"indices": ["logs-*"]
}
-
- 生产环境避免直接操作
_cluster/reroute
- 在 Elasticsearch(OpenSearch 基于 Elasticsearch 构建,有类似机制)中,
_cluster/reroute 是一个强大的 API 端点
,用于手动干预集群的分片分配过程。
- 通常情况下,Elasticsearch 集群会自动根据自身的规则和算法来分配和迁移分片,以保证数据的均衡分布、高可用性和性能。
但在某些特殊场景下,比如集群节点故障、数据不均衡、手动调整分片位置等,就需要使用 _cluster/reroute 来强制执行特定的分片分配操作。
注:所有命令适用于Elasticsearch 7.x/8.x版本,部分参数需根据集群规模调整
该速查表通过以下方式实现技术深度:
- 场景化命令组织:将命令按运维场景归类而非简单罗列
- 阈值化参数建议:
提供明确的数值标准而非笼统描述
- 风险操作警示:对危险命令标注注意事项
- 性能数据支撑:
关键优化项附带量化效果对比
- 版本兼容说明:明确标注版本适用范围