Como Exportar Logs do OpenSearch

Como Exportar Logs do OpenSearch

SOC Prime Team
SOC Prime Team linkedin icon Seguir

Puxe documentos com a API _search, ou deixe um script Python curto percorrê-los com helpers.scan. Se o seu pipeline manteve a linha de log original, geralmente em message ou event.original, extraia apenas esse campo e você terá os logs brutos de volta. O OpenSearch Dashboards pode gerar relatórios a partir de pesquisas salvas, mas não em um formato que o LogTotal leia hoje.

O OpenSearch suporta muitos SIEMs e plataformas de log caseiros, incluindo Amazon OpenSearch Service e o indexador Wazuh. O Prime Core tem 23.466 regras de detecção para OpenSearch, mapeadas para 671 técnicas MITRE ATT&CK. Abaixo está como obter uma fatia limpa de dados, sanitizá-la e investigá-la gratuitamente no LogTotal.

Comece Gratuitamente

Antes de começar

Permissões. Com o plugin de segurança ativado, seu papel precisa de acesso de leitura no padrão do índice: o grupo de ações de leitura, ou pelo menos indices:data/read/search* e indices:data/read/scroll*. No Amazon OpenSearch Service, isso é feito por um usuário de controle de acesso detalhado ou credenciais IAM com assinatura SigV4.

Encontre os campos corretos. Os padrões de índice diferem entre pipelines. Verifique um documento e o mapeamento antes de escrever uma consulta:

GET logs-*/_search?size=1
GET logs-*/_mapping

Você está procurando o campo de tempo (@timestamp ou timestamp) e, idealmente, um campo que contenha a linha original (message, event.original, full_log no Wazuh).

Conte primeiro. Execute GET logs-*/_count com a mesma consulta para ver o que você está prestes a puxar.

Os comandos abaixo seguem a documentação do OpenSearch 2.x, verificada em outubro de 2026.

Opção 1: Python com opensearch-py (recomendado)

helpers.scan lida com paginação e se limpa sozinho. Instale opensearch-py, então:

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")

Para obter linhas brutas em vez de documentos, escreva hit[“_source”].get(“message”, “”) em vez de toda a _source. Para manter o arquivo pequeno, adicione “_source”: [“@timestamp”, “host.name”, “message”] à consulta.

Opção 2: curl para exportações pequenas

Para até 10.000 documentos, uma solicitação é suficiente:

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 é o default para index.max_result_window. Além disso, a solicitação falha, e você quer a Opção 1, ou um ponto no tempo (PIT) com search_after se preferir scriptar você mesmo.

Etapa 3: Carregar, sanitizar e revisar no LogTotal

  1. Carregar. Abra logtotal.com e soltar o arquivo .jsonl.
  2. Sanitizar. Revise antes de continuar.
  3. Revisão. 

Quando dá errado

SintomaCausa provávelFix
security_exception / 403O papel não tem permissões de busca ou scrollPeça acesso de leitura no padrão do índice
Janela de resultados é muito grandeMais de 10.000 hits em uma solicitaçãoUse helpers.scan ou PIT com search_after
Zero hits, mas os dados estão láNome errado do campo de tempo, ou confusão de fuso horárioVerifique o mapeamento; use timestamps Z explícitos
Nenhum contexto de busca encontradoScroll expirou entre páginasPasse scroll=”5m” para helpers.scan; use páginas menores
Erros de assinatura no Amazon OpenSearch ServiceDomínio baseado em IAM espera SigV4Use AWSV4SignerAuth de opensearch-py

FAQ

Isso funciona para o Wazuh?

Sim. O indexador do Wazuh é baseado no OpenSearch. Alertas geralmente vivem em wazuh-alerts-*, e a linha de log original em full_log.

Devo exportar tudo em _source?

Somente se você precisar. Pipelines frequentemente adicionam dúzias de campos de enriquecimento. Reduzir ao tempo, host e a mensagem bruta mantém arquivos pequenos e uploads rápidos.

Junte-se à plataforma Detection as Code da SOC Prime para melhorar a visibilidade das ameaças mais relevantes para o seu negócio. Para ajudá-lo a começar e gerar valor imediato, agende uma reunião agora com os especialistas da SOC Prime.