Pengelogan dengan Elastic Stack

Petunjuk / Saran

Konten ini adalah kutipan dari eBook, Merancang Aplikasi .NET Cloud Native untuk Azure, tersedia di .NET Docs atau sebagai PDF gratis yang dapat diunduh yang dapat dibaca secara offline.

aplikasi .NET Cloud Native untuk gambar mini sampul Azure eBook.

Ada banyak alat pengelogan terpusat yang baik dan bervariasi dalam biaya mulai dari gratis, alat sumber terbuka, hingga opsi yang lebih mahal. Dalam banyak kasus, alat gratis sebagus atau lebih baik daripada penawaran berbayar. Salah satu alat tersebut adalah kombinasi dari tiga komponen sumber terbuka: Elasticsearch, Logstash, dan Kibana.

Secara keseluruhan, alat-alat ini dikenal sebagai Elastic Stack atau ELK Stack.

Tumpukan Elastis

Elastic Stack adalah opsi yang kuat untuk mengumpulkan informasi dari kluster Kubernetes. Kubernetes mendukung pengiriman log ke titik akhir Elasticsearch, dan sebagian besar, yang perlu Anda mulai adalah mengatur variabel lingkungan seperti yang ditunjukkan pada Gambar 7-5:

KUBE_LOGGING_DESTINATION=elasticsearch
KUBE_ENABLE_NODE_LOGGING=true

Gambar 7-5. Variabel konfigurasi untuk Kubernetes

Langkah ini akan menginstal Elasticsearch pada kluster dan menargetkan pengiriman semua log kluster ke dalamnya.

Contoh dasbor Kibana yang menunjukkan hasil kueri terhadap log yang diserap dari Kubernetes Figure 7-6. Contoh dasbor Kibana yang menunjukkan hasil kueri terhadap log yang diserap dari Kubernetes

Untuk informasi selengkapnya tentang konfigurasi, lihat Mengonfigurasi pengelogan (Kibana).

Apa keuntungan dari Elastic Stack?

Elastic Stack menyediakan pengelogan terpusat dengan cara yang murah, dapat diskalakan, dan ramah cloud. Antarmuka penggunanya menyederhanakan analisis data sehingga Anda dapat menghabiskan waktu Anda dengan memancarkan wawasan dari data Anda alih-alih bertarung dengan antarmuka yang kikuk. Ini mendukung berbagai jenis input, dengan demikian saat aplikasi terdistribusi Anda mencakup lebih banyak dan berbagai jenis layanan, Anda dapat mengharapkan untuk terus dapat memasukkan data log dan metrik ke dalam sistem. Elastic Stack juga mendukung pencarian cepat bahkan di seluruh himpunan data besar, sehingga memungkinkan bahkan bagi aplikasi besar untuk mencatat data terperinci dan masih dapat memiliki visibilitas ke dalamnya dengan cara yang berkinerja.

Logstash

Komponen pertama adalah Logstash. Alat ini digunakan untuk mengumpulkan informasi log dari berbagai sumber yang berbeda. Misalnya, Logstash dapat membaca log dari disk dan juga menerima pesan dari pustaka pengelogan seperti Serilog. Logstash dapat melakukan beberapa penyaringan dan ekspansi dasar pada log saat log diterima. Misalnya, jika log Anda berisi alamat IP, Maka Logstash dapat dikonfigurasi untuk melakukan pencarian geografis dan mendapatkan negara/wilayah atau bahkan kota asal untuk pesan tersebut.

Serilog adalah pustaka pengelogan untuk bahasa .NET, yang memungkinkan pengelogan berparameter. Alih-alih menghasilkan pesan log tekstual yang menyematkan bidang, parameter dipisahkan. Pustaka ini memungkinkan pemfilteran dan pencarian yang lebih cerdas. Contoh konfigurasi Serilog untuk menulis ke Logstash muncul di Gambar 7-7.

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

Gambar 7-7. Konfigurasi serilog untuk menulis informasi log langsung ke logstash melalui HTTP

Logstash akan menggunakan konfigurasi seperti yang ditunjukkan pada Gambar 7-8.

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

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

Gambar 7-8. Konfigurasi Logstash untuk mengkonsumsi log dari Serilog

Untuk skenario di mana manipulasi log yang luas tidak diperlukan ada alternatif untuk Logstash yang dikenal sebagai Beats. Beats adalah sekumpulan alat yang dapat mengumpulkan berbagai data dari log hingga data jaringan dan informasi waktu operasional. Banyak aplikasi akan menggunakan Logstash dan Beats.

Setelah log dikumpulkan oleh Logstash, Logstash perlu di suatu tempat untuk menyimpannya. Meskipun Logstash mendukung banyak output yang berbeda, salah satu yang lebih menarik adalah Elasticsearch.

Elasticsearch

Elasticsearch adalah mesin pencari kuat yang dapat mengindeks log saat mereka tiba. Ini membuat pelaksanaan kueri terhadap log menjadi cepat. Elasticsearch dapat menangani jumlah log yang sangat besar dan, dalam kasus ekstrem, dapat diskalakan ke banyak simpul.

Pesan log yang telah dibuat untuk berisi parameter atau yang memiliki parameter yang dibagi darinya melalui pemrosesan Logstash, dapat dikueri langsung karena Elasticsearch mempertahankan informasi ini.

Kueri yang mencari 10 halaman teratas yang dikunjungi oleh jill@example.com, muncul di Gambar 7-9.

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

Gambar 7-9. Kueri Elasticsearch untuk menemukan 10 halaman teratas yang dikunjungi oleh pengguna

Memvisualisasikan informasi dengan dasbor web Kibana

Komponen akhir tumpukan adalah Kibana. Alat ini digunakan untuk menyediakan visualisasi interaktif di dasbor web. Dasbor dapat dibuat bahkan oleh pengguna yang non-teknis. Sebagian besar data yang tersimpan di indeks Elasticsearch dapat disertakan dalam dasbor Kibana. Pengguna individual mungkin memiliki keinginan dasbor yang berbeda dan Kibana memungkinkan penyesuaian ini melalui memungkinkan dasbor khusus pengguna.

Menginstal Elastic Stack di Azure

Tumpukan Elastic dapat diinstal di Azure dalam banyak cara. Seperti biasa, Anda dapat menyediakan komputer virtual dan menginstal Elastic Stack secara langsung. Opsi ini lebih disukai oleh beberapa pengguna berpengalaman karena menawarkan tingkat penyesuaian tertinggi. Menyebarkan infrastruktur sebagai layanan memperkenalkan overhead manajemen yang signifikan yang memaksa mereka yang mengambil jalur tersebut untuk mengambil kepemilikan semua tugas yang terkait dengan infrastruktur sebagai layanan seperti mengamankan mesin dan menjaga up-to-tanggal dengan patch.

Opsi dengan overhead yang lebih sedikit adalah menggunakan salah satu dari banyak kontainer Docker tempat Elastic Stack telah dikonfigurasi. Kontainer ini dapat dihilangkan ke kluster Kubernetes yang ada dan dijalankan bersama kode aplikasi. Kontainer sebp/elk adalah kontainer Elastic Stack yang didokumen dengan baik dan teruji.

Opsi lain adalah penawaran ELK-as-a-service yang baru-baru ini diumumkan.

Referensi