Недавно мы перенесли наше централизованное ведение журнала из Splunk в решение ELK, и нам нужно экспортировать результаты поиска — есть ли способ сделать это в Kibana 4.1? Если и есть, то не совсем очевидно...
Спасибо!
Недавно мы перенесли наше централизованное ведение журнала из Splunk в решение ELK, и нам нужно экспортировать результаты поиска — есть ли способ сделать это в Kibana 4.1? Если и есть, то не совсем очевидно...
Спасибо!
Конечно, вы можете экспортировать из Discover Kibana (Kibana 4.x+). 1. На странице обнаружения нажмите «стрелку вверх» здесь:
В logz.io (компания, в которой я работаю) мы будем выпускать отчеты по расписанию, основанные на конкретных поисковых запросах.
Это очень старый пост. Но я думаю, что все еще кто-то ищет хороший ответ.
Вы можете легко экспортировать результаты поиска из Kibana Discover.
Сначала нажмите Сохранить, затем нажмите Поделиться.
Нажмите Отчеты в формате CSV.
Затем нажмите Создать CSV.
Через несколько секунд вы увидите вариант загрузки внизу справа.
Если вы хотите экспортировать журналы (а не только отметку времени и счетчики), у вас есть несколько вариантов (tylerjl очень хорошо ответил на этот вопрос на Форумы Kibana):
Если вы действительно хотите экспортировать журналы из Elasticsearch, вы, вероятно, захотите сохранить их где-нибудь, поэтому просмотр их в браузере, вероятно, не лучший способ просмотра сотен или тысяч журналов. Здесь есть несколько вариантов:
На вкладке «Обнаружение» вы можете щелкнуть вкладку со стрелкой внизу, чтобы увидеть необработанный запрос и ответ. Вы можете нажать «Запрос» и использовать это как запрос к ES с помощью curl (или чего-то подобного), чтобы запросить у ES нужные вам журналы.
Вы можете использовать logstash или stream2es206 для вывода содержимого индекса (с возможными параметрами запроса для получения конкретных нужные документы)
Это работает с Kibana v 7.2.0 - экспортировать результаты запроса в локальный файл JSON. Здесь я предполагаю, что у вас есть Chrome, аналогичный подход может работать с Firefox.
[cURL from step 3] > query_result.json
Изменить. Чтобы перейти к узлам source
в полученном файле JSON, используя jq
:
jq '.responses | .[] | .hits | .hits | .[]._source ' query_result.json
Response
будет включать данные в виде строки json.
- person Ctrl-Zed; 03.02.2021
Если у вас возникли проблемы с созданием собственного запроса с помощью curl или вам не нужна автоматическая программа для извлечения журналов из Kibana, просто нажмите «Ответить» и получите то, что вам нужно.
После таких проблем, как «отсутствует токен xsrf» при использовании curl, я обнаружил, что этот способ проще и проще!
Как уже говорили другие, кнопка «Запрос» появляется после нажатия на вкладку со стрелкой внизу.
Экспортируется только метка времени и количество сообщений в это время, а не информация журнала:
1441240200000,1214 1441251000000,1217 1441261800000,1342 1441272600000,1452 1441283400000,1396 1441294200000,1332 1441305000000,1332 1441315800000,1334 1441326600000,1337 1441337400000,1215 1441348200000,12523 1441359000000,61897
«3 сентября 2015 г., 06:00:00.000», «1 214» «3 сентября 2015 г., 09:00:00 000», «1 217» «3 сентября 2015 г., 12:00:00 000», «1 342» «3 сентября 2015 г., 15:00:00.000","1,452" "3 сентября 2015, 18:00:00.000","1,396" "3 сентября 2015, 21:00:00.000","1,332" "4 сентября 2015, 00:00:00.000 ","1,332" "4 сентября 2015, 03:00:00.000","1,334" "4 сентября 2015, 06:00:00.000","1,337" "4 сентября 2015, 09:00:00.000","1,215" "4 сентября 2015 г., 12:00:00.000", "12 523" "4 сентября 2015 г., 15:00:00.000", "61 897"
@ Ответ Шона правильный, но ему не хватает конкретики.
Вот быстрый и грязный скрипт, который может получить все журналы из ElasticSearch через httpie, разобрать и записать их через jq, а также использовать курсор прокрутки для итерации запроса, чтобы можно было захватить более первых 500 записей (в отличие от другие решения на этой странице).
Этот скрипт реализован с помощью httpie (команда http
) и оболочки fish, но его можно легко адаптировать к более стандартным инструментам, таким как bash и curl.
Запрос задан в соответствии с ответом @Sean:
На вкладке «Обнаружение» вы можете щелкнуть вкладку со стрелкой внизу, чтобы увидеть необработанный запрос и ответ. Вы можете нажать «Запрос» и использовать это как запрос к ES с помощью 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
.