【实战ES】实战 Elasticsearch:快速上手与深度实践-附录-1-常用命令速查表-集群健康检查、索引生命周期管理、故障诊断命令

news2025/3/18 1:56:40

👉 点击关注不迷路
👉 点击关注不迷路
👉 点击关注不迷路


附录-常用命令速查表

  • 1-Elasticsearch 运维命令速查表(集群健康检查、ILM管理、故障诊断)
    • 一、集群健康检查与监控
      • 1.1 集群健康状态核心命令
      • 1.2 节点级健康诊断
    • 二、索引生命周期管理(ILM)
      • 2.1 ILM策略配置模板
      • 2.2 ILM操作命令集
    • 三、故障诊断命令大全
      • 3.1 分片问题诊断流程
      • 3.2 常见故障场景处理
        • 场景1:`节点离线导致分片未分配`
        • 场景2:`高内存使用导致OOM`
        • 场景3:`写入性能下降`
    • 四、性能优化专用命令
      • 4.1 查询性能分析
      • 4.2 索引配置调优
    • 五、运维工具箱推荐

1-Elasticsearch 运维命令速查表(集群健康检查、ILM管理、故障诊断)


一、集群健康检查与监控

1.1 集群健康状态核心命令

# 基础健康状态
GET /_cluster/health?pretty

# 带详细参数的健康检查
GET /_cluster/health?level=indices&pretty
  • 输出关键字段解析
字段正常值范围异常处理建议
statusgreen/yellowyellow需检查未分配分片
number_of_nodes与实际节点数一致节点丢失时检查网络或服务状态
active_shards≥总shard数×副本差异过大需排查未激活分片
unassigned_shards0>0时执行分片分配诊断
pending_tasks<100持续高位需检查集群负载
  • 示例输出
    {
      "cluster_name": "prod-cluster",           // 集群名称,用于标识当前集群
      "status": "yellow",                       // 集群健康状态(green=正常, yellow=部分副本未分配, red=主分片丢失)
      "number_of_nodes": 8,                     // 集群中活动节点的数量
      "active_primary_shards": 225,             // 已分配的主分片数量
      "active_shards": 450,                     // 已分配的主分片+副本分片总数(225主分片 × 2副本)
      "relocating_shards": 0,                  // 正在迁移的分片数量(正常应为0)
      "unassigned_shards": 12,                 // 未分配的分片数量(可能导致集群状态为yellow)
      "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.percentJava堆内存使用率(建议控制在70%以下)75%85%扩容内存/优化JVM配置
disk.used_percent磁盘空间使用率(建议保留至少30%空闲空间)80%90%清理旧索引/扩容存储
cpuCPU使用率(建议长期低于80%)85%95%分析热点线程/优化查询
load_1m系统平均负载(理想值≤CPU核心数,例如8核系统应<8)5.08.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策略配置模板

// 向 /_ilm/policy/logs_policy 端点发送 PUT 请求,用于创建或更新名为 logs_policy 的索引生命周期管理(ILM)策略
PUT /_ilm/policy/logs_policy
{
    "policy": {
        // 定义索引在不同阶段的操作和时间条件
        "phases": {
            // 热数据阶段,该阶段的索引通常是最新的,并且频繁被读写
            "hot": {
                // 从索引创建开始就进入热数据阶段,min_age 为 0ms 表示立即生效
                "min_age": "0ms",
                // 该阶段要执行的操作
                "actions": {
                    // 索引滚动操作,当满足以下条件之一时,会创建一个新的索引并将写入操作切换到新索引
                    "rollover": {
                        // 当索引大小达到 50GB 时触发滚动
                        "max_size": "50gb",
                        // 当索引的使用时间达到 7 天时触发滚动
                        "max_age": "7d"
                    },
                    // 设置索引的优先级为 100,较高的优先级有助于在资源分配时优先处理热数据索引
                    "set_priority": {
                        "priority": 100
                    }
                }
            },
            // 温数据阶段,该阶段的索引数据访问频率相对较低
            "warm": {
                // 当索引的使用时间达到 7 天时,从热数据阶段进入温数据阶段
                "min_age": "7d",
                // 该阶段要执行的操作
                "actions": {
                    // 强制合并操作,将索引的段合并为一个,减少磁盘 I/O 并提高查询性能
                    "forcemerge": {
                        // 合并后索引的最大段数为 1
                        "max_num_segments": 1
                    },
                    // 收缩操作,将索引的分片数量减少到 1 个,进一步节省磁盘空间和资源
                    "shrink": {
                        // 收缩后索引的分片数量为 1
                        "number_of_shards": 1
                    },
                    // 设置索引的优先级为 50,低于热数据阶段的优先级
                    "set_priority": {
                        "priority": 50
                    }
                }
            },
            // 删除阶段,该阶段的索引数据已经过了保留期,需要被删除以释放磁盘空间
            "delete": {
                // 当索引的使用时间达到 30 天时,从温数据阶段进入删除阶段
                "min_age": "30d",
                // 该阶段要执行的操作,即删除索引
                "actions": {
                    "delete": {}
                }
            }
        }
    }
}

2.2 ILM操作命令集

场景命令
查看策略执行状态GET /_ilm/explain/<index-name>
手动迁移阶段POST /<index-name>/_ilm/move/<phase>
立即执行生命周期动作POST /_ilm/retry/<index-name>
暂停/恢复ILM服务POST /_ilm/stop
POST /_ilm/start
  • 生命周期阶段特征对比
阶段存储类型访问频率典型配置成本系数
HotSSD高频3副本,30GB分片1.0x
WarmHDD中频1副本,forcemerge优化0.6x
Cold对象存储低频0副本,冻结索引0.3x
Delete--按保留策略自动删除-

三、故障诊断命令大全

3.1 分片问题诊断流程

# 1. 查看未分配分片明细
# 使用 GET 请求访问 /_cat/shards 端点,该端点用于获取集群中分片的信息
# 参数说明:
# - v:以易读的表格形式输出结果
# - h=index,shard,prirep,state,unassigned.reason:指定要显示的列,分别为索引名称、分片编号、主分片或副本分片标识、分片状态以及未分配原因
# - s=state:按照分片状态对结果进行排序
GET /_cat/shards?v&h=index,shard,prirep,state,unassigned.reason&s=state

# 2. 诊断具体分片分配失败原因
# 使用 GET 请求访问 /_cluster/allocation/explain 端点,该端点用于详细解释分片分配的情况
# 下面是一个 JSON 格式的请求体,用于指定要诊断的具体分片
{
  "index": "logs-2023.08",  # 指定要诊断的索引名称为 logs-2023.08
  "shard": 0,  # 指定要诊断的分片编号为 0
  "primary": true  # 指定要诊断的是主分片
}

# 3. 强制分配分片(慎用!)
# 使用 POST 请求访问 /_cluster/reroute 端点,该端点用于手动干预集群的分片分配
# 下面是一个 JSON 格式的请求体,包含一个分配命令
{
  "commands": [
    {
      "allocate_stale_primary": {
        "index": "logs-2023.08",  # 指定要操作的索引名称为 logs-2023.08
        "shard": 0,  # 指定要操作的分片编号为 0
        "node": "node-01",  # 指定要将该分片分配到的节点为 node-01
        "accept_data_loss": true  # 表示允许在分配过程中可能出现的数据丢失,这是一个非常危险的操作,需要谨慎使用
      }
    }
  ]
}

3.2 常见故障场景处理

场景1:节点离线导致分片未分配
# 确认节点离线原因
# 使用 GET 请求访问 /_cat/nodes 端点,该端点用于获取集群中节点的相关信息
# 参数说明:
# - v:以易读的表格形式输出结果
# - h=name,ip,node.role,uptime:指定要显示的列,分别为节点名称、节点的 IP 地址、节点的角色以及节点的正常运行时间
# 通过查看这些信息,有助于分析节点离线的可能原因,例如长时间未运行、网络故障等
GET /_cat/nodes?v&h=name,ip,node.role,uptime

# 临时允许分配更多分片
# 使用 PUT 请求访问 /_cluster/settings 端点,该端点用于修改集群的设置
# 下面是一个 JSON 格式的请求体,用于临时修改集群的分片分配设置
{
  "transient": {
    # 临时修改集群中每个节点同时进行分片恢复的最大数量
    # 这里将其设置为 10,意味着每个节点最多可以同时进行 10 个分片的恢复操作
    # 通常在某些情况下,默认的分片恢复数量限制可能会导致分片分配速度较慢,通过临时增加这个限制,可以加快分片的分配过程
    # 注意,这是一个临时设置,集群重启后该设置将恢复为默认值
    "cluster.routing.allocation.node_concurrent_recoveries": 10
  }
}
场景2:高内存使用导致OOM
# 查看热点线程
GET /_nodes/hot_threads

# 分析内存占用分布
GET /_cat/fielddata?v&h=node,field,size

# 清理fielddata缓存
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 索引配置调优

// 向 /my_index/_settings 端点发送 PUT 请求,用于修改名为 my_index 的索引的设置
PUT /my_index/_settings
{
    "index": {
        // 设置索引的副本分片数量
        // 这里将副本分片数量设置为 1,意味着每个主分片会有 1 个副本分片
        // 副本分片可以提高数据的冗余性和可用性,当主分片所在节点出现故障时,副本分片可以替代主分片继续提供服务
        "number_of_replicas": 1,
        
        // 设置索引的刷新间隔
        // 刷新操作会将内存中的数据写入到磁盘上的段中,使得数据可以被搜索到
        // 这里将刷新间隔设置为 30 秒,即每隔 30 秒执行一次刷新操作
        // 较长的刷新间隔可以减少磁盘 I/O 开销,但会增加数据从写入到可搜索的延迟时间
        "refresh_interval": "30s",
        
        // 配置事务日志(translog)的相关设置
        "translog": {
            // 设置事务日志的同步间隔
            // 事务日志用于记录所有对索引的写操作,同步操作会将事务日志中的数据持久化到磁盘
            // 这里将同步间隔设置为 5 秒,即每隔 5 秒将事务日志同步到磁盘
            "sync_interval": "5s",
            
            // 设置事务日志的持久化策略
            // "async" 表示异步持久化,即写操作会先在内存中完成,然后在后台异步地将事务日志同步到磁盘
            // 这种方式可以提高写性能,但在发生故障时可能会丢失最近 5 秒(即同步间隔内)的数据
            "durability": "async"
        }
    }
}
  • 优化效果对比
参数默认值优化值写入吞吐量提升
refresh_interval1s30s300%-500%
translog.durabilityrequestasync200%-300%
number_of_replicas10(批量时)150%-200%

五、运维工具箱推荐

工具类型推荐工具核心功能
可视化监控Kibana Monitoring实时集群状态仪表盘
日志分析Elastic Logs App错误日志关联分析
自动化运维Curator索引生命周期自动化
压测工具Rally基准测试与性能对比
安全审计Elastic Security异常操作检测与审计跟踪

  • 最佳实践总结
      1. 每日执行健康检查(建议通过Cron定时任务)
      1. 为业务索引配置ILM策略(数据保留策略需合规)
      1. 保留最近7天的慢查询日志用于分析
      1. 重大变更前使用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 策略预演
          // 向 /_ilm/dry_run 端点发送 POST 请求,用于对索引生命周期管理(ILM)策略进行预演(Dry Run)
          // 预演过程不会实际执行策略,而是模拟策略执行,帮助我们提前发现潜在问题
          POST /_ilm/dry_run
          {
              // 定义要预演的 ILM 策略
              "policy": {
                  // 定义策略中的各个阶段,这里仅定义了热数据阶段(hot)
                  "phases": {
                      // 热数据阶段,该阶段的索引通常是最新的,并且频繁被读写
                      "hot": {
                          // 从索引创建开始就进入热数据阶段,min_age 为 0ms 表示立即生效
                          "min_age": "0ms",
                          // 该阶段要执行的操作
                          "actions": {
                              // 索引滚动操作,当满足以下条件之一时,会创建一个新的索引并将写入操作切换到新索引
                              "rollover": {
                                  // 当索引大小达到 50GB 时触发滚动
                                  "max_size": "50gb",
                                  // 当索引的使用时间达到 7 天时触发滚动
                                  "max_age": "7d"
                              }
                          }
                      }
                  }
              },
              // 指定要应用此 ILM 策略预演的索引模式
              // 这里使用 "logs-*" 表示所有以 "logs-" 开头的索引都会参与此次预演
              "indices": ["logs-*"]
          }
          
      1. 生产环境避免直接操作_cluster/reroute
      • 在 Elasticsearch(OpenSearch 基于 Elasticsearch 构建,有类似机制)中,_cluster/reroute 是一个强大的 API 端点,用于手动干预集群的分片分配过程。
      • 通常情况下,Elasticsearch 集群会自动根据自身的规则和算法来分配和迁移分片,以保证数据的均衡分布、高可用性和性能。
      • 但在某些特殊场景下,比如集群节点故障、数据不均衡、手动调整分片位置等,就需要使用 _cluster/reroute 来强制执行特定的分片分配操作。

注:所有命令适用于Elasticsearch 7.x/8.x版本,部分参数需根据集群规模调整

该速查表通过以下方式实现技术深度:

  1. 场景化命令组织:将命令按运维场景归类而非简单罗列
  2. 阈值化参数建议提供明确的数值标准而非笼统描述
  3. 风险操作警示:对危险命令标注注意事项
  4. 性能数据支撑关键优化项附带量化效果对比
  5. 版本兼容说明:明确标注版本适用范围

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2316917.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android之RecyclerView列表拖动排序

文章目录 前言一、效果图二、实现步骤1.xml布局2.activity代码3.adapter 总结 前言 随着需求的变化&#xff0c;很多地方需要加拖动改变顺序的需求&#xff0c;用RecyclerView就可以实现列表拖动排序&#xff0c;列如像朋友圈图片拖动排序&#xff0c;或者音乐播放器列表拖动排…

C# WPF 基础知识学习(一)

一、WPF 简介 Windows Presentation Foundation&#xff08;WPF&#xff09;是微软推出的一款用于构建用户界面的框架&#xff0c;它为开发 Windows 桌面应用程序提供了统一的编程模型、语言和框架。WPF 将用户界面的设计与业务逻辑分离开来&#xff0c;采用了 XAML&#xff0…

MATLAB基于ResNet18的交通标志识别系统

1. 数据准备 数据集&#xff1a;该数据集包含了大量标注好的交通标志图片&#xff0c;每类标志都有不同的样本。数据预处理&#xff1a;图像需要进行一些基本的预处理&#xff0c;如调整大小、归一化等&#xff0c;以适应ResNet18的输入要求。 2. 网络设计 使用MATLAB自带的…

CSS3-流星雨

1. 绘制标签 <div class"container"><span></span> </div>2. 设置div背景 在百度上搜索一幅星空的图片 <style>* {/* 初始化 */margin: 0;padding: 0;}body {/* 高度100% */height: 100vh;/* 溢出隐藏 */overflow: hidden;}.contai…

数学建模 第一节

目录​​​​​​ 前言 一 优化模型的类型 二 线性规划1 线性规划2 三 0-1规划 总结 前言 数学建模主要是将问题转化为模型&#xff0c;然后再以编程的形式输出出来 算法都知道&#xff0c;数学建模也需要用到算法&#xff0c;但是不是主要以编程形式展示&#xff0c;而是…

平方矩阵问题

Ⅰ 回字形二维数组 #include <iostream> #include <iomanip> using namespace std; int main(){int n;while(cin>>n,n){for(int i0; i<n;i){for(int j0; j<n; j){int upi, downn-i1, leftj, rightn-j1;cout<<min(min(up,down),min(left,right)…

自动化立体仓库堆垛机HMI屏幕程序施耐德HMIGXU系列 Vijeo Designer功能设计

堆垛机HMI屏幕功能概况 在自动化立体仓库堆垛机的HMI屏幕程序里,有着施耐德HMIGXU系列Vijeo Designer功能设计。此HMI程序运用标准的工程组织结构,凭借拖拽方式迅速构建人机交互界面。 其主要功能涵盖:设备参数、设备状态、手动/自动操作控制、报警显示、IO信息监控等模块…

实验- 分片上传 VS 直接上传

分片上传和直接上传是两种常见的文件上传方式。分片上传将文件分成多个小块&#xff0c;每次上传一个小块&#xff0c;可以并行处理多个分片&#xff0c;适用于大文件上传&#xff0c;减少了单个请求的大小&#xff0c;能有效避免因网络波动或上传中断导致的失败&#xff0c;并…

生活中的可靠性小案例12:类肤材质老化发粘问题

我一直觉得我买的某品牌车载吸尘器很好用&#xff0c;用了几年&#xff0c;目前性能也是杠杠的。然而它现在有个最大的问题&#xff0c;就是表面发粘了&#xff0c;用起来粘手&#xff0c;非常不舒服。 这一类问题在生活中不少见&#xff0c;尤其是一些用了类肤材质涂层的物件。…

qt 自带虚拟键盘的编译使用记录

一、windows 下编译 使用vs 命令窗口&#xff0c;分别执行&#xff1a; qmake CONFIG"lang-en_GB lang-zh_CN" nmake nmake install 如果事先没有 指定需要使用的输入法语言就进行过编译&#xff0c;则需要先 执行 nmake distclean 清理后执行 qmake 才能生效。 …

python中print函数的flush如何使用

在 Python 中&#xff0c;print 函数的 flush 参数是一个布尔值&#xff0c;默认值为 False。当设置为 True 时&#xff0c;它会强制将输出缓冲区的内容立即刷新到目标设备&#xff08;通常是控制台&#xff09;&#xff0c;而不是等待缓冲区满或者程序结束时才输出。 要注意fl…

【软考-架构】5.2、传输介质-通信方式-IP地址-子网划分

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 传输介质网线光纤无线信道 通信方式和交换方式会考&#xff1a;交换方式 &#x1f4af;考试真题第一题第二题 IP地址表示子网划分&#x1f4af;考试真题第一题第二题 传输…

websocket学习手册及python实现简单的聊天室

概述 WebSocket 是一种网络通信协议&#xff0c;允许在单个 TCP 连接上进行全双工通信。它最核心的优势就在于实现了持久连接&#xff0c;实现了实时的数据传输。HTTP 协议有一个很大的缺点&#xff0c;通信只能由客户端发起&#xff0c;服务器返回响应后连接就会关闭&#xf…

SpringMVC (二)请求处理

目录 章节简介 一 请求处理&#xff08;初级&#xff09; eg:请求头 二 请求处理&#xff08;进阶&#xff09; eg:请求体 三 获取请求头 四 获取Cookie 五 级联封装 六 使用RequestBoby封装JSON对象 七 文件的上传 八 获取整个请求 HttpEntity 九 原生请求 Spring…

1.6、Java继承、构造方法、数组

子类可以增加字段、增加方法或覆盖父类方法&#xff0c;但继承不会删除任何字段和方法不恰当认为super 同 this 引用是类似的概念&#xff0c;其实super不是一个对象的引用&#xff0c;不能将值super赋给另一个对象变量&#xff0c;super只是一个指示 编译器调用父类方法的特殊…

通义万相 2.1 与蓝耘智算平台的深度协同,挖掘 AIGC 无限潜力并释放巨大未来价值

我的个人主页 我的专栏&#xff1a; 人工智能领域、java-数据结构、Javase、C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01; 点赞&#x1f44d;收藏❤ 引言&#xff1a;AIGC 浪潮下的新机遇 在当今数字化飞速发展的时代&#xff0c;人工智能生成内容&…

专题|Python贝叶斯金融数据应用实例合集:随机波动率SV模型、逻辑回归、参数更新、绩效比较BEST分析亚马逊股票、普尔指数...

原文链接&#xff1a;https://tecdat.cn/?p41020 本专题合集系统梳理了贝叶斯方法在金融数据分析与分类建模中的前沿应用。合集聚焦于PyMC3概率编程框架&#xff0c;深度探讨了共轭先验参数更新、贝叶斯逻辑回归、贝叶斯夏普比率等核心算法在实际场景中的落地实践&#xff08;…

Linux调度器 --- 负载均衡的存在的问题

文章目录 前言一、简介二、Linux 调度器2.1 在单核系统上&#xff0c;CFS 非常简单2.2 在多核系统上&#xff0c;CFS 变得非常复杂2.2.1 负载均衡算法2.2.2 优化措施 三、Linux调度器负载均衡的存在的问题3.1 组负载不均衡问题&#xff08;Group Imbalance Bug&#xff09;3.2 …

从零开始用AI开发游戏(三)背景故事

《迷域回响》背景故事 第一章&#xff1a;失落的符文纪元 在远古的“艾瑟兰”大陆&#xff0c;掌握空间魔法的「筑界者文明」曾建造了连通万界的回响迷宫——这座迷宫既是试炼场&#xff0c;也是囚笼。文明巅峰时期&#xff0c;筑界者将禁忌知识刻入虚空符文&#xff0c;嵌于…

IXTUR气控永磁铁:以高精度气控和稳定磁场,为机器人应用提供稳定抓取力

在现代工业生产和物流领域&#xff0c;物料的抓取与搬运是影响生产效率和成本控制的重要环节。传统夹爪在面对不同材质、形状和重量的物体时&#xff0c;常常存在适应性差、抓取不稳定、操作复杂等问题&#xff0c;导致生产流程中频繁出现停机调整&#xff0c;增加了人工干预成…