web-dev-qa-db-ja.com

Kibana-検索結果をエクスポートする方法

最近、集中ログをSplunkからELKソリューションに移行しました。検索結果をエクスポートする必要があります。これを、Kibana 4.1で行う方法はありますか?ある場合、それは正確には明らかではありません...

ありがとう!

10
MachineShedFred

ログ(タイムスタンプとカウントだけでなく)をエクスポートする場合は、いくつかのオプションがあります(tylerjlは Kibanaフォーラム でこの質問に非常によく答えました):

Elasticsearchから実際にログをエクスポートする場合は、ログをどこかに保存する必要があるため、ブラウザーでログを表示することは、数百または数千のログを表示するための最良の方法ではない可能性があります。ここにはいくつかのオプションがあります。

  • [検出]タブで、下部にある矢印タブをクリックして、生の要求と応答を確認できます。 [リクエスト]をクリックし、それをcurl(または同様のもの)を使用したESへのクエリとして使用して、必要なログをESにクエリできます。

  • Logstashまたは stream2es206 を使用して、インデックスの内容をダンプすることができます(必要な特定のドキュメントを取得するための可能なクエリパラメータを使用)。

8
Sean

これは非常に古い投稿です。しかし、私はまだ誰かが良い答えを探していると思います。

KibanaDiscoverから検索を簡単にエクスポートできます。

最初に保存をクリックしてから、共有をクリックします

Click **Save** first, then click **Share**

クリックCSVレポート

Click CSV Reports

次に、CSVの生成をクリックします

Then click **Generate CSV**

しばらくすると、ダウンロードオプションが右下に表示されます。

1
rishad2m8

Curlを使用して独自のリクエストを行うのに問題がある場合、またはKibanaからログを抽出するための自動プログラムが必要ない場合は、[応答]をクリックして必要なものを取得してください。

Curlの使用時に「xsrftokenmissing」などの問題が発生した後、この方法の方が簡単で簡単であることがわかりました。

他の人が言ったように、下部近くの矢印タブをクリックすると、リクエストボタンが表示されます。

request button

1
user3792643

@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関数のコードに従って変換されます。

0
Raman

これはKibanav7.2.0で機能します-クエリ結果をローカルJSONファイルにエクスポートします。ここでは、Chromeを使用していると仮定しますが、Firefoxでも同様のアプローチが機能する可能性があります。

  1. Chrome-開く開発者ツール/ネットワーク
  2. Kibana-クエリを実行します
  3. Chrome-ネットワーク通話を右クリックしてコピー/ cURLとしてコピーを選択します
  4. コマンドライン-実行[cURL from step 4] > query_result.json
0
David Soroko

ログ情報ではなく、タイムスタンプとその時点でのメッセージ数のみがエクスポートされます。

生:

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"

0
user5301381