场景介绍
在 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 使用姿势,可以参考官方文档。
参考文档