背景
由于有时候需要基于日志做一些处理,由官网得知,ES7.3.0发布的新特性 从保存的搜索中导出CSV,我们的Kibana刚好是7.3.0,于是将自己的使用经验及解决的问题,分享给有需要的小伙伴!
一、使用步骤
1-1 保存搜索
Discover -> 选择索引模式 -> 选择要显示字段 -> 输入你的查询条件 -> 选择时间范围 -> 点击保存
1-2 下载CSV报告
点击共享 -> CSV 报告 -> 生成CSV 报告
1-3 下载 CSV报告
- 下载完的报告也可以去 管理> Kibana > Reporting 中下载
1-4、查看下载的CSV
二、kibana 设置导出的csv文件大小
因为导出的csv有文件大小限制,默认是10M,如果你的数据量大于10M,那么csv只会下载10M大小的数据;
并且导出CSV报告Kibana是放入队列中执行的,有一个处理超时时间,默认是12000毫秒,也就是2分钟;
所以假如你的机器性能不好,处理时间长,或者数据量大于10M,那么你就有必要设置一下kibana关于CSV报告的参数:
vim kibana.yml
# csv文件大小200MB,默认为10485760(10MB)
xpack.reporting.csv.maxSizeBytes: 209715200
# 超时时间-30分钟,默认是120000(2分钟)
xpack.reporting.queue.timeout: 1800000
修改后,重启Kibana生效!!!
三、Kibana可能遇到的问题
3-1、启动时报如下错警告:
告警:xpack.reporting.csv.maxSizeBytes (209715200) is higher than ElasticSearch's http.max_content_length (104857600).
{"type":"log","@timestamp":"2020-09-27T03:29:49Z","tags":["reporting","warning"],"pid":12197,"message":"xpack.reporting.csv.maxSizeBytes (209715200) is higher than ElasticSearch's http.max_content_length (104857600). Please set http.max_content_length in ElasticSearch to match, or lower your xpack.reporting.csv.maxSizeBytes in Kibana to avoid this warning."}
原因:这是因为导出的csv最大的大小 大于 你的ES的http最大内容大小(默认为104857600 字节,即100M)
解决方案:这种情况需修改你的ES的配置文件,添加或修改ES参数http.max_content_length
vim /usr/local/elasticsearch/config/elasticsearch.yml
http.max_content_length: 200mb
3-2、下载CSV报告太大,导致Kibana宕掉
报错:FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
原因:nodejs 内存不足导致(kibana 前端是用node 实现的)
解决:kibana启动脚本添加 --max-old-space-size=4096
vim /usr/local/kibana/bin/kibana
四、如何删除CSV报告
可以看到在 管理> Kibana > Reporting 中 ,只有下载,并没有删除,
假如你下载了很多文件,其中有一些大文件,他们是存储在Elastic Search 中的,将会一直占用着系统的空间,
这里笔者找到一个删除他们的办法,步骤如下:
4-1、找到存储报告的 ES索引 和 文档ID
浏览器 > F12 > 查看请求 > 可以看到存储数据的索引和文档ID
由上图得到:
索引名称:.reporting-2020.09.13
文档ID:kf21o8fh1wxa81acaf182ei6
4-2、使用 Kibana的 开发者工具 删除 报告
开发工具 > Console页签 > 输入DSL语句 > 执行
DSL语句(换成你的索引名称和文档ID)
DELETE /.reporting-2020.09.13/_doc/kf21o8fh1wxa81acaf182ei6
执行结果如图:
五、参考资料
1、kibana 设置导出的csv文件大小
2、FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory