Отримайте документи за допомогою _search API або дозвольте короткому скрипту на Python перегортати їх за допомогою helpers.scan. Якщо ваш pipeline зберіг оригінальний журнал, зазвичай у message або event.original, витягніть тільки це поле і отримаєте сирі журнали назад. OpenSearch Dashboards може створювати звіти з збережених пошукових запитів, але не у форматі, який читає LogTotal сьогодні.
OpenSearch підтримує безліч власноруч створених платформ SIEM та журналів, включаючи Amazon OpenSearch Service і індексатор Wazuh. Prime Core має 23466 правил виявлення для OpenSearch, які відповідають 671 техніці MITRE ATT&CK. Нижче показано, як отримати чистий зріз даних, очистити його та перевірити безкоштовно в LogTotal.
Перед початком
Дозволи. З увімкненим плагіном безпеки ваша роль повинна мати доступ на читання шаблону індексу: група дій читання або принаймні indices:data/read/search* та indices:data/read/scroll*. У Amazon OpenSearch Service це або користувач з детальним контролем доступу, або облікові дані IAM з підписом SigV4.
Знайдіть потрібні поля. Шаблони індексу відрізняються між pipelines. Перевірте один документ і мапінг перед написанням запиту:
GET logs-*/_search?size=1
GET logs-*/_mapping
Ви шукаєте поле часу (@timestamp або timestamp) і, ідеально, поле, яке містить оригінальний рядок (message, event.original, full_log у Wazuh).
Спочатку підрахувати. Виконайте GET logs-*/_count з тим самим запитом, щоб подивитися, що ви збираєтеся отримати.
Команди нижче відповідають документації OpenSearch 2.x, перевірені у жовтні 2026.
Варіант 1: Python з opensearch-py (рекомендовано)
helpers.scan обробляє пагінацію і очищує за собою. Встановіть opensearch-py, потім:
import json, os
from opensearchpy import OpenSearch, helpers
client = OpenSearch(
"https://opensearch.example.com:9200",
http_auth=("reader", os.environ["OS_PASSWORD"]),
verify_certs=True,
)
query = {"query": {"range": {"@timestamp": {
"gte": "2026-10-19T00:00:00Z", "lt": "2026-10-20T00:00:00Z"}}}}
with open("opensearch_1019.jsonl", "w") as out:
for hit in helpers.scan(client, index="logs-*", query=query, size=1000):
out.write(json.dumps(hit["_source"]) + "n")
Щоб отримати сирі рядки замість документів, запишіть hit[“_source”].get(“message”, “”) замість цілого _source. Щоб зменшити розмір файлу, додайте “_source”: [“@timestamp”, “host.name”, “message”] до запиту.
Варіант 2: curl для малих експортів
Для до 10,000 документів достатньо одного запиту:
curl -sS -u reader -H 'Content-Type: application/json'
"https://opensearch.example.com:9200/logs-*/_search" -d '{
"size": 10000,
"query": {"range": {"@timestamp": {"gte": "2026-10-19T00:00:00Z", "lt": "2026-10-20T00:00:00Z"}}},
"sort": [{"@timestamp": "asc"}]
}' | jq -c '.hits.hits[]._source' > opensearch_small.jsonl
10,000 – це максимальне значення index.max_result_window. Більше цього запит не успішний, і вам потрібен Варіант 1 або точка в часі (PIT) з search_after, якщо ви хочете скриптувати це самостійно.
Крок 3: Завантажте, очистіть та перегляньте в LogTotal
- Завантаження. Відкрийте logtotal.com і перетягніть файл .jsonl.
- Очистити. Перегляньте його перед продовженням.
- Переглянути.
Коли щось йде не так
| Симптом | Ймовірна причина | Fix |
|---|---|---|
| security_exception / 403 | Роль не має дозволів на пошук або скролінг | Запросіть доступ на читання шаблону індексу |
| Занадто велике вікно результатів | Більше 10,000 хітів в одному запиті | Використовуйте helpers.scan або PIT з search_after |
| Нуль хітів, але дані є | Неправильне ім’я поля часу або помилка в часовому поясі | Перевірте мапінг; використовуйте явні Z часові мітки |
| Контекст пошуку не знайдено | Скролінг закінчився між сторінками | Передайте scroll=”5m” до helpers.scan; використовуйте менші сторінки |
| Помилки підпису на Amazon OpenSearch Service | Домени на основі IAM очікують SigV4 | Використовуйте AWSV4SignerAuth з opensearch-py |
FAQ
Це працює для Wazuh?
Так. Індексатор Wazuh базується на OpenSearch. Сповіщення зазвичай знаходяться в wazuh-alerts-*, а оригінальний журнал у full_log.
Чи слід експортувати все у _source?
Тільки якщо це потрібно. Пайплайни часто додають десятки полів збагачення. Скорочення до часу, хосту і сирого повідомлення дозволяє зменшити розмір файлів і швидше завантажити.