logstash Opensearch -索引的最佳实践

kxe2p93d  于 2022-12-09  发布在  Logstash
关注(0)|答案(2)|浏览(307)

我有大约1 TB的旧apache日志数据,我想在Opensearch中建立索引。日志是每天的,结构如下:s3://bucket/logdata/year/year_month_day.json.gz
我计划使用logstash进行摄取,想知道索引的最佳方式来获得性能?我想每天进行索引,但如何从上面的日志文件名中提取日期,以便在logstash配置文件中正确获得它?
index = > "%{+YYYY.MM.dd}"将解决未来的日志文件,但如何解决旧的日志文件?

odopli94

odopli941#

您可以使用dissect filter这样做,dissect filter可以解析bucket键中的日期部分,并将日期重新构造到名为log_date的新字段中:

dissect {
    mapping => {
        "[@metadata][s3][key]" => "%{ignore}/logdata/%{+ignore}/%{year}_%{+month}_%{day}.json.gz"
    }
    add_field => {
       "log_date" => "%{year}-%{month}-%{day}"
    }
    remove_field => ["ignore"]
}

然后,在输出部分中,您可以引用该新字段,以便构建索引名称:

index = > "your-index-%{log_date}"

PS:另一种方法是将year_month_day部分解析为一个令牌,并使用mutate/gsub_字符替换为-

pepwfjgg

pepwfjgg2#

根据我的经验,每日指数可能很快就会失控:它们的大小差别很大,在适当的保留期内,集群可能会碎片过多,等等。我建议使用基于索引年龄(7天或30天,取决于日志记录量)和主碎片大小(通常阈值为50GB)的策略来设置ILM rollover
这样,您将获得最佳的索引和搜索性能,以及均匀的负载分布和资源使用。

相关问题