Megosztás a következőn keresztül:


Naplózás az Elastic Stack használatával

Jótanács

Ez a tartalom a „Az Azure-hoz készült natív felhőalapú .NET-alkalmazások tervezése” című eBookból egy részlet, amely elérhető a .NET Docs oldalán, vagy ingyenesen letölthető PDF fájlként, amely offline módban is olvasható.

Azure-szolgáltatásban futó Cloud Native .NET-alkalmazások ebook borítójának miniatűrje.

Sok jó központosított naplózási eszköz létezik, és a költségek az ingyenes, nyílt forráskódú eszközöktől a drágább lehetőségekig terjednek. Sok esetben az ingyenes eszközök olyan jók vagy jobbak, mint a fizetős ajánlatok. Az egyik ilyen eszköz három nyílt forráskódú összetevő kombinációja: Elasticsearch, Logstash és Kibana.

Ezeket az eszközöket együttesen Elastic Stacknek vagy ELK-veremnek nevezzük.

Rugalmas verem

Az Elastic Stack egy hatékony megoldás a Kubernetes klaszterből származó információk gyűjtésére. A Kubernetes támogatja a naplók Elasticsearch-végpontra való küldését, és a legtöbb esetben mindössze annyit kell kezdenie, hogy beállítja a környezeti változókat a 7–5. ábrán látható módon:

KUBE_LOGGING_DESTINATION=elasticsearch
KUBE_ENABLE_NODE_LOGGING=true

7–5. ábra. Konfigurációs változók a Kuberneteshez

Ez a lépés telepíti az Elasticsearch-et a fürtre, és célba veszi az összes fürtnaplónak a hozzá való küldését.

Egy példa egy Kibana-irányítópultra, amely a Kubernetes 7–6. ábrájából beszúrt naplókra vonatkozó lekérdezés eredményeit mutatja be. Példa egy Kibana-irányítópultra, amely a Kubernetesből betöltött naplókra vonatkozó lekérdezés eredményeit mutatja be

A konfigurációról további információt a Naplózás konfigurálása (Kibana) című témakörben talál.

Mik az Elastic Stack előnyei?

Az Elastic Stack alacsony költségű, skálázható, felhőbarát módon biztosítja a központosított naplózást. A felhasználói felülete leegyszerűsíti az adatelemzést, így az adatokból származó elemzésekkel töltheti az idejét ahelyett, hogy egy nehézkes felülettel harcolna. Számos bemenetet támogat, így mivel az elosztott alkalmazás egyre több és különböző szolgáltatásra terjed ki, várhatóan továbbra is képes lesz napló- és metrikaadatok betáplálására a rendszerbe. Az Elastic Stack a nagy adathalmazokban is támogatja a gyors keresést, így még a nagy alkalmazások is naplózhatják a részletes adatokat, és továbbra is jól láthatóvá teszik őket.

Logstash

Az első összetevő a Logstash. Ez az eszköz számos különböző forrásból gyűjt naplóadatokat. A Logstash például képes naplókat olvasni a lemezről, és üzeneteket is fogadhat a naplótárakból, például a Serilogból. A Logstash képes néhány alapvető szűrésre és bővítésre a naplók beérkezésekor. Ha például a naplók IP-címeket tartalmaznak, akkor a Logstash konfigurálható földrajzi keresésre, valamint az üzenet országának/régiójának vagy akár származási városának beszerzésére.

A Serilog a .NET-nyelvek naplózási kódtára, amely lehetővé teszi a paraméteres naplózást. Ahelyett, hogy szöveges naplóüzenetet hoz létre, amely mezőket ágyaz be, a paraméterek külön maradnak. Ez a kódtár intelligensebb szűrést és keresést tesz lehetővé. A Logstashba való íráshoz egy serilog-mintakonfiguráció jelenik meg a 7–7. ábrán.

var log = new LoggerConfiguration()
         .WriteTo.Http("http://localhost:8080")
         .CreateLogger();

7-7. ábra. Serilog konfiguráció a naplóadatok http-en keresztüli közvetlen írásához a logstash-be

A Logstash a 7–8. ábrán láthatóhoz hasonló konfigurációt használna.

input {
    http {
        #default host 0.0.0.0:8080
        codec => json
    }
}

output {
    elasticsearch {
        hosts => "elasticsearch:9200"
        index=>"sales-%{+xxxx.ww}"
    }
}

7-8. ábra. Logstash-konfiguráció a naplók Serilogból történő feldolgozásához

Olyan helyzetekben, ahol nincs szükség kiterjedt naplókezelésre, a Logstash alternatívája a Beats. A Beats egy olyan eszközcsalád, amely a naplóktól a hálózati adatokig és az üzemidejű információkig sokféle adatot gyűjthet. Számos alkalmazás használja a Logstash és a Beats alkalmazást is.

Miután a Logstash összegyűjtötte a naplókat, valahol el kell helyeznie őket. Bár a Logstash számos különböző kimenetet támogat, az egyik legizgalmasabb az Elasticsearch.

Elasticsearch

Az Elasticsearch egy hatékony keresőmotor, amely képes indexelni a naplókat, amikor megérkeznek. Gyorssá teszi a lekérdezések futtatását a naplókon. Az Elasticsearch nagy mennyiségű naplót képes kezelni, és szélsőséges esetekben számos csomópontra skálázható.

A paramétereket tartalmazó vagy a Logstash-feldolgozással felosztott paraméterekkel rendelkező naplóüzenetek közvetlenül lekérdezhetők, mivel az Elasticsearch megőrzi ezeket az információkat.

A 7–9. ábrán megjelenik egy lekérdezés, amely a legnépszerűbb 10 felkeresett jill@example.com lapra keres rá.

"query": {
    "match": {
      "user": "jill@example.com"
    }
  },
  "aggregations": {
    "top_10_pages": {
      "terms": {
        "field": "page",
        "size": 10
      }
    }
  }

7-9. ábra. Elasticsearch-lekérdezés a felhasználó által felkeresett 10 lap megkereséséhez

Információk megjelenítése a Kibana webes irányítópultjaival

A verem végső összetevője a Kibana. Ez az eszköz interaktív vizualizációkat biztosít egy webes irányítópulton. Az irányítópultokat olyan felhasználók is létrehozhatják, akik nem technikai jellegűek. Az Elasticsearch-indexben található legtöbb adat szerepelhet a Kibana-irányítópultokon. Az egyes felhasználók különböző irányítópult-igényekkel rendelkezhetnek, és a Kibana lehetővé teszi ezt a testreszabást a felhasználóspecifikus irányítópultok engedélyezésével.

Az Elastic Stack telepítése az Azure-ban

Az Elastic stack sokféleképpen telepíthető az Azure-ben. Mint mindig, lehetőség van virtuális gépek kiépítésére és az Elastic Stack közvetlen telepítésére. Ezt a beállítást néhány tapasztalt felhasználó előnyben részesíti, mivel a legmagasabb szintű testreszabhatóságot kínálja. Az infrastruktúrán szolgáltatásként történő üzembe helyezés jelentős felügyeleti többletterhelést jelent, amely arra kényszeríti azokat, akik ezen az úton járnak, hogy a szolgáltatásként nyújtott infrastruktúrával kapcsolatos összes feladatot magukénak vegyék, például a gépek biztonságossá tételét és a up-to-dátumot javításokkal.

A kevesebb többletterheléssel rendelkező lehetőség a számos Docker-tároló egyikének használata, amelyen az Elastic Stack már konfigurálva van. Ezek a tárolók egy meglévő Kubernetes-fürtbe helyezhetők, és az alkalmazáskóddal együtt futtathatók. A sebp/elk tároló egy jól dokumentált és tesztelt Elastic Stack-tároló.

Egy másik lehetőség a nemrég bejelentett ELK-as-a-service ajánlat.

Hivatkozások