Log masuk ke Graylog dengan Spring Boot

1. Pengenalan

Graylog adalah perkhidmatan pengumpulan log. Ringkasnya, ia mampu mengumpulkan berjuta-juta mesej log dari pelbagai sumber dan memaparkannya dalam satu muka.

Dan, ia juga menyediakan sejumlah ciri lain seperti amaran masa nyata, papan pemuka dengan grafik dan carta, dan banyak lagi.

Dalam tutorial ini, kita akan melihat cara menyediakan pelayan Graylog dan menghantar mesej log kepadanya dari aplikasi Spring Boot.

2. Menubuhkan Graylog

Terdapat beberapa cara untuk memasang dan menjalankan Graylog. Dalam tutorial ini, kita akan membincangkan dua cara terpantas: Docker dan Amazon Web Services.

2.1. Docker

Perintah berikut akan memuat turun semua gambar Docker yang diperlukan dan memulakan wadah untuk setiap perkhidmatan:

$ 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

Papan pemuka Graylog kini tersedia menggunakan URL // localhost: 9000 / dan nama pengguna dan kata laluan lalai adalah kedua-dua pentadbir .

Walaupun persediaan Docker adalah yang paling mudah, ia memerlukan banyak memori. Ia juga tidak berfungsi pada Docker untuk Mac, jadi mungkin tidak sesuai untuk semua platform.

2.2. Perkhidmatan Web Amazon

Pilihan termudah seterusnya untuk menyiapkan Graylog untuk ujian adalah Perkhidmatan Web Amazon. Graylog menyediakan AMI rasmi yang merangkumi semua kebergantungan yang diperlukan , walaupun memerlukan beberapa konfigurasi tambahan setelah pemasangan.

Kita dapat menggunakan instance EC2 dengan cepat dengan Graylog AMI dengan mengklik di sini dan memilih wilayah. Graylog mengesyorkan menggunakan contoh dengan memori sekurang-kurangnya 4GB .

Setelah instance bermula, kita perlu memasukkan SSH ke host dan membuat beberapa perubahan. Perintah berikut akan mengkonfigurasi perkhidmatan Graylog untuk kita:

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

Kami juga perlu mengemas kini kumpulan keselamatan yang dibuat dengan contoh EC2 untuk membolehkan lalu lintas rangkaian pada port tertentu. Grafik di bawah menunjukkan port dan protokol yang perlu diaktifkan:

Papan pemuka Graylog kini tersedia menggunakan URL /// dan nama pengguna dan kata laluan lalai adalah pentadbir .

2.3. Pemasangan Graylog Lain

Selain Docker dan AWS, terdapat juga pakej Graylog untuk pelbagai sistem operasi. Dengan pendekatan ini, kita juga harus menyediakan perkhidmatan ElasticSearch dan MongoDB .

Atas sebab ini, Docker dan AWS lebih mudah disediakan, terutamanya untuk tujuan pembangunan dan ujian.

3. Menghantar Mesej Log

Dengan Graylog aktif dan aktif, kita sekarang mesti mengkonfigurasi aplikasi Spring Boot untuk menghantar mesej log ke pelayan Graylog.

Kerangka pembalakan Java mana pun dapat menyokong pengiriman pesan ke pelayan Graylog menggunakan protokol GELF.

3.1. Log4J

Pada masa ini satu-satunya rangka kerja pembalakan yang disokong secara rasmi adalah Log4J. Graylog menyediakan pelengkap, yang terdapat di pusat Maven.

Kita boleh mengaktifkannya dengan menambahkan ketergantungan Maven berikut ke mana-mana fail pom.xml :

 org.graylog2 gelfj 1.1.16 

Kita juga mesti mengecualikan modul pemula pembalakan di mana sahaja kita menggunakan modul pemula Spring Boot:

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

Sekarang kita dapat menentukan appender baru dalam fail log4j.xml kami :

Ini akan mengkonfigurasi semua mesej log dengan tahap INFO atau lebih tinggi untuk pergi ke Graylog appender, yang seterusnya akan menghantar mesej log ke server Graylog.

3.2. Kerangka Pembalakan Lain

Pasar Graylog mempunyai perpustakaan tambahan yang menyokong pelbagai kerangka kerja pembalakan lain seperti Logback, Log4J2, dan banyak lagi. Berhati-hatilah bahawa perpustakaan ini tidak dikendalikan oleh Graylog . Sebahagian daripada mereka ditinggalkan, dan yang lain mempunyai sedikit atau tidak ada dokumentasi.

Hati-hati harus digunakan semasa bergantung pada perpustakaan pihak ketiga ini.

3.3. Sidecar Pengumpul Graylog

Pilihan lain untuk pengumpulan log ialah Graylog Collector Sidecar. Sidecar adalah proses yang berjalan di sepanjang pengumpul fail, menghantar kandungan fail log ke pelayan Graylog.

Sidecar adalah pilihan yang bagus untuk aplikasi di mana menukar fail konfigurasi log tidak mungkin dilakukan. Dan kerana membaca fail log secara langsung dari cakera, ia juga dapat digunakan untuk mengintegrasikan mesej log dari platform dan bahasa pengaturcaraan mana pun .

4. Melihat Mesej dalam Graylog

Kami boleh menggunakan papan pemuka Graylog untuk mengesahkan penghantaran mesej log kami yang berjaya. Menggunakan sumber penapis : localhost akan menunjukkan mesej log dari contoh log4j konfigurasi kami di atas:

5. Kesimpulan

Graylog adalah salah satu daripada banyak perkhidmatan agregasi log. Ia dapat mencari berjuta-juta mesej log dengan cepat, memvisualisasikan data log dalam masa nyata, dan menghantar makluman apabila keadaan tertentu benar.

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

Contoh kod, seperti biasa, boleh didapati di GitHub.