You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从已导入Elasticsearch及Kibana Discover的数据生成样本数据集并在Logstash测试

从Elasticsearch/Kibana生成样本数据集并在Logstash测试

一、导出Elasticsearch历史数据作为样本

  • 通过Elasticsearch的_search API批量抽取指定数量的样本数据,执行以下curl命令(替换你的ES地址和目标索引名):
    curl -X GET "http://your-es-host:9200/your-target-index/_search?pretty" -H "Content-Type: application/json" -d'
    {
      "size": 100,  # 根据需求调整样本数量
      "query": {
        "match_all": {}
      }
    }' > es_raw_sample.json
    
  • 若需要筛选特定时间范围或业务条件的样本,修改query段即可,例如抽取近7天的数据:
    {
      "size": 100,
      "query": {
        "range": {
          "@timestamp": {
            "gte": "now-7d/d",
            "lte": "now/d"
          }
        }
      }
    }
    
  • 处理导出的数据为Logstash兼容的单行JSON格式:
    使用jq工具提取核心数据字段并格式化:
    cat es_raw_sample.json | jq -c '.hits.hits[]._source' > es_cleaned_sample.json
    

二、抓取Kibana Discover的实时流入数据样本

  • 方法1:直接从Discover界面导出
    1. 打开Kibana Discover,设置目标时间范围(如最近15分钟)和筛选条件
    2. 点击右上角「导出」按钮,选择JSON格式下载,再用上述jq命令处理为单行JSON
  • 方法2:实时捕获写入ES的数据
    用curl持续查询最近1分钟内的新数据,生成实时样本:
    curl -X GET "http://your-es-host:9200/your-target-index/_search?pretty&scroll=1m" -H "Content-Type: application/json" -d'
    {
      "size": 50,
      "query": {
        "range": {
          "@timestamp": {
            "gte": "now-1m"
          }
        }
      }
    }' > realtime_raw_sample.json
    
    同样用jq处理为单行JSON格式:
    cat realtime_raw_sample.json | jq -c '.hits.hits[]._source' > realtime_cleaned_sample.json
    

三、在Logstash中测试样本数据集

  1. 编写Logstash测试配置文件(示例:sample_test.conf):
    input {
      file {
        path => "/absolute/path/to/es_cleaned_sample.json"  # 替换为你的样本文件路径
        start_position => "beginning"
        sincedb_path => "/dev/null"  # 强制每次启动都重新读取样本
        codec => "json"
      }
    }
    
    filter {
      # 这里替换为你的实际过滤逻辑,比如字段处理、Grok解析等
      mutate {
        rename => { "old_field_name" => "new_field_name" }
        add_tag => ["sample_test"]
      }
    }
    
    output {
      stdout {
        codec => rubydebug  # 在控制台输出处理后的结果,方便验证
      }
      # 可选:输出到测试索引验证最终效果
      # elasticsearch {
      #   hosts => ["http://your-es-host:9200"]
      #   index => "logstash_sample_test"
      # }
    }
    
  2. 启动Logstash运行测试:
    # 进入Logstash安装目录执行
    bin/logstash -f sample_test.conf
    
  3. 验证结果:
    • 查看控制台输出的rubydebug内容,确认过滤逻辑是否按预期执行
    • 若配置了ES输出,可在Kibana中查看logstash_sample_test索引的数据是否符合要求

内容的提问来源于stack exchange,提问作者Christina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:10:37