Elastik Yığın ile loglama

Tavsiye

Bu içerik, .NET Docs veya çevrimdışı olarak okunabilen ücretsiz indirilebilir bir PDF olarak sağlanan Azure için Bulut Yerel .NET Uygulamaları Tasarlama adlı e-Kitap'tan bir alıntıdır.

Azure eKitap kapak küçük resmi için Buluta Özel .NET uygulamaları.

Birçok iyi merkezi günlükleme aracı vardır ve bunlar, ücretsiz, açık kaynak araçlardan daha pahalı seçeneklere kadar farklı maliyetler taşır. Çoğu durumda, ücretsiz araçlar ücretli teklifler kadar iyi veya daha iyidir. Bu tür araçlardan biri, üç açık kaynak bileşenin birleşimidir: Elasticsearch, Logstash ve Kibana.

Bu araçlar toplu olarak Elastik Yığın veya ELK yığını olarak bilinir.

Elastik Yığın

Elastik Yığın, Kubernetes kümesinden bilgi toplamak için güçlü bir seçenektir. Kubernetes, günlükleri Elasticsearch uç noktasına göndermeyi destekler ve çoğunlukla, başlangıç yapmanız gereken tek şey Şekil 7-5'te gösterildiği gibi ortam değişkenlerini ayarlamaktır:

KUBE_LOGGING_DESTINATION=elasticsearch
KUBE_ENABLE_NODE_LOGGING=true

Şekil 7-5. Kubernetes için yapılandırma değişkenleri

Bu adım, elasticsearch'i kümeye yükler ve tüm küme günlüklerini bu kümeye göndermeyi hedefler.

Kubernetes'ten alınan günlüklerden bir sorgunun sonuçlarını gösteren bir Kibana panosu örneği. An example of a Kibana dashboard showing the results of a query against logs ingested from KubernetesŞekil 7-6 Kubernetes'ten alınan günlüklere yönelik bir sorgunun sonuçlarını gösteren Bir Kibana panosu örneği

Yapılandırma hakkında detaylı bilgi için bkz. Günlük ayarlarını yapılandırma (Kibana).

Elastik Yığın'ın avantajları nelerdir?

Elastic Stack, düşük maliyetli, ölçeklenebilir ve bulut dostu bir şekilde merkezi günlük kaydı sağlar. Kullanıcı arabirimi, veri analizini kolaylaştırır, böylece zamanınızı hantal bir arabirimle savaşmak yerine verilerinizden içgörüler elde ederek geçirebilirsiniz. Dağıtılmış uygulamanız daha fazla ve farklı türde hizmete yayıldığı için günlük ve ölçüm verilerini sisteme beslemeye devam edebilmeniz için çok çeşitli girişleri destekler. Elastik Yığın, büyük veri kümelerinde bile hızlı aramaları destekler ve bu sayede büyük uygulamaların ayrıntılı verileri günlüğe kaydetmesi ve bu verilere etkin bir şekilde erişebilmesi mümkün hale gelir.

Logstash

İlk bileşen Logstash'tir. Bu araç, çok çeşitli farklı kaynaklardan günlük bilgilerini toplamak için kullanılır. Örneğin Logstash, diskten günlükleri okuyabilir ve serilog gibi günlük kitaplıklarından ileti alabilir. Günlükler geldikçe Logstash, üzerinde bazı temel filtreleme ve genişletme işlemleri yapabilir. Örneğin, günlükleriniz IP adresleri içeriyorsa Logstash coğrafi arama yapmak ve bu ileti için bir ülke/bölge, hatta kaynak şehir almak üzere yapılandırılabilir.

Serilog, parametreli kayıt tutmaya olanak tanıyan .NET dilleri için bir günlük kütüphanesidir. Alanları ekleyen bir metin günlüğü iletisi oluşturmak yerine parametreler ayrı tutulur. Bu kitaplık daha akıllı filtreleme ve arama olanağı sağlar. Şekil 7-7'de Logstash'a yazmak için örnek bir Serilog yapılandırması görüntülenir.

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

Şekil 7-7. Http üzerinden günlük bilgilerini doğrudan logstash'e yazmak için serilog yapılandırması

Logstash, Şekil 7-8'de gösterilene benzer bir yapılandırma kullanır.

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

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

Şekil 7-8. Serilog'dan günlükleri almak için Logstash yapılandırması

Kapsamlı günlük işlemenin gerekli olmadığı senaryolarda , Logstash'e Beats olarak bilinen bir alternatif vardır. Beats, günlüklerden ağ verilerine ve çalışma süresi bilgilerine kadar çok çeşitli veriler toplayan bir araç ailesidir. Birçok uygulama hem Logstash hem de Beats kullanır.

Günlükler Logstash tarafından toplandıktan sonra, bunları yerleştirmek için bir yere ihtiyacı vardır. Logstash birçok farklı çıkışı desteklese de, daha heyecan verici olanlarından biri Elasticsearch'tir.

Elasticsearch

Elasticsearch, günlükleri geldikçe dizine kaydedebilen güçlü bir arama motorudur. Günlüklere karşı sorgu çalıştırmayı hızlı hale getirir. Elasticsearch çok büyük miktarlardaki günlükleri işleyebilir ve aşırı durumlarda birçok düğümde ölçeği genişletilebilir.

Parametreleri içerecek şekilde oluşturulmuş veya Logstash işlemesi ile parametreleri ayrılmış günlük iletileri, Elasticsearch bu bilgileri koruduğu için doğrudan sorgulanabilir.

tarafından jill@example.comziyaret edilen ilk 10 sayfayı arayan bir sorgu Şekil 7-9'da görünür.

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

Şekil 7-9. Kullanıcı tarafından ziyaret edilen ilk 10 sayfayı bulmak için bir Elasticsearch sorgusu

Kibana web panolarıyla bilgileri görselleştirme

Yığının son bileşeni Kibana'dır. Bu araç, bir web panosunda etkileşimli görselleştirmeler sağlamak için kullanılır. Panolar teknik olmayan kullanıcılar tarafından bile oluşturulabilir. Elasticsearch dizininde bulunan verilerin çoğu Kibana panolarına eklenebilir. Bireysel kullanıcıların farklı pano istekleri olabilir ve Kibana, kullanıcıya özgü panolara izin veerek bu özelleştirmeyi etkinleştirir.

Azure'da Elastik Yığın yükleme

Elastik yığın, Azure'a birçok yolla yüklenebilir. Her zaman olduğu gibi , sanal makineleri sağlamak ve bunlara doğrudan Elastic Stack yüklemek mümkündür. Bu seçenek, en yüksek düzeyde özelleştirilebilirlik sunduğundan bazı deneyimli kullanıcılar tarafından tercih edilir. Hizmet olarak altyapıya dağıtım yapmak, bu yolu izleyenleri makinelerin güvenliğini sağlama ve düzeltme ekleriyle up-togüncel tutma gibi hizmet olarak altyapıyla ilişkili tüm görevlerin sahipliğini almaya zorlayan önemli bir yönetim yükü getirir.

Daha az maliyetli bir seçenek, Elastic Stack'ın zaten yapılandırılmış olduğu birçok Docker konteynerindan birini kullanmaktır. Bu kapsayıcılar mevcut bir Kubernetes kümesine bırakılabilir ve uygulama koduyla birlikte çalıştırılabilir. sebp/elk kapsayıcısı iyi belgelenmiş ve test edilmiş bir Elastic Stack kapsayıcısıdır.

Bir diğer seçenek de yakın zamanda duyurulan hizmet olarak ELK teklifidir.

Kaynaklar