我正在从Logstash
解析Apache访问日志并将其索引到Elasticsearch
索引。我还索引了geoip
和agent
字段。虽然索引我观察到的elasticsearch索引大小比实际文件大小{磁盘上的空间大6.7x
大。所以我只想了解这是正确的行为还是我在这里做错了什么?我使用的是Elasticsearch 5.0
,Logstash 5.0
和Kibana 5.0
版本。我也试过了best_compression,但它的磁盘大小相同。这是我到目前为止尝试的配置文件的完整观察。
我的观察结果:
使用案例1:
Apache Log file Size
:211 MB
Total number of lines
:1,000,000
Index Size
:1.5 GB
Observation
:索引比文件大小6.7x
大。
使用案例2:
我找到了一些压缩elasticsearch索引的解决方案,然后我也尝试了。
- Disable `_all` fields
- Remove unwanted fields that has been created by `geoip` and `agent` parsing.
- Enable `best_compression` [ index.codec": "best_compression"]
Apache Log file Size
:211 MB
Total number of lines
:1,000,000
Index Size
:1.3 GB
Observation
:索引6.16x
大于文件大小
日志文件格式:
127.0.0.1 - - [24/Nov/2016:02:03:08 -0800] "GET /wp-admin HTTP/1.0" 200 4916 "http://trujillo-carpenter.com/" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 5.01; Trident/5.1)"
我发现Logstash + Elasticsearch Storage Experients他们说他们的索引规模从 6.23x 减少到 1.57x 。但这是非常古老的解决方案,这些解决方案不再适用于Elasticsearch 5.0
。
我已经尝试了一些参考:
- Part 2.0: The true story behind Elasticsearch storage requirements
- https://github.com/elastic/elk-index-size-tests
当您的目的只显示Kibana上的可视化时,有没有更好的方法来优化Elasticseach索引大小?
答案 0 :(得分:0)
由于索引设置未应用于索引,我遇到了此问题。我的索引名称和模板名称不同。使用相同的模板名称和索引名称后,正确应用压缩。
在下面的示例中,我使用了索引名称apache_access_logs
和模板名称elk_workshop
。
共享更正的模板和logstash配置。
Logstash.conf
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "apache_access_logs"
template => "apache_sizing_2.json"
template_name => "apache_access_logs" /* it was elk_workshop */
template_overwrite => true
}
}
模板:
{
"template": "apache_access_logs", /* it was elk_workshop */
"settings": {
"index.refresh_interval": "5s",
"index.refresh_interval": "30s",
"number_of_shards": 5,
"number_of_replicas": 0
},
..
}