Install Elasticsearch, Logstash, dan Kibana (ELK Stack) Di Ubuntu 18.04 / Ubuntu 16.04

thumbnail

ELK Stack adalah platform analisis data berfitur lengkap, terdiri dari tiga alat sumber terbuka Elasticsearch, Logstash, dan Kibana. Tumpukan ini membantu Anda untuk menyimpan dan mengelola log secara terpusat dan memberikan kemampuan untuk menganalisis masalah dengan mengkorelasikan peristiwa pada waktu tertentu.

Posting ini memandu Anda untuk menginstal tumpukan ELK di Ubuntu 18.04 / Ubuntu 16.04.

Komponen

Elasticsearch – Menyimpan log yang masuk dari Logstash dan menyediakan kemampuan untuk mencari log / data secara real-time

Logstash – Memproses (Mengumpulkan, memperkaya, dan mengirimkannya ke Elasticsearch) dari log yang masuk yang dikirim oleh beat (forwarder).

Kibana – Menyediakan visualisasi acara dan log.

Beats – Diinstal pada mesin klien dan mengirimkan log ke Logstash atau Elasticsearch melalui protokol ketukan.

Persyaratan

Install Java

Elasticsearch membutuhkan OpenJDK atau Oracle JDK yang tersedia di mesin Anda.

Di sini, untuk demo ini, saya menggunakan OpenJDK. Instal Java menggunakan perintah di bawah ini bersama dengan paket dukungan wget dan HTTPS untuk APT.

sudo apt update
sudo apt install -y openjdk-8-jdk wget apt-transport-https

Check Java version.

java -version

Output:

openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

Konfigurasi ELK repository

ELK stack packages dapat dengan mudah diperoleh dari Elastic CO dengan mengatur official repository.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

Install Elasticsearch

Kami sekarang akan menginstal server Elasticsearch, mesin pencari open-source berdasarkan Lucene. Ini menyediakan mesin pencarian teks lengkap yang terdistribusi secara real-time dan multitenant dengan antarmuka web (HTTP) dan dokumen JSON bebas skema.

Instal Elasticsearch menggunakan perintah berikut, v6.4 pada saat penulisan artikel ini.

sudo apt update
sudo apt install -y elasticsearch

Start Elasticsearch service.

sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

Tunggu beberapa menit dan jalankan perintah di bawah ini untuk melihat status Elasticsearch REST interface.

curl -X GET http://localhost:9200

Output:

{
  "name" : "nqS7TFZ",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "vERyh1VpR46G9T21H_3gKQ",
  "version" : {
    "number" : "6.4.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "595516e",
    "build_date" : "2018-08-17T23:18:47.308994Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Output di atas mengkonfirmasi bahwa Elasticsearch sudah aktif dan berfungsi baik.

Install Logstash

Logstash adalah mesin pengumpulan-data dan log-parsing sumber terbuka. Ia mengumpulkan log, mengurai dan menyimpannya di Elasticsearch untuk pencarian. Lebih dari 160+ plugin tersedia untuk Logstash yang menyediakan kemampuan memproses berbagai jenis acara tanpa kerja ekstra.

sudo apt install -y logstash

Membuat SSL certificate untuk Logstash (Optional)

Merupakan pilihan untuk mengatur Forwarder (Filebeat) yang kami pasang di mesin klien untuk menggunakan sertifikat SSL untuk transmisi log yang aman.

Buat sertifikat SSL dengan nama host atau IP SAN.

Option 1: (Hostname atau FQDN)

Pergi ke OpenSSL directory.

cd /etc/ssl/

Sekarang, buat sertifikat SSL menggunakan OpenSSL. Menggantikan server.dreamblog.local dengan nama host server Logstash Anda.

sudo openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout logstash-forwarder.key -out logstash-forwarder.crt -subj /CN=server.dreamblog.local

Logstash-forwarder.crt harus disalin ke semua server klien yang mengirim log ke server logstash.

Option 2: (IP Address)

Ikuti langkah-langkah di bawah ini untuk membuat sertifikat SSL untuk IP SAN.

Sebagai prasyarat, tambahkan alamat IP server Logstash ke SubjectAltName dalam file konfigurasi OpenSSL.

sudo nano /etc/ssl/openssl.cnf

Lihat [ v3_ca ] dan update subjectAltName dengan IP Address Logstash server anda.

subjectAltName = IP:192.168.1.10

Pergi ke OpenSSL directory.

cd /etc/ssl/

Sekarang, buat SSL certificate dengan running perintah di bawah ini.

sudo openssl req -x509 -days 365 -batch -nodes -newkey rsa:2048 -keyout logstash-forwarder.key -out logstash-forwarder.crt

Logstash-forwarder.crt harus disalin ke semua server klien yang mengirim log ke server logstash.

Konversikan SSL

Konversikan kunci saat ini ke format PKCS8 agar Logstash berfungsi dengan baik.

sudo openssl pkcs8 -in logstash-forwarder.key  -topk8 -nocrypt -out logstash-forwarder.key.pem

Ubah file permission ke world readable.

sudo chmod 644 /etc/ssl/logstash-forwarder.key.pem

Konfigurasi Logstash

Konfigurasi logstash terdiri dari tiga bagian, yaitu input, filter, dan output. Anda dapat meletakkan semua bagian dalam satu file atau file terpisah untuk setiap bagian, diakhiri dengan .conf.

Di sini, kami akan menggunakan satu file untuk menempatkan bagian input, filter dan output. Buat file konfigurasi di bawah /etc/logstash/conf.d/.

sudo nano /etc/logstash/conf.d/logstash.conf

Di bagian input, kami akan mengonfigurasi Logstash untuk mendengarkan pada port 5044 untuk log masuk, dari ketukan (Forwarder) yang ada di mesin klien.

Juga, tambahkan detail sertifikat SSL di bagian input untuk komunikasi yang aman.

input {
 beats {
   port => 5044
   
   # Set to False if you do not SSL
   ssl => true
  
   # Delete below lines if no SSL is used
   ssl_certificate => "/etc/ssl/logstash-forwarder.crt"
   ssl_key => "/etc/ssl/logstash-forwarder.key.pem"
   }
}

Di bagian filter. Kami akan menggunakan Grok untuk menguraikan log sebelum mengirimnya ke Elasticsearch, untuk menyimpan.

Filter grok berikut akan mencari log berlabel syslog dan mencoba untuk menguraikannya untuk membuat indeks terstruktur.

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

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

}

Untuk pola filter GROK lainnya, lihat disini.

Di bagian output, kita akan menentukan di mana log untuk disimpan, jelas Elasticsearch dalam kasus tumpukan ELK.

output {
 elasticsearch {
  hosts => localhost
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
       }
stdout {
    codec => rubydebug
       }
}

Sekarang start dan enable Logstash service.

sudo systemctl restart logstash
sudo systemctl enable logstash

Logstash logs:

sudo cat /var/log/logstash/logstash-plain.log

Install dan Konfigurasi Kibana

Kibana menyediakan visualisasi data yang disimpan di Elasticsearch. Instal Kibana menggunakan perintah berikut.

sudo apt install -y kibana
Secara default, Kibana mendengarkan di localhost yang berarti Anda tidak dapat mengakses antarmuka web Kibana dari mesin eksternal.

Untuk enale akses, edit file /etc/kibana/kibana.yml .

sudo nano /etc/kibana/kibana.yml

Buat perubahan pada baris di bawah ini dengan alamat IP server Anda.

server.host: "192.168.1.10"

Juga, beberapa kasus Elasticsearch dan Kibana berjalan pada mesin yang berbeda, jadi perbarui baris di bawah ini dengan alamat IP server Elasticsearch.

elasticsearch.url: "http://localhost:9200"

Start dan enable Kibana pada machine startup.

sudo systemctl restart kibana
sudo systemctl enable kibana

Install Beats

Ada empat klien beat yang tersedia.

Packetbeat – Menganalisis data paket jaringan.
Filebeat – Wawasan waktu-nyata ke dalam data log.
Topbeat – Dapatkan wawasan dari data infrastruktur.
Metricbeat – Kirimkan metrik ke Elasticsearch.

Pastikan bahwa mesin klien dapat menyelesaikan nama host dari server Logstash. Jika lingkungan Anda tidak memiliki server DNS, maka Anda perlu menambahkan entri host untuk server Logstash di mesin klien.

sudo nano /etc/hosts

Buat entri seperti di bawah ini.

192.168.1.10 server.dreamblog.local

Install Filebeat

Filebeat adalah agen perangkat lunak yang berjalan pada mesin klien jarak jauh, dan mengirimkan log ke server Logstash untuk penguraian atau Pencarian Elastics untuk menyimpan tergantung pada konfigurasi.

Install HTTPS support untuk apt.

sudo apt update
sudo apt install -y apt-transport-https

Filebeat tersedia di repositori Elastic, jadi Anda perlu mengaturnya untuk instalasi Filebeat.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list

Install Filebeat menggunakan perintah berikut.

sudo apt update
sudo apt install -y filebeat

Konfigurasi Filebeat

Pertama, salin file logstash-forwarder.crt ke mesin klien jarak jauh.

Lewati langkah ini, jika Anda tidak menggunakan SSL di Logstash untuk komunikasi yang aman.

scp -pr [email protected]:/etc/ssl/logstash-forwarder.crt /etc/ssl

Edit filebeat konfigurasi file /etc/filebeat/filebeat.yml untuk mengirim log ke server Logstash.

sudo nano /etc/filebeat/filebeat.yml

Konfigurasi di bawah ini untuk mengirim log sistem (/var/log/syslog) ke server Logstash. Untuk demo ini, saya sudah berkomentar /var/log/*.log untuk menghindari pengiriman semua log ke server Logstash.

.  .  .
filebeat.inputs:

# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.

- type: log

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /var/log/syslog
    #- /var/log/*.log
.  .  .
Di bagian Keluaran, komentar bagian tersebut output.elasticsearch: karena kita tidak akan menyimpan log ke Elasticsearch.

Sekarang, temukan line output.logstash: dan memodifikasi entri untuk mengirim log sistem ke Logstash dan juga menyebutkan lokasi sertifikat SSL.

Gantikan server.dreamblog.local dengan IP address server Logstash jika Anda menggunakan IP SAN.
.   .   .

output.logstash:

    hosts: ["server.dreamblog.local:5044"]
    
    # Comment out this line if you are not using SSL on Logstash server
    ssl.certificate_authorities: ["/etc/ssl/logstash-forwarder.crt"]

.   .   .

Restart Filebeat service.

sudo systemctl restart filebeat

Filebeat’s log biasanya ditemukan dalam file log-nya.

sudo cat /var/log/filebeat/filebeat

Akses Kibana Interface

Akses Kibana web interface dengan mengikuti URL berikut.

http://your-ip-address:5601/

ATAU

http://your-serve-name:5601

Anda akan mendapatkan beranda Kibana.

Pada akses pertama Anda, Anda perlu memetakan indeks filebeat. Pergi ke Management >> Index Patterns.

Ketik seperti di bawah ini pada Index pattern box.

Anda akan melihat indeks filebeat seperti di atas. Klik Next step.

Pilih @timestamp dan kemudian klik pada Create index pattern.

@timestamp

Lihat pola indeks dan pemetaannya.

Klik Temukan di navigasi kiri untuk melihat log yang masuk dari mesin klien.


One thought on “Install Elasticsearch, Logstash, dan Kibana (ELK Stack) Di Ubuntu 18.04 / Ubuntu 16.04

Leave a Reply

Your email address will not be published. Required fields are marked *

Back To Top