Azure-Felder wie data.activityDateTime in echte Datumsfelder für Wazuh-Visualisierungen umwandeln

Wer Azure-Logs über das Wazuh Azure-Modul einbindet, kennt das Problem:
Viele Zeitstempel kommen zwar wie ein Datum aus, werden vom Wazuh Indexer aber nur als String gespeichert. Ein typisches Beispiel:

"data": {
  "activityDateTime": "2025-12-02T15:51:24.6624495Z"
}

In der Oberfläche sehen diese Werte korrekt aus – aber in Visualisierungen, Timelines, Aggregationen oder Range-Filtern sind sie nicht als Datum nutzbar, weil der Feldtyp nicht date, sondern text/keyword ist.

In diesem Beitrag zeige ich dir, wie du solche Felder (z. B. data.activityDateTime) richtig als Datumsfeld im Wazuh Indexer/OpenSearch definierst.

1. Warum Wazuh/OpenSearch dein Datum nur als String sieht

Wazuh (bzw. Filebeat) beschreibt dem Indexer mit einem Index-Template, welche Felder welchen Typ haben sollen. Dieses Template liegt standardmäßig hier:

/etc/filebeat/wazuh-template.json

Wenn dort kein Eintrag für data.activityDateTime (oder dein Azure-Feld) steht, wird es vom Indexer nach dem Schema „besser als nichts“ als String angelegt.
Die Folge:

  • Das Feld ist zwar filterbar,
  • aber nicht als date typisiert → keine sauberen Zeit-Aggregationen, keine Date-Histogramme, manchmal auch komische Sortierung.

Die Lösung: Du bringst dem Template bei, dass dieses Feld ein Datumsfeld ist.

2. Feld im Wazuh-Template als date definieren

Schritt 1: Template auf dem Manager anpassen

Öffne das Wazuh-Template auf dem System, auf dem Filebeat läuft (meist der Wazuh Manager):

sudo nano /etc/filebeat/wazuh-template.json

Suche den Block für data. Typisch sieht der Abschnitt so aus (stark gekürzt):

"data": {
  "properties": {
    "...": {},
    "...": {}
  }
}

Erweitere diesen Block um dein Azure-Feld, z. B. activityDateTime:

"data": {
  "properties": {
    "...": {},
    "activityDateTime": {
      "type": "date"
    }
  }
}

Wichtig:

  • Die Feldhierarchie muss zu deinen Dokumenten passen.
    Wenn im Dokument data.activityDateTime steht, ist die Definition oben korrekt.
  • Hast du ein verschachteltes Feld wie data.ms-graph.activityDateTime, musst du entsprechend tiefer gehen:
"data": {
  "properties": {
    "ms-graph": {
      "properties": {
        "activityDateTime": {
          "type": "date"
        }
      }
    }
  }
}

Der OpenSearch-Typ date unterstützt ISO-8601-Strings wie 2025-12-02T15:51:24.6624495Z direkt, du musst also meist kein eigenes Format angeben, solange Azure sich an Standard-ISO hält.

3. Template neu ins Cluster laden

Nachdem du das Template angepasst hast, musst du es vom Filebeat neu ins Wazuh Indexer-Cluster pushen:

sudo filebeat setup --index-management
sudo systemctl restart filebeat

Damit ist das Template im Cluster aktualisiert – aber Achtung:

Bereits existierende Indizes behalten ihre alten Mappings.
Die Änderung gilt nur für neu angelegte Indizes (z. B. ab dem nächsten Tagesindex).

4. Was ist mit alten Daten?

Du hast zwei Möglichkeiten:

Variante A – Es reicht, wenn es ab jetzt stimmt

Dann musst du nichts weiter tun.
Ab dem nächsten neuen wazuh-alerts-4.x-YYYY.MM.DD-Index werden die Felder automatisch korrekt als date angelegt, und du kannst sie in neuen Visualisierungen nutzen.

Variante B – Du brauchst auch historische Daten korrekt getypt

Dann musst du betroffene Indizes reindizieren, damit sie das neue Mapping nutzen. Grob läuft das so:

  1. Im Wazuh Dashboard →
    Index Management → Dev Tools öffnen.
  2. Liste der Indizes anzeigen: GET _cat/indices?v
  3. Einen betroffenen Index nach wazuh-alerts-4.x-YYYY.MM.DD auswählen, z. B.: POST _reindex { "source": { "index": "wazuh-alerts-4.x-2025.12.02" }, "dest": { "index": "wazuh-alerts-4.x-2025.12.02-fixed" } }
  4. Den alten Index löschen (erst wenn du sicher bist!): DELETE wazuh-alerts-4.x-2025.12.02
  5. Den neuen index ggf. auf den ursprünglichen Namen umziehen oder das Index-Pattern anpassen.

Die offizielle Wazuh-Doku beschreibt Re-Indexing ebenfalls, falls du das sauber für viele Indizes automatisieren möchtest.

5. Kontrolle: Ist das Feld jetzt wirklich ein Datumsfeld?

Du kannst direkt im Dev-Tools-Bereich kontrollieren, wie der Indexer das Feld sieht. Für einen konkreten Index:

GET /wazuh-alerts-4.x-2025.12.02/_mapping/field/data.activityDateTime

Erwartete Ausgabe (verkürzt):

{
  "wazuh-alerts-4.x-2025.12.02": {
    "mappings": {
      "data.activityDateTime": {
        "full_name": "data.activityDateTime",
        "mapping": {
          "type": "date"
        }
      }
    }
  }
}

Wenn dort noch type: text oder keyword steht, hast du entweder:

  • das Template nicht korrekt geändert,
  • das Template nicht neu installiert,
  • oder du schaust auf einen alten Index, der noch mit dem alten Mapping erstellt wurde.

6. Fazit

Ja, du kannst Felder wie data.activityDateTime, die Azure als String liefert, in Wazuh/OpenSearch als echte Datumsfelder nutzen – du musst nur:

  1. Im Wazuh-Template (/etc/filebeat/wazuh-template.json) den Feldtyp auf date setzen.
  2. Das Template mit filebeat setup --index-management ins Cluster bringen.
  3. Optional: Alte Indizes reindizieren, wenn du Historie brauchst.

Ab dann kannst du diese Felder ganz normal in Visualisierungen, Date-Histograms, Range-Queries und Dashboards verwenden – statt nur als dummes Textfeld.

https://wazuh.slack.com/archives/C0A933R8E/p1764781504929089

Mehr zu Wazuh …

Mehr zum Wazuh Ambassador Program …