GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Memusatkan Manajemen Log dengan Graylog Menggunakan Docker

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 dan 12201 untuk koneksi TCP dan UDP dan 9000 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://:9000 , di mana HOST_IP adalah alamat IP mesin host Anda. Jika semuanya berjalan dengan baik, Anda akan masuk ke layar login Graylog yang ditunjukkan di bawah ini.

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 bawah Syslog 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?


Docker
  1. Siapkan Nextcloud dengan Redis menggunakan Docker

  2. Cara Menginstal Docker menggunakan Ansible [Debian/Ubuntu]

  3. Cara Menginstal Jenkins dengan Docker

  1. Cara menginstal WordPress menggunakan Docker

  2. Cara Menyebarkan Layanan Mikro dengan Docker

  3. Cara Menyebarkan Aplikasi dengan Rancher

  1. Cara Menyebarkan Wadah nginx dengan Docker di Linode

  2. Cara Menginstal Docker di CentOS

  3. Bagaimana cara mengisi file dengan FF menggunakan dd?