Використовуйте короткий Python-скрипт з офіційними допоміжними функціями клієнта.scan або _search API з точкою в часі (PIT) і search_after. Для швидкого витягу до 10,000 рядків ES|QL з format=json працює прямо з Dev Tools Kibana. Kibana Discover також може генерувати звіт, але не у форматі, який LogTotal розуміє сьогодні. Якщо ваша інтеграція зберегла це, event.original містить сировинний рядок журналу.
Elastic є однією з найпоширеніших основ для внутрішньої безпеки аналітики, від Elastic Security до власноруч створених стосів. Prime Core має 23,722 правила виявлення для Elastic, відповідні 671 техніці MITRE ATT&CK. Нижче показано, як отримати дані, очистити їх і дослідити безкоштовно в LogTotal.
Перед початком
Аутентифікація. Створіть API ключ у Управління стосом → API ключі з правами читання та view_index_metadata на потрібних індексах. Надішліть його як Authorization: ApiKey <ключ>. На Elastic Cloud, кінцева точка Elasticsearch знаходиться на сторінці огляду вашого розгортання.
Знайте, де живуть дані. Інтеграції Elastic Agent записують у потоки даних, названі logs-<dataset>-<namespace>. Логи аутентифікації Linux з інтеграції System, наприклад, потрапляють у logs-system.auth-default.
Перевірте наявність event.original. Багато інтеграцій не зберігають сировинний рядок за замовчуванням; це опція «зберегти оригінальну подію». Якщо його немає, у вас є розпізнані поля, і це нормально для завантаження JSON.
Тіри даних. Пошуки по холодним або замороженим тірам повільніші. Тримайте вікна вузькими, коли дані старі.
Приклади відповідають поточній документації Elastic, перевірено у жовтні 2026 року.
Варіант 1: Python з helpers.scan (рекомендовано)
import json, os
from elasticsearch import Elasticsearch, helpers
es = Elasticsearch("https://my-deployment.es.example.com:443", api_key=os.environ["ES_API_KEY"])
query = {"query": {"range": {"@timestamp": {
"gte": "2026-10-19T00:00:00Z", "lt": "2026-10-20T00:00:00Z"}}}}
with open("elastic_auth_1019.jsonl", "w") as out:
for hit in helpers.scan(es, index="logs-system.auth-*", query=query, size=1000):
out.write(json.dumps(hit["_source"]) + "n")
Для сирих рядків пишіть hit[“_source”].get(“event”, {}).get(“original”, “”) замість цілого документа.
Варіант 2: ES|QL для швидкого витягу
У Dev Tools Kibana:
POST /_query?format=json
{
"query": """
FROM logs-system.auth-*
| WHERE @timestamp >= "2026-10-19T00:00:00Z" AND @timestamp < "2026-10-20T00:00:00Z"
| KEEP @timestamp, host.name, user.name, source.ip, message
| LIMIT 10000
"""
}
Два застереження. ES|QL повертає 1,000 рядків, якщо не встановлено LIMIT, а максимум – 10,000. Відповідь у форматі JSON також приходить як стовпці плюс значення, а не як записи. Щоб перетворити це в один об’єкт на лінію, збережіть тіло запиту як query.json та виконайте його через jq:
curl -sS -H "Authorization: ApiKey $ES_API_KEY" -H 'Content-Type: application/json'
"https://my-deployment.es.example.com/_query?format=json" -d @query.json
| jq -c '.columns as $c | .values[] | [$c, .] | transpose | map({(.[0].name): .[1]}) | add' > esql_1019.jsonl
Варіант 3: Експорт логів з інтерфейсу Kibana (Discover)
Для менших розслідувань, Kibana Discover дозволяє знайти, фільтрувати та експортувати логи безпосередньо з браузера без написання скриптів.
- Відкрийте Discover. Увійдіть у Kibana та перейдіть до Аналітика → Discover, або оберіть Discover з головної навігації.
- Оберіть ваші дані. Оберіть уявлення даних, яке містить потрібні логи, наприклад logs-system.auth-*. Переконайтеся, що воно включає відповідні індекси або потоки даних Elasticsearch.
- Встановіть діапазон часу. Використовуйте вибір часу у верхньому правому куті, щоб вибрати період розслідування. Звузьте вікно, щоб уникнути експорту непотрібних подій.
- Фільтруйте логи. Використовуйте пошукову панель та доступні фільтри, щоб ізолювати відповідні події. Наприклад, введіть event.category: authentication, щоб зосередитися на активності аутентифікації.
- Виберіть поля. Додайте корисні стовпці, такі як @timestamp, host.name, user.name, source.ip і message. Якщо доступно, включіть event.original, щоб зберегти сировинний вміст журналу.
- Експортуйте результати. Відкрийте Ще → Експорт → Результати вкладок як CSV (у деяких версіях, Поділитися → Звіти CSV). Згенеруйте звіт і завантажте файл CSV. Якщо експорт не був завантажений одразу, знайдіть його в розділі Управління стосом → Звіти.
Альтернатива: Копіюйте логи як JSON. Для невеликого вибору подій виберіть відповідні рядки у Discover, відкрийте меню Вибрано і виберіть Копіювати документи як JSON. Вставте скопійований вміст у текстовий редактор і збережіть як .json файл. Копіюються лише ті поля, які включено у поточну вибірку таблиці.
Обмеження. Звіти CSV призначені для експорту середніх розмірів і мають обмеження за кількістю рядків і розміром файлу, що залежать від версії та конфігурації Kibana. Експорт визначення сесії Discover як JSON не експортує самі події журналу.
Для LogTotal використовуйте підтримуваний формат журналу. Коли потрібен JSONL, експортуйте записи за допомогою описаних нижче методів API Python або Elasticsearch, або перетворіть експортовані дані в один JSON об’єкт на лінію перед завантаженням.
Крок 3: Завантаження, очищення та перевірка у LogTotal
- Завантаження. Відкрийте logtotal.com і перетягніть .jsonl файл.
- Очищення. Огляньте його перед тим, як продовжити.
- Перегляд.
Коли щось йде не так
| Симптом | Ймовірна причина | Fix |
|---|---|---|
| 401 або 403 | API ключ не має прав на індекси | Додайте права на читання та view_index_metadata |
| Вікно результатів занадто велике | Понад 10,000 попадань в один запит _search | Використовуйте helpers.scan або PIT з search_after |
| ES|QL повертає рівно 1,000 рядків | Значення за замовчуванням | Додайте LIMIT (максимум 10,000) |
| Поле event.original відсутнє | Інтеграція не зберегла його | Експортуйте натомість розпізнаний документ |
| Тайм-аути | Старі дані на холодних або заморожених тірах | Звузьте вікно; розбийте його на частини |
FAQ
А як щодо сповіщень Elastic Security?
Сповіщення зберігаються у власних індексах (.alerts-security.alerts-*). Експорт сповіщень — це інше завдання, ніж експорт логів, які їх підтримують; для LogTotal експортуйте логи.
Чи це працює для OpenSearch?
Ідея та ж сама, клієнти різняться.