使用Logstash生成测试数据

容器与中间件中间件技术服务知识库
场景介绍

在 Logstash 中,整个 pipleline 分为三个部分:

  • input 插件用于提取数据。
  • filter 插件用于转换并丰富数据。
  • output 插件会将已处理的事件加载到其他环境中,例如 ElasticSearch 。

本文介绍如何使用 Logstash 生成测试数据。

操作步骤

运行版本

  • logstash 7.10.2
  • 云搜索 7.10.2

Logstash 配置

准备 Logstash 配置文件

(base) [root@rudonx logstash-7.10.2]# cat conf/loggen.conf 
input {
  generator {
    lines => [
      '{"event_id": "UUID", "log_text": "RANDOM_TEXT"}'
    ]
    count => 10
    codec => "json"
  }
}

filter {
  ruby {
    code => '
      require "securerandom"
      event.set("event_id", SecureRandom.uuid)
      event.set("log_text", SecureRandom.alphanumeric(10))
    '
  }

  mutate {
    add_field => { "write_time" => "%{[@timestamp]}" }
    remove_field => ["@version","host","@timestamp"]
  }
}

output {
 elasticsearch {
    hosts => ["https://xxxxxx.ivolces.com:9200"]
    index => "exampleindex"
    user => "username"
    password => "password"
    ssl => false
    ssl_certificate_verification => false
  }
  stdout { codec => rubydebug }
}

配置解读

input

  • 使用 generator input plugin 生成事件流
  • count 指定生成的 doc 数量
  • lines 包含一个事件模板,定义了事件的结构

filter

  • 使用 ruby filter plugin 执行相关代码逻辑
  • 随机生成的 UUID 赋值给 event_id
  • 生成随机字符赋值给 log_text
  • 使用 mutate filter plugin 对数据进行处理,将 logstash 自动生成的 @timestamp 赋值给新字段 write_time
  • 去除 ["@version","host","@timestamp"] 字段

output

  • 指定云搜索服务的主机、索引、用户认证信息及 SSL 验证信息。
  • stdout 输出用于调试,它会输出 Logstash 处理后的事件。

运行 Logstash

(base) [root@rudonx logstash-7.10.2]# bin/logstash -f conf/loggen.conf

生成的测试数据如下:

{
      "sequence" => 5,
      "event_id" => "a0a1323e-209f-4cc9-8ec1-1d1a468991fd",
    "write_time" => "2023-11-21T11:51:22.313Z",
      "log_text" => "iGF92oD2qT"
}
{
      "sequence" => 6,
      "event_id" => "4b463518-3cfd-4fb3-a62a-086d7c891021",
    "write_time" => "2023-11-21T11:51:22.313Z",
      "log_text" => "oW5U8ENilC"
}

Logstash 功能非常强大,使用 generator input plugin,我们可以根据需求来模拟大量测试数据。更多 Logstash 使用姿势,可以参考官方文档。

参考文档
0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论