We've recently moved our centralized logging from Splunk to an ELK solution, and we have a need to export search results - is there a way to do this in Kibana 4.1? If there is, it's not exactly obvious...
Thanks!
答案 0 :(得分:8)
如果你想导出日志(不仅仅是时间戳和计数),你还有几个选择(tylerjl在Kibana forums上很好地回答了这个问题):
如果您希望实际从Elasticsearch导出日志,那么 可能想要将它们保存在某个地方,以便在浏览器中查看它们 可能不是查看数百或数千个日志的最佳方式。 这里有几个选项:
在“发现”标签中,您可以点击底部附近的箭头标签查看原始请求和响应。你可以点击“请求” 并使用它作为ES与curl(或类似的东西)的查询 查询ES以获取所需的日志。
您可以使用logstash或stream2es206转储索引的内容(使用可能的查询参数来获取 你想要的具体文件。)
答案 1 :(得分:1)
如果您在卷曲时遇到麻烦,或者您不需要自动程序从Kibana中提取日志,只需点击“响应”即可。得到你需要的东西。
遇到像xsrf令牌丢失之类的麻烦之后'使用卷曲时, 我发现这种方式更简单,更简单!
与其他人说的一样,单击底部附近的箭头选项卡后会出现“请求”按钮。
答案 2 :(得分:1)
这是非常老的帖子。但我认为仍然有人在寻找一个好的答案。
您可以轻松地从Kibana Discover导出搜索。
先单击保存,然后单击共享
点击 CSV报告
然后点击生成CSV
片刻之后,您会在右下方获得下载选项。
答案 3 :(得分:1)
这与Kibana v 7.2.0一起使用-将查询结果导出到本地JSON文件中。在这里,我假设您使用的是Chrome,类似的方法可能适用于Firefox。
[cURL from step 4] > query_result.json
答案 4 :(得分:0)
仅导出时间戳和当时的消息计数,而不是日志信息:
1441240200000,1214 1441251000000,1217 1441261800000,1342 1441272600000,1452 1441283400000,1396 1441294200000,1332 1441305000000,1332 1441315800000,1334 1441326600000,1337 1441337400000,1215 1441348200000,12523 1441359000000,61897
" 2015年9月3日,06:00:00.000"," 1,214" " 2015年9月3日,09:00:00.000"," 1,217" " 2015年9月3日,12:00:00.000"," 1,342" " 2015年9月3日,15:00:00.000"," 1,452" " 2015年9月3日,18:00:00.000"," 1,396" " 2015年9月3日,21:00:00.000"," 1,332" " 2015年9月4日,00:00:00.000"," 1,332" " 2015年9月4日,03:00:00.000"," 1,334" " 2015年9月4日,06:00:00.000"," 1,337" " 2015年9月4日,09:00:00.000"," 1,215" " 2015年9月4日,12:00:00.000"," 12,523" " 2015年9月4日,15:00:00.000"," 61,897"
答案 5 :(得分:0)
@Sean的答案是正确的,但缺乏细节。
这是一个快速实用的脚本,可以通过httpie从ElasticSearch捕获所有日志,通过jq解析并写出它们,并使用滚动光标迭代查询,以便可以存储前500个以上的条目。已捕获(不同于此页面上的其他解决方案)。
此脚本是通过httpie(http
命令)和鱼壳实现的,但可以很容易地适应bash和curl等更标准的工具。
根据@Sean的答案设置查询:
在“发现”标签中,您可以点击底部附近的箭头标签 查看原始请求和响应。您可以单击“请求”,然后 使用它作为对带有curl(或类似内容)的ES的查询 获取所需的日志。
set output logs.txt
set query '<paste value from Discover tab here>'
set es_url http://your-es-server:port
set index 'filebeat-*'
function process_page
# You can do anything with each page of results here
# but writing to a TSV file isn't a bad example -- note
# the jq expression here extracts a kubernetes pod name and
# the message field, but can be modified to suit
echo $argv | \
jq -r '.hits.hits[]._source | [.kubernetes.pod.name, .message] | @tsv' \
>> $output
end
function summarize_string
echo (echo $argv | string sub -l 10)"..."(echo $argv | string sub -s -10 -l 10)
end
set response (echo $query | http POST $es_url/$index/_search\?scroll=1m)
set scroll_id (echo $response | jq -r ._scroll_id)
set hits_count (echo $response | jq -r '.hits.hits | length')
set hits_so_far $hits_count
echo "Got initial response with $hits_count hits and scroll ID "(summarize_string $scroll_id)
process_page $response
while test "$hits_count" != "0"
set response (echo "{ \"scroll\": \"1m\", \"scroll_id\": \"$scroll_id\" }" | http POST $es_url/_search/scroll)
set scroll_id (echo $response | jq -r ._scroll_id)
set hits_count (echo $response | jq -r '.hits.hits | length')
set hits_so_far (math $hits_so_far + $hits_count)
echo "Got response with $hits_count hits (hits so far: $hits_so_far) and scroll ID "(summarize_string $scroll_id)
process_page $response
end
echo Done!
最终结果是,在脚本顶部指定的输出文件中,所有与Kibana中的查询匹配的日志均根据process_page
函数中的代码进行了转换。
答案 6 :(得分:-7)