Допустим, составили вы запрос в Kibana, посмотрели результаты. Их много. Смотреть в браузере их неудобно. Хотелось бы выгрузить их в файл. Так вот. Выгрузить в файл можно, для этого в Discovery в результатах поиска кликните на маленькую стрелочку под графиком:
Появится таблица с вкладками Table, Request, Response, Statistics. Скопируйте содержимое вкладки Request:
Сохраните содержимое вкладки Request в файл “elk.txt”. Откройте его в текстовом редакторе и посмотрите на строчки (здесь показана только часть):
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "version": true, "size": 1000, "sort": [ { "@timestamp": { "order": "desc", "unmapped_type": "boolean" } } ], ... |
Поменяйте значение у "size" с 1000 на 10000 (у меня почему-то больше 10000 не давало ставить).
Теперь минимизируем JSON в нашем файле (флаг -c означает, что мы именно минимизируем):
1 |
jq -c . elk.txt > elk-minified.txt |
После этой команды у нас в “elk-minified.txt” должно храниться минимизированное содержимое JSON. Откройте его в вашем текстовом редакторе и добавьте в начало строку с содержимым {} (ЭТО НУЖНО ОБЯЗАТЕЛЬНО). Получится примерно так:
1 2 |
{} {"version":true,"size":10000,"sort":[{"@timestamp"... |
После выполнения этих процедур мы можем получить полноценных лог из нашей Kibana / Elastic Search с помощью curl:
1 2 3 4 |
$ curl -X POST -H "Content-Type: application/json" --data-binary @elk-minified.txt -H "kbn-xsrf: reporting" -u admin:password --output out.txt http://kibana-host:8080/elasticsearch/_msearch % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1026 100 235 100 791 61 207 0:00:03 0:00:03 --:--:-- 207 |
Здесь у нас:
-H "Content-Type: application/json" — указываем HTTP Content-Type.
--data-binary — файл, из которого читаем запрос.
-H "kbn-xsrf: reporting" — это обязательно нужно, без него будет ошибка: “Request must contain a kbn-xsrf header.”
-u admin:password — указываем наш логин и пароль.
--output out.txt — записываем результат в “out.txt”.
Готово. У нас есть результат в “out.txt”. Но он в одну строку и читать его трудно. Преобразуем его в красивый вид:
1 |
jq . out.txt > out-pretty.json |
Теперь у нас в файле “out-pretty.json” содержится выгруженный лог по нашему запросу.