Apakah Anda mencari sistem yang dapat menafsirkan file log Anda, menyimpannya di lingkungan yang aman, dan mengumpulkan data yang terorganisir dengan baik untuk analisis? Nah, pemusatan manajemen log dengan Graylog menggunakan Docker bisa menjadi apa yang Anda cari!
Dalam tutorial ini, Anda akan belajar cara menggunakan Graylog dan Docker untuk membangun sistem log terpusat untuk mengumpulkan data Syslog dari mesin Ubuntu Anda.
Baca terus dan mulailah memusatkan manajemen log Anda!
Prasyarat
Posting ini akan menjadi tutorial langkah demi langkah. Untuk mengikuti, pastikan untuk memiliki yang berikut:
- Dua mesin Ubuntu (satu host dan satu klien) – Tutorial ini menggunakan Ubuntu 20.04, tetapi distro Linux lainnya akan berfungsi.
- Rsyslog di mesin klien.
- Docker diinstal pada mesin host. Versi Docker yang digunakan untuk tutorial ini adalah 20.10.7
- Docker-compose diinstal pada mesin host.
- Utilitas Pwgen perlu diinstal pada mesin host untuk membuat sandi rahasia acak.
Men-deploy Graylog Menggunakan Docker Compose
Apa sih Graylog itu? Graylog adalah platform manajemen log sumber terbuka. Graylog dapat mengumpulkan, mengindeks, dan menganalisis data terstruktur dan tidak terstruktur dari sumber. Salah satu sumber ini adalah sistem operasi secara real-time.
Sebelum menerapkan Graylog, Anda harus terlebih dahulu menginstal Graylog di mesin host Anda menggunakan Docker Compose.
Misalkan Anda menggunakan komputer Ubuntu 20.04 berbasis cloud. Dalam hal ini, Anda harus mengubah grup keamanan atau aturan firewall untuk mengizinkan port berikut:
1514
dan12201
untuk koneksi TCP dan UDP dan9000
hanya untuk koneksi TCP.
1. Buka klien SSH favorit Anda, dan sambungkan ke mesin Anda.
2. Selanjutnya, jalankan perintah di bawah ini untuk membuat direktori baru di direktori home Anda dan beralih ke direktori tersebut. Anda dapat memberi nama direktori sesuai keinginan. Tapi untuk demo ini, direktorinya bernama ~/graylog.
mkdir graylog
cd graylog
3. Buat file YAML bernama docker-compose.yml di ~/graylog . Anda direktori, kemudian isi file dengan konfigurasi di bawah ini. Tapi jangan simpan perubahannya dulu. Untuk melindungi login Graylog dan membatasi akses ke data Anda, Anda harus membuat kata sandi rahasia.
Dalam file yang baru dibuat, Anda akan menemukan konfigurasi untuk menyiapkan komponen Graylog, MongoDB, dan ElasticSearch. Graylog membutuhkan semua komponen ini untuk diatur dan dijalankan secara bersamaan agar Graylog berfungsi secara efektif.
version: '2'
services:
# MongoDB: https://hub.docker.com/_/mongo/
MongoDB: # Mongodb service
image: mongo:4.2 # Version of Mongodb docker image
volumes:
- mongo_data:/data/db # Persisted mongodb data
# Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/docker.html
elasticsearch: # ElasticSearch service
image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2 # Version of elasticsearch image
volumes:
- es_data:/usr/share/elasticsearch/data # Persisted elasticsearch data
environment:
- http.host=0.0.0.0
- transport.host=localhost
- network.host=0.0.0.0
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
# Unlimited amount of memory set for elasticsearch container
memlock:
soft: -1
hard: -1
# Resource limit for elasticsearch set to 1 gigabyte
mem_limit: 1g
# Graylog: https://hub.docker.com/r/graylog/graylog/
graylog:
image: graylog/graylog:4.2 # Version of Graylog docker image
volumes:
- graylog_data:/usr/share/graylog/data # Persisted Graylog data
environment:
# CHANGE ME (must be at least 16 characters)!
- GRAYLOG_PASSWORD_SECRET=somepasswordpepper
# Password: admin
- GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
- GRAYLOG_HTTP_EXTERNAL_URI=http://127.0.0.1:9000/
- GRAYLOG_WEB_ENDPOINT_URI=http://127.0.0.1:9000/api
# Command to run as soon as components are started
entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 -- /docker-entrypoint.sh
# Containers that Graylog depends on
links:
- mongodb:mongo
- elasticsearch
restart: always # Graylog container set to always restart when stopped
depends_on:
- mongodb
- elasticsearch
ports:
# Graylog web interface and REST API
- 9000:9000
# Syslog TCP
- 1514:1514
# Syslog UDP
- 1514:1514/udp
# GELF TCP
- 12201:12201
# GELF UDP
- 12201:12201/udp
# Volumes for persisting data, see https://docs.docker.com/engine/admin/volumes/volumes/
volumes:
mongo_data:
driver: local
es_data:
driver: local
graylog_data:
driver: local
4. Sekarang, jalankan pwgen
perintah di bawah ini untuk menghasilkan satu kata sandi acak (-N
) dengan 96 (-s 96
) karakter.
pwgen -N 1 -s 96
5. Kata sandi rahasia yang Anda buat akan terlihat seperti di bawah ini. Catat kata sandi rahasia Anda karena Anda akan menyetelnya di docker-compose.yml file (langkah enam).
6. Kembali ke docker-compose.yml file dan ganti somepasswordpepper
di GRAYLOG_PASSWORD_SECRET
dengan kata sandi rahasia Anda yang baru dibuat (langkah lima). Anda akan menggunakan kata sandi ini untuk enkripsi kata sandi dan pengasinan. Tanpa sandi rahasia ini, penampung Graylog tidak akan dimulai.
7. Jalankan perintah di bawah ini untuk menghasilkan hash SHA2 dari kata sandi yang Anda pilih. Kata sandi ini diperlukan untuk login awal ke Graylog.
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Masukkan kata sandi admin pilihan Anda saat diminta, seperti yang ditunjukkan di bawah ini, dan tekan ENTER. Setelah Anda memasukkan kata sandi, kata sandi hash Anda dibuat.
Catat kata sandi hash Anda karena Anda akan menyetelnya di docker-compose.yml berkas (langkah delapan).
8. Ganti nilai GRAYLOG_ROOT_PASSWORD_SHA2
variabel lingkungan di docker-compose.yml file dengan kata sandi hash SHA2 yang Anda buat sebelumnya (langkah tujuh). Simpan perubahan di docker-compose.yml file dan keluar dari editor.
9. Terakhir, jalankan docker-compose up
perintah di bawah ini untuk menyebarkan wadah ElasticSearch, MongoDB, dan Graylog Docker dalam mode terpisah (-d
). Perintah ini menariknya dari hub Docker dan memulainya sebagai wadah agar Graylog berfungsi dengan benar.
# Starting up MongoDB, ElasticSearch, and Graylog containers in detached mode
sudo docker-compose up -d
Gambar di bawah ini menunjukkan bahwa gambar MongoDB, ElasticSearch, dan Graylog Docker telah ditarik dari hub Docker dan dimulai sebagai container.
Mengubah Nilai Pecahan Indeks untuk ElasticSearch
Anda baru saja menerapkan Graylog, dan itu merupakan langkah maju yang besar dalam memusatkan manajemen log. Tapi sekarang, saatnya untuk mengkonfigurasi Graylog. Anda akan mengubah nilai pecahan ElasticSearch bergantung pada jumlah node/wadah ElasticSearch yang Anda jalankan.
Pecahan adalah unit di mana Elasticsearch mendistribusikan data di sekitar beberapa node. Jumlah pecahan yang optimal per simpul adalah satu.
1. Buka browser web favorit Anda dan navigasikan ke https://
Masukkan admin sebagai nama pengguna, dan masukkan kata sandi admin yang Anda buat di bagian “Menyebarkan Graylog Menggunakan Docker Compose” (langkah tujuh). Untuk tutorial ini, kata sandinya adalah adamtheautomator.
Setelah masuk, Anda akan melihat halaman Memulai Graylog, seperti yang ditunjukkan di bawah ini.
2. Selanjutnya, klik Sistem menu —> Indeks , seperti yang ditunjukkan di bawah ini, untuk mengakses Indeks &Indeks halaman (langkah tiga), di mana Anda dapat memilih untuk mengedit kumpulan indeks default.
3. Klik Edit untuk mengelola kumpulan indeks default Graylog dan mengubah nilai pecahan ElasticSearch. Nilai default untuk pecahan ElasticSearch adalah empat, dan Anda harus mengubahnya (langkah empat).
4. Terakhir, ubah jumlah pecahan ElasticSearch menjadi satu (1 ) karena Anda hanya menjalankan satu simpul/wadah ElasticSearch, dan klik Simpan di bagian bawah halaman.
Menyiapkan Graylog untuk Mengumpulkan Log dari Syslog
Anda baru saja mengonfigurasi Graylog dengan mengubah nilai untuk pecahan Indeks untuk ElasticSearch. Tetapi Anda juga harus mengatur Graylog untuk mengumpulkan data log dari Syslog di mesin klien. Bagaimana? Anda akan menyiapkan input Graylog untuk menerima data log yang dikirim dari mesin klien Anda melalui Syslog untuk diuraikan di mesin host.
Dengan Syslog sebagai protokol logging berbasis jaringan standar, Anda dapat mengirimkan pesan peristiwa atau data log mesin klien Anda ke Graylog.
1. Klik Sistem menu —> Masukan untuk mengakses Masukan halaman, tempat Anda akan menyiapkan input UDP Syslog.
2. Cari dan pilih Syslog UDP di kotak telusur, seperti yang ditunjukkan di bawah, lalu klik Luncurkan masukan baru .
3. Terakhir, konfigurasikan masukan UDP Syslog yang baru dengan yang berikut ini, dan klik Simpan di bagian bawah jendela pop-up untuk menyimpan dan menerapkan perubahan:
- Pilih simpul Anda dari Simpul kotak tarik-turun.
- Setel Judul untuk setiap kata yang Anda inginkan. Untuk demo ini, judulnya adalah syslog .
- Setel Alamat pengikatan ke 0.0.0.0, sehingga Graylog dapat mendengarkan acara yang masuk di mana saja.
- Setel Port ke port UDP Syslog
1514
seperti yang didefinisikan dalam docker-compose.yml file di bawahSyslog UDP
.
Di bawah, Anda akan melihat input UDP Syslog berjalan sebagai bagian dari Input lokal setelah konfigurasi.
Mengonfigurasi RSyslog untuk Mengirim Data Syslog ke Graylog
Anda telah menyiapkan input UDP Syslog untuk menerima data yang dikirim dari mesin klien Anda, tetapi bagaimana Anda mengirim data ke Graylog? Rsyslog akan melakukan triknya!
Anda akan membuat file konfigurasi untuk RSyslog untuk mendorong data Syslog Anda dari mesin klien Anda ke Graylog yang berjalan di mesin host Anda.
1. Buat file konfigurasi di /etc/rsyslog.d direktori pada mesin klien Anda. Anda dapat memberi nama file sesuai keinginan, tetapi file tersebut bernama 90-graylog.conf untuk demo ini.
2. Selanjutnya, tambahkan baris berikut ke 90-graylog.conf file, simpan perubahan dan tutup editor. Ganti 34.76.103.44
dengan alamat IP mesin host Anda tempat Graylog dijalankan.
Konfigurasi di bawah ini mengirimkan data Syslog (RSYSLOG_SyslogProtocol23Format
) dari mesin host (@34.76.103.44
) ke Graylog.
*.* @34.76.103.44:1514;RSYSLOG_SyslogProtocol23Format
3. Jalankan perintah di bawah ini untuk memulai kembali rsyslog
agar perubahan diterapkan.
sudo systemctl restart rsyslog
4. Beralih kembali ke antarmuka web Graylog dan klik Telusuri menu untuk melihat data Syslog Anda yang dikumpulkan dengan rapi diurai mirip dengan yang di bawah ini.
Kesimpulan
Dalam tutorial ini, Anda telah belajar membuat sistem manajemen log terpusat Anda sendiri dengan Graylog menggunakan Docker dan berhasil memverifikasi data Syslog yang dikumpulkan dari mesin klien Anda.
Pada titik ini, Anda telah menyadari bahwa mengumpulkan dan menyimpan data yang terorganisir dengan baik di lingkungan yang aman untuk analisis tidak akan merepotkan lagi.
Log apa lagi yang bisa Anda kumpulkan dengan Graylog? Mungkin menyiapkan host web untuk mengirim log NGINX ke Graylog untuk penguraian dan analisis lebih lanjut?