最近、集中ログをSplunkからELKソリューションに移行しました。検索結果をエクスポートする必要があります。これを、Kibana 4.1で行う方法はありますか?ある場合、それは正確には明らかではありません...
ありがとう!
ログ(タイムスタンプとカウントだけでなく)をエクスポートする場合は、いくつかのオプションがあります(tylerjlは Kibanaフォーラム でこの質問に非常によく答えました):
Elasticsearchから実際にログをエクスポートする場合は、ログをどこかに保存する必要があるため、ブラウザーでログを表示することは、数百または数千のログを表示するための最良の方法ではない可能性があります。ここにはいくつかのオプションがあります。
[検出]タブで、下部にある矢印タブをクリックして、生の要求と応答を確認できます。 [リクエスト]をクリックし、それをcurl(または同様のもの)を使用したESへのクエリとして使用して、必要なログをESにクエリできます。
Logstashまたは stream2es206 を使用して、インデックスの内容をダンプすることができます(必要な特定のドキュメントを取得するための可能なクエリパラメータを使用)。
@Seanの答えは正しいですが、詳細が欠けています。
これは、httpieを介してElasticSearchからすべてのログを取得し、jqを介してそれらを解析して書き出し、スクロールカーソルを使用してクエリを繰り返し、最初の500を超えるエントリをキャプチャできるようにするための手っ取り早いスクリプトです(このページの他のソリューション)。
このスクリプトはhttpie(http
コマンド)とfish Shellを使用して実装されていますが、bashやcurlなどのより標準的なツールに簡単に適合させることができます。
クエリは@Seanの回答に従って設定されます。
[検出]タブで、下部にある矢印タブをクリックして、生の要求と応答を確認できます。 [リクエスト]をクリックし、それをcurl(または同様のもの)を使用したESへのクエリとして使用して、必要なログを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
関数のコードに従って変換されます。
これはKibanav7.2.0で機能します-クエリ結果をローカルJSONファイルにエクスポートします。ここでは、Chromeを使用していると仮定しますが、Firefoxでも同様のアプローチが機能する可能性があります。
[cURL from step 4] > query_result.json
ログ情報ではなく、タイムスタンプとその時点でのメッセージ数のみがエクスポートされます。
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"