2017. augusztus 14., hétfő

Graylog, Elasticsearch, maximális mezőszám, graylog_deflector

Csak mert nem vagyok linuxos gyerek.
Néhány napja összeraktam a vadiúj Graylog szerverünket.
Sikeresen hozzákötöttem valami 10+ Windows szervert, hogy begyűjtse az eseménynapló bejegyzéseket róluk.
A project második részeként hozzá akartam adni néhány linux szervert is.
zzáadtam az elsőt, látszik, hogy a begyűjtés működik, az üzenetek beérkeznek, de a konzolon nem jelenik meg semmi. Fura.
Kicsit mélyebbre ásva az index hibalista ezzel volt tele:
{"type":"illegal_argument_exception","reason":"Limit of total fields [1000] in index [graylog_0] has been exceeded"}
Ez azt jelenti, hogy túlment a rendszer a maximális mezőszámon (azt hiszem, hogy a Windows nagytömegű eseménytítusa miatt)
Elolvastam egy rakás fórumbejegyzést róla. Megpróbáltam beállítani az elasticsearch.yml-ben.
Nem segített. Az eredmény egy működésképtelen elasticsearch lett.
Végül lepucoltam az egészet (elasticsearch) az indexekkel eggyüttvéve és újratelepítettem.
Az eredmény:
Lett egy működő elasticsearch-öm. Az 1000-es mezőlimit maradt, de jött hozzá mégegy hiba. Valami ilyesmi:
A graylog_deflector egy index és nem egy alias.
Kugli újra, a hibára rátaláltam, a megoldásra nem. Elkezdtem gondolkodni a guglizás helyett. Amire rájöttem:
  1. Az egyik log fáljból kiderült, hogy az elasticsearch beállításai nem a konfig fájlon keresztül mennek, hanem a web API-n keresztül, JSON objektumokban.
  2. A curl a barátod
  3. A Graylog létrehozza a grylog_deflector-t indexként, ha nem találja a graylog_alias-t. Ezt utána nem tudja használni. Ezzel azután semmit sem tudsz kezdeni a Graylog felületen belül, tehát a dolog el van cseszve.
A megoldás a fentiek alapján:

  1. A Graylog web  felületén menj be a System/Indices>Indices-be. Válaszd ki a Default index set-et
  2. Maintanance-ben válaszd ki a Rotate active write index pontot. Ez gyárt egy graylog_0 nevű index-et (csak ez nem fog működni)
  3. A konzolon álítsd le a graylog-ot:
    sudo service graylog-server stop
  4. Kezeljük az 1000 mező problémáját:
    curl -XPUT 'http://localhost:9200/_all/_settings?preserve_existing=true' -d '{
      "index.mapping.total_fields.limit" : "5000"
    }'
  5. Állítsuk le a graylog_deflector index-et:
    curl -XPOST 'localhost:9200/graylog_deflector/_close?pretty'
  6. Töröljük a graylog_deflector index-et:
    curl -XDELETE 'localhost:9200/graylog_deflector?pretty'
  7. Adjuk hozzá a graylog_deflector aliast az újonan gyártott graylog_0 index-hez:
    curl -XPOST 'localhost:9200/_aliases?pretty' -H 'Content-Type: application/json' -d'
    {
        "actions" : [
            { "add" : { "index" : "graylog_0", "alias" : "graylog_deflector" } }
        ]
    }'
  8. Indítsuk el a graylog-ot:
    sudo service graylog-server start
  9. Most a graylog elekzd bőszen indexelni ez akár napokig is tathat, de a begyűjtött üzenetek elkezdenek látszani közben.

Nincsenek megjegyzések:

Megjegyzés küldése

Megjegyzés: Megjegyzéseket csak a blog tagjai írhatnak a blogba.