Як експортувати логи Graylog

Як експортувати логи Graylog

SOC Prime Team
SOC Prime Team linkedin icon Стежити

Graylog зберігає свої повідомлення в OpenSearch або Elasticsearch, тому у вас є два шляхи. Використовуйте REST API Graylog, аутентифікуючись за допомогою токена доступу, або виконуйте запити до бекенд індексів (за замовчуванням graylog_*) безпосередньо за допомогою скрипта. У будь-якому випадку ви отримаєте JSON. Оригінальний рядок міститься в message, а в full_message для деяких входів. Експорт у веб-інтерфейсі Graylog генерує формат, який LogTotal сьогодні не читає. 

Graylog – це популярна платформа для керування відкритими логами, яку часто вперше встановлює команда для центрального ведення логів. Prime Core має 23,274 правила виявлення для Graylog, пов’язаних з 671 технікою MITRE ATT&CK. Нижче описується, як витягти повідомлення, очистити їх та безкоштовно розслідувати їх у LogTotal.

Почати безкоштовно

Перед початком

Токен доступу. У Graylog, відкрийте налаштування вашого користувача і створіть токен. З API ви аутентифікуєтесь як <token>:token: токен як ім’я користувача і слово token як пароль.

Доступ до бекенду, якщо ви підключаєтеся напряму. Кластер OpenSearch або Elasticsearch позаду Graylog часто недоступний із зовні. Попросіть того, хто керує ним, про акаунт лише для читання.

Потоки та набори індексів. Graylog направляє повідомлення в потоки, а потоки співставляються з наборами індексів з їхніми власними префіксами та затримками. Знайте, який набір індексів містить ваші дані.

Варіант 1: REST API Graylog

GL="https://graylog.example.com"

curl -sS -u "$GL_TOKEN:token" -H 'Accept: application/json' -G "$GL/api/search/universal/absolute"
  --data-urlencode 'query=source:web-03'
  --data-urlencode 'from=2026-10-19T00:00:00.000Z'
  --data-urlencode 'to=2026-10-20T00:00:00.000Z'
  --data-urlencode 'limit=10000'
  | jq -c '.messages[].message' > graylog_web03_1019.jsonl

Новіші версії Graylog віддають перевагу API пошуку Views. Для великих експортів, варіант 2 є більш надійним.

Варіант 2: Запит до бекенд індексів

Це той самий підхід, що і наш, спрямований на індекси Graylog:

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": {"bool": {"filter": [
    {"term": {"source": "web-03"}},
    {"range": {"timestamp": {"gte": "2026-10-19 00:00:00.000", "lt": "2026-10-20 00:00:00.000"}}},
]}}}

with open("graylog_web03_1019.jsonl", "w") as out:
    for hit in helpers.scan(client, index="graylog_*", query=query, size=1000):
        out.write(json.dumps(hit["_source"]) + "n")

Graylog зберігає timestamp як yyyy-MM-dd HH:mm:ss.SSS в UTC, тому range використовує цей формат. Для бекенду, що працює на Elasticsearch, використовуйте клієнт elasticsearch аналогічно.

Завантажте, очистіть та перегляньте в LogTotal

  1. Завантажити. Відкрити logtotal.com і помістіть у файл. 
  2. Очистіть. 
  3. Перегляньте. 

Коли щось йде не так

СимптомЙмовірна причинаFix
401 від APIТокен аутентифікований неправильноВикористовуйте <token>:token
404 на кінцевій точці пошукуКінцева точка недоступна у вашій версіїВикористовуйте Варіант 2, або API Views
Запит бекенду нічого не повертаєНеправильний префікс індексу, або формат timestampПеревірте набори індексів; використовуйте yyyy-MM-dd HH:mm:ss.SSS
Бекенд недоступнийКластер не відкритийЗапитайте доступ лише для читання, або використовуйте API

FAQ

message чи full_message?

message завжди є. full_message з’являється для деяких входів, таких як GELF, і може містити більше деталей. Експортуйте обидва, якщо вони у вас є.

Чи працює це для Graylog Cloud?

Маршрут API працює. Прямий доступ до бекенду зазвичай недоступний у хостингових планах.

Приєднуйтесь до платформи Detection as Code від SOC Prime щоб покращити видимість загроз, найбільш актуальних для вашого бізнесу. Щоб допомогти вам розпочати та отримати негайну цінність, забронюйте зустріч зараз з експертами SOC Prime.