Cara Install Elasticsearch, Logstash, dan Kibana (ELK Stack) di CentOS/RHEL 7


Jika Anda adalah orang yang pernah atau pernah bertugas memeriksa dan menganalisis log sistem di Linux, Anda pasti tahu betapa buruknya tugas tersebut jika beberapa layanan dipantau secara bersamaan.

Di masa lalu, tugas tersebut sebagian besar harus dilakukan secara manual, dengan setiap jenis log ditangani secara terpisah. Untungnya, kombinasi Elasticsearch, Logstash, dan Kibana di sisi server, bersama dengan Filebeat di sisi klien sisi, menjadikan tugas yang tadinya sulit itu tampak seperti berjalan-jalan di taman saat ini.

Tiga komponen pertama membentuk apa yang disebut tumpukan ELK, yang tujuan utamanya adalah mengumpulkan log dari beberapa server secara bersamaan (juga dikenal sebagai logging terpusat).

Bacaan yang Disarankan: 4 Alat Pemantauan dan Manajemen Log Sumber Terbuka yang Baik untuk Linux

Antarmuka web berbasis java bawaan memungkinkan Anda memeriksa log dengan cepat untuk perbandingan dan pemecahan masalah yang lebih mudah. Log klien ini dikirim ke server pusat oleh Filebeat, yang dapat digambarkan sebagai agen pengiriman log.

Mari kita lihat bagaimana semua bagian ini cocok satu sama lain. Lingkungan pengujian kami akan terdiri dari mesin berikut:

Central Server: CentOS 7 (IP address: 192.168.0.29). 2 GB of RAM.
Client #1: CentOS 7 (IP address: 192.168.0.100). 1 GB of RAM.
Client #2: Debian 8 (IP address: 192.168.0.101). 1 GB of RAM.

Harap dicatat bahwa nilai RAM yang diberikan di sini bukanlah prasyarat ketat, namun nilai yang direkomendasikan untuk keberhasilan penerapan tumpukan ELK di server pusat. RAM yang lebih sedikit pada klien tidak akan membuat banyak perbedaan, jika pun ada, sama sekali.

Menginstal ELK Stack di Server

Mari kita mulai dengan menginstal tumpukan ELK di server, beserta penjelasan singkat tentang fungsi setiap komponen:

  1. Elasticsearch menyimpan log yang dikirim oleh klien.
  2. Logstash memproses log tersebut.
  3. Kibana menyediakan antarmuka web yang akan membantu kami memeriksa dan menganalisis log.

Instal paket berikut di server pusat. Pertama, kita akan menginstal Java JDK versi 8 (pembaruan 102, yang terbaru pada saat penulisan ini), yang merupakan ketergantungan dari komponen ELK.

Anda mungkin ingin memeriksa terlebih dahulu di halaman unduhan Java di sini untuk melihat apakah ada pembaruan terbaru yang tersedia.

yum update
cd /opt
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jre-8u102-linux-x64.rpm"
rpm -Uvh jre-8u102-linux-x64.rpm

Saatnya memeriksa apakah instalasi berhasil diselesaikan:

java -version

Untuk menginstal Elasticsearch, Logstash, dan Kibana versi terbaru, kita harus membuat repositori untuk yum secara manual sebagai berikut:

Aktifkan Repositori Elasticsearch

1. Impor kunci GPG publik Elasticsearch ke pengelola paket rpm:

rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

2. Masukkan baris berikut ke file konfigurasi repositori elasticsearch.repo:

[elasticsearch]
name=Elasticsearch repository
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

3. Instal paket Elasticsearch.

yum install elasticsearch

Ketika instalasi selesai, Anda akan diminta untuk memulai dan mengaktifkan elasticsearch:

4. Mulai dan aktifkan layanan.

systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch

5. Izinkan lalu lintas melalui port TCP 9200 di firewall Anda:

firewall-cmd --add-port=9200/tcp
firewall-cmd --add-port=9200/tcp --permanent

6. Periksa apakah Elasticsearch merespons permintaan sederhana melalui HTTP:

curl -X GET http://localhost:9200

Output dari perintah di atas harus serupa dengan:

Pastikan Anda menyelesaikan langkah-langkah di atas dan kemudian melanjutkan dengan Logstash. Karena Logstash dan Kibana berbagi kunci Elasticsearch GPG, tidak perlu mengimpor ulang sebelum menginstal paket.

Bacaan yang Disarankan: Kelola Log Sistem (Konfigurasi, Putar, dan Impor Ke Basis Data) di CentOS 7

Aktifkan Repositori Logstash

7. Masukkan baris berikut ke file konfigurasi repositori logstash.repo:

[logstash]
name=Logstash
baseurl=http://packages.elasticsearch.org/logstash/2.2/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

8. Instal paket Logstash:

yum install logstash

9. Tambahkan sertifikat SSL berdasarkan alamat IP server ELK pada baris berikut di bawah bagian [ v3_ca ] di /etc/pki/tls/openssl.cnf:

[ v3_ca ]
subjectAltName = IP: 192.168.0.29

10. Buat sertifikat yang ditandatangani sendiri dan valid selama 365 hari:

cd /etc/pki/tls
openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

11. Konfigurasikan file input, output, dan filter Logstash:

Input: Buat /etc/logstash/conf.d/input.conf dan masukkan baris berikut ke dalamnya. Hal ini penting bagi Logstash untuk “mempelajari ” cara memproses ketukan yang datang dari klien. Pastikan jalur ke sertifikat dan kunci cocok dengan jalur yang benar seperti yang dijelaskan pada langkah sebelumnya:

input {
  beats {
	port => 5044
	ssl => true
	ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
	ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}

File keluaran (/etc/logstash/conf.d/output.conf):


output {
  elasticsearch {
	hosts => ["localhost:9200"]
	sniffing => true
	manage_template => false
	index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
	document_type => "%{[@metadata][type]}"
  }
}

Filter berkas (/etc/logstash/conf.d/filter.conf). Kami akan mencatat pesan syslog untuk kesederhanaan:


filter {
if [type] == "syslog" {
	grok {
  	match => { "message" => "%{SYSLOGLINE}" }
	}

	date {
match => [ "timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
  }
}

12. Verifikasi file konfigurasi Logstash.

service logstash configtest

13. Mulai dan aktifkan logstash:

systemctl daemon-reload
systemctl start logstash
systemctl enable logstash

14. Konfigurasikan firewall untuk mengizinkan Logstash mendapatkan log dari klien (port TCP 5044):

firewall-cmd --add-port=5044/tcp
firewall-cmd --add-port=5044/tcp --permanent

Aktifkan Repositori Kibana

14. Masukkan baris berikut ke file konfigurasi repositori kibana.repo:

[kibana]
name=Kibana repository
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

15. Instal paket Kibana:

yum install kibana

16. Mulai dan aktifkan Kibana.

systemctl daemon-reload
systemctl start kibana
systemctl enable kibana

17. Pastikan Anda dapat mengakses antarmuka web Kibana dari komputer lain (izinkan lalu lintas pada port TCP 5601):

firewall-cmd --add-port=5601/tcp
firewall-cmd --add-port=5601/tcp --permanent

18. Luncurkan Kibana (http://192.168.0.29:5601) untuk memverifikasi bahwa Anda dapat mengakses antarmuka web:

Kami akan kembali ke sini setelah kami menginstal dan mengkonfigurasi Filebeat pada klien.

Saran Baca: Pantau Log Server Secara Real-Time dengan Alat “Log.io” di Linux

Instal Filebeat di Server Klien

Kami akan menunjukkan cara melakukan ini untuk Klien #1 (ulangi untuk Klien #2 setelahnya, ubah jalur jika berlaku untuk distribusi Anda).

1. Salin sertifikat SSL dari server ke klien:

scp /etc/pki/tls/certs/logstash-forwarder.crt [email :/etc/pki/tls/certs/

2. Impor kunci GPG publik Elasticsearch ke pengelola paket rpm:

rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

3. Buat repositori untuk Filebeat (/etc/yum.repos.d/filebeat.repo) di CentOS distribusi berdasarkan:

[filebeat]
name=Filebeat for ELK clients
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1

4. Konfigurasikan sumber untuk menginstal Filebeat di Debian dan turunannya:

aptitude install apt-transport-https
echo "deb https://packages.elastic.co/beats/apt stable main" > /etc/apt/sources.list.d/filebeat.list
aptitude update

5. Instal paket Filebeat:

yum install filebeat        [On CentOS and based Distros]
aptitude install filebeat   [On Debian and its derivatives]

6. Mulai dan aktifkan Filebeat:

systemctl start filebeat
systemctl enable filebeat

Konfigurasikan Filebeat

Sebuah kata peringatan di sini. Konfigurasi Filebeat disimpan dalam file YAML, yang memerlukan indentasi yang ketat. Hati-hati dengan ini saat Anda mengedit /etc/filebeat/filebeat.yml sebagai berikut:

  1. Di bawah jalur, tunjukkan file log mana yang harus “dikirim ” ke server ELK.
  2. Di bawah prospektor:
input_type: log
document_type: syslog
  1. Di bawah keluaran:

    1. Batalkan komentar pada baris yang dimulai dengan logstash.
    2. Tunjukkan alamat IP server ELK Anda dan port tempat Logstash mendengarkan di host.
    3. Pastikan jalur ke sertifikat mengarah ke file sebenarnya yang Anda buat pada Langkah I (bagian Logstash) di atas.

Langkah-langkah di atas diilustrasikan pada gambar berikut:

Simpan perubahan, lalu mulai ulang Filebeat di klien:

systemctl restart filebeat

Setelah kami menyelesaikan langkah-langkah di atas pada klien, silakan melanjutkan.

Menguji Filebeat

Untuk memverifikasi bahwa log dari klien berhasil dikirim dan diterima, jalankan perintah berikut di server ELK:

curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Outputnya harus serupa dengan (perhatikan bagaimana pesan dari /var/log/messages dan /var/log/secure diterima dari client1 dan klien2):

Jika tidak, periksa kesalahan pada file konfigurasi Filebeat.

journalctl -xe

setelah mencoba memulai ulang, Filebeat akan mengarahkan Anda ke baris yang melanggar.

Menguji Kibana

Setelah kami memverifikasi bahwa log dikirim oleh klien dan berhasil diterima di server. Hal pertama yang harus kita lakukan di Kibana adalah mengonfigurasi pola indeks dan mengaturnya sebagai default.

Anda bisa mendeskripsikan indeks sebagai database lengkap dalam konteks database relasional. Kami akan menggunakan filebeat-* (atau Anda dapat menggunakan kriteria pencarian yang lebih tepat seperti yang dijelaskan dalam dokumentasi resmi).

Masukkan filebeat-* di Nama indeks atau bidang pola lalu klik Buat:

Harap dicatat bahwa Anda akan diizinkan untuk memasukkan kriteria pencarian yang lebih rinci nanti. Selanjutnya, klik bintang di dalam persegi panjang hijau untuk mengonfigurasinya sebagai pola indeks default:

Terakhir, di menu Temukan Anda akan menemukan beberapa bidang untuk ditambahkan ke laporan visualisasi log. Cukup arahkan kursor ke atasnya dan klik Tambahkan:

Hasilnya akan ditampilkan di area tengah layar seperti yang ditunjukkan di atas. Silakan bermain-main (menambah dan menghapus kolom dari laporan log) untuk mengenal Kibana.

Secara default, Kibana akan menampilkan catatan yang diproses selama 15 menit terakhir (lihat sudut kanan atas) namun Anda dapat mengubah perilaku tersebut dengan memilih jangka waktu lain:

Ringkasan

Pada artikel ini kami telah menjelaskan cara menyiapkan tumpukan ELK untuk mengumpulkan log sistem yang dikirim oleh dua klien, mesin CentOS 7 dan Debian 8.

Sekarang Anda dapat merujuk ke dokumentasi resmi Elasticsearch dan menemukan detail lebih lanjut tentang cara menggunakan pengaturan ini untuk memeriksa dan menganalisis log Anda dengan lebih efisien.

Jika Anda memiliki pertanyaan, jangan ragu untuk bertanya. Kami menantikan kabar dari Anda.