Masuk ke Graylog dengan Spring Boot

1. Perkenalan

Graylog adalah layanan agregasi log. Sederhananya, ini mampu mengumpulkan jutaan pesan log dari berbagai sumber dan menampilkannya dalam satu antarmuka.

Dan, ini juga menyediakan sejumlah fitur lain seperti peringatan waktu nyata, dasbor dengan grafik dan bagan, dan banyak lagi.

Dalam tutorial ini, kita akan melihat bagaimana mengatur server Graylog dan mengirim pesan log dari aplikasi Spring Boot.

2. Menyiapkan Graylog

Ada beberapa cara untuk menginstal dan menjalankan Graylog. Dalam tutorial ini, kita akan membahas dua cara tercepat: Docker dan Amazon Web Services.

2.1. Buruh pelabuhan

Perintah berikut akan mengunduh semua gambar Docker yang diperlukan dan memulai container untuk setiap layanan:

$ docker run --name mongo -d mongo:3 $ docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ -e ES_JAVA_OPTS="-Xms2g -Xmx4g" \ -e "discovery.type=single-node" -e "xpack.security.enabled=false" \ -e "bootstrap.memory_lock=true" --ulimit memlock=-1:-1 \ -d docker.elastic.co/elasticsearch/elasticsearch:5.6.11 $ docker run --name graylog --link mongo --link elasticsearch \ -p 9000:9000 -p 12201:12201 -p 514:514 -p 5555:5555 \ -e GRAYLOG_WEB_ENDPOINT_URI="//127.0.0.1:9000/api" \ -d graylog/graylog:2.4.6-1

Dasbor Graylog sekarang tersedia menggunakan URL // localhost: 9000 / dan nama pengguna dan kata sandi default keduanya adalah admin .

Meskipun pengaturan Docker adalah yang paling sederhana, itu membutuhkan sejumlah besar memori. Ini juga tidak berfungsi di Docker untuk Mac, jadi mungkin tidak cocok untuk semua platform.

2.2. Layanan Web Amazon

Opsi termudah berikutnya untuk menyiapkan Graylog untuk pengujian adalah Amazon Web Services. Graylog menyediakan AMI resmi yang menyertakan semua dependensi yang diperlukan , meskipun memerlukan beberapa konfigurasi tambahan setelah instalasi.

Kami dapat dengan cepat menerapkan instans EC2 dengan Graylog AMI dengan mengklik di sini dan memilih wilayah. Graylog merekomendasikan penggunaan instance dengan setidaknya 4GB memori .

Setelah instance dimulai, kita perlu melakukan SSH ke host dan membuat beberapa perubahan. Perintah berikut akan mengkonfigurasi layanan Graylog untuk kita:

$ sudo graylog-ctl enforce-ssl $ sudo graylog-ctl set-external-ip //:443/api/ $ sudo graylog-ctl reconfigure

Kami juga perlu memperbarui grup keamanan yang dibuat dengan instans EC2 untuk mengizinkan lalu lintas jaringan pada port tertentu. Grafik di bawah ini menunjukkan port dan protokol yang perlu diaktifkan:

Dasbor Graylog sekarang tersedia menggunakan URL /// dan nama pengguna serta kata sandi default keduanya adalah admin .

2.3. Instalasi Graylog Lainnya

Selain Docker dan AWS, ada juga paket Graylog untuk berbagai sistem operasi. Dengan pendekatan ini, kami juga harus menyiapkan layanan ElasticSearch dan MongoDB .

Karena alasan ini, Docker dan AWS jauh lebih mudah disiapkan, terutama untuk tujuan pengembangan dan pengujian.

3. Mengirim Pesan Log

Dengan Graylog aktif dan berjalan, kita sekarang harus mengkonfigurasi aplikasi Spring Boot untuk mengirim pesan log ke server Graylog.

Kerangka kerja logging Java apa pun dapat mendukung pengiriman pesan ke server Graylog menggunakan protokol GELF.

3.1. Log4J

Saat ini satu-satunya framework logging yang didukung secara resmi adalah Log4J. Graylog menyediakan appender, yang tersedia di pusat Maven.

Kita dapat mengaktifkannya dengan menambahkan dependensi Maven berikut ke file pom.xml apa pun :

 org.graylog2 gelfj 1.1.16 

Kita juga harus mengecualikan modul starter logging di mana pun kita menggunakan modul starter Spring Boot:

 org.springframework.boot spring-boot-starter-web   org.springframework.boot spring-boot-starter-logging   

Sekarang kita dapat mendefinisikan appender baru di file log4j.xml kita :

Ini akan mengonfigurasi semua pesan log dengan level INFO atau lebih tinggi untuk masuk ke appender Graylog, yang kemudian mengirim pesan log ke server Graylog.

3.2. Kerangka Kerja Logging Lainnya

Pasar Graylog memiliki pustaka tambahan yang mendukung berbagai kerangka kerja logging lainnya seperti Logback, Log4J2, dan banyak lagi. Berhati-hatilah karena pustaka ini tidak dikelola oleh Graylog . Beberapa dari mereka ditinggalkan, dan yang lainnya memiliki sedikit atau tidak ada dokumentasi.

Perhatian harus digunakan saat mengandalkan pustaka pihak ketiga ini.

3.3. Graylog Collector Sidecar

Pilihan lain untuk pengumpulan log adalah Graylog Collector Sidecar. Sidecar adalah proses yang berjalan di sepanjang pengumpul file, mengirimkan konten file log ke server Graylog.

Sidecar adalah opsi yang bagus untuk aplikasi yang tidak memungkinkan untuk mengubah file konfigurasi log. Dan karena ia membaca file log langsung dari disk, ia juga dapat digunakan untuk mengintegrasikan pesan log dari platform dan bahasa pemrograman apa pun .

4. Melihat Pesan di Graylog

Kita dapat menggunakan dashboard Graylog untuk mengkonfirmasi pengiriman pesan log kita yang berhasil. Menggunakan sumber filter : localhost akan menampilkan pesan log dari contoh konfigurasi log4j kami di atas:

5. Kesimpulan

Graylog hanyalah salah satu dari banyak layanan agregasi log. Itu dapat dengan cepat mencari jutaan pesan log, memvisualisasikan data log secara real-time, dan mengirim peringatan ketika kondisi tertentu benar.

Mengintegrasikan Graylog ke dalam aplikasi Spring Boot hanya memerlukan beberapa baris konfigurasi dan tanpa kode baru.

Contoh kode, seperti biasa, dapat ditemukan di GitHub.