Cara Install dan Konfigurasi Elastic Stack di CentOS 7

Cara Install dan Konfigurasi Elastic Stack di CentOS 7. Di tutorial ini kita akan membahas instalasi Elastic Stack (atau yang sebelumnya dikenal dengan ELK Stack) di CentOS 7. Bagi yang belum tau, ELK adalah akronim dari Elasticsearch, Logstash, dan Kibana.


Elasticsearch berguna untuk menyimpan semua log yang berasal dari server, Logstash merupakan sebuah perangkat lunak open source untuk mengumpulkan dan memparsing log dan juga membuat index untuk log, kemudian disimpan pada elasticsearch. Kibana adalah web interface yang berguna untuk menampilkan log baik dalam bentuk grafik maupun visualisasi lainnya. untuk file agent di perlukan filebeat yang berguna untuk mengirim log dari setiap server kepada logstash.

Komponen utama dari Elastic Stack adalah:
  • Elasticsearch : menyimpan semua log
  • Logstash : komponen pemrosesan data dari Elastic Stack yang mengirimkan data yang masuk ke Elasticsearch.
  • Kibana : Web interface untuk mencari dan memvisualisasikan log.
  • Filebeat : mengirim log ke logstash. Berfungsi sebagai shipping agent untuk log.
Pertama, install Java terlebih dahulu karena Elasticsearch dan Logstash membutuhkan Java.
sudo yum install java-openjdk-devel java-openjdk -y
Install Elasticsearch
Tambahkan repository Elasticsearch 7 ke sistem.
sudo nano /etc/yum.repos.d/elasticsearch.repo
Masukkan isinyya:

[elasticsearch-7.x]
name=Elasticsearch repository
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
Import GPG key
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Update indexing yum
sudo yum clean all && sudo yum makecache
Lanjut instalasi Elasticsearch
sudo yum install elasticsearch  -y
Tunggu proses instalasi selesai. Selanjutnya enable service agar langsung berjalan saat booting
sudo systemctl enable elasticsearch
Langkah optional:
Jika kalian menggunakan server dengan spesifikasi rendah, kalian bisa menurunkan nilai heap space di Elasticsearch. Defaultnya adalah 1GB.
sudo nano /etc/elasticsearch/jvm.options
Cari bagian
-Xms1g
-Xmx1g
Lalu ubah menjadi
-Xms256m
-Xmx512m
Selanjutnya, edit file /etc/elasticsearch/elasticsearch.yml
sudo nano /etc/elasticsearch/elasticsearch.yml
Cari baris network.host dan ubah value nya menjadi
network.host: localhost
Hapus comment didepannya. Hal ini dilakukan untuk membatasi akses agar publik tidak bisa mengakses atau membaca data Elasticsearch melalui REST API.

Lanjut restart Elasticsearch
sudo systemctl restart elasticsearch
Untuk testing, jalankan perintah berikut
curl http://127.0.0.1:9200
Contoh output

Install Kibana
Selanjutnya adalah proses install dan konfigurasi Kibana.
sudo yum install kibana -y
Edit file konfigurasi Kibana
sudo nano /etc/kibana/kibana.yml
Ubah konfigurasi Kibana dengan menghapus seluruh comment atau tanda pagar di ketiga baris berikut
server.port: 5601
server.host: "localhost"
server.name: "kibana-server"
elasticsearch.url: "http://localhost:9200"
Lanjut, kita enable Kibana saat booting.
sudo systemctl enable kibana
sudo systemctl start kibana
Di tutorial ini saya menggunakan web server Nginx. Sekarang kita konfigurasikan Kibana dengan Nginx.
Sebelumnya, kita buat dulu auth untuk login ke Kibana.
sudo mkdir /etc/nginx/web-auth
sudo htpasswd -c /etc/nginx/web-auth/.kibanaauth elklogin
Sesuaikan sendiri nama file htpasswd beserta usernya.
Lanjut setting serverblock untuk Kibana
sudo nano /etc/nginx/sites-enabled/kibana-server
Lalu isikan
server {
    listen 80;
    server_name elk.evil-security.com;
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/web-auth/.kibanaauth;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
Sesuaikan sendiri servername dan juga lokasi htpasswd nya.  Selanjutnya reload Nginx dengan perintah
sudo service nginx reload
Jika SELinux kalian aktif, maka SELinux tidak mengijinkan service Nginx mengakses proxied service. Ijinkan dengan menjalankan perintah berikut
sudo setsebool httpd_can_network_connect 1 -P
Terakhir, akses Kibana melalui browser.
elk.evil-security.com
Masukkan user dan password yang kalian atur di proses htpasswd diatas.

Install Logstash
Selanjutnya adalah instalasi logstash
sudo yum -y install logstash
Lanjut buat file konfigurasi Filebat input.
sudo nano /etc/logstash/conf.d/02-beats-input.conf
Isinya:
Lalu
sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf
Isinya
Lanjut kita tambahkan Konfigurasi log. Kalian bisa baca dokumentasi Elastic. Disini saya akan mengaktifkan filter log untuk Nginx dan Syslog. Untuk filter lain kalian bisa sesuaikan sendiri.
sudo nano /etc/logstash/conf.d/10-syslog-filter.conf
Isinya
Lalu untuk Nginx
sudo nano /etc/logstash/conf.d/11-nginx-filter.conf
Isinya
Next kita test konfigurasinya. Jika outputnya OK berarti tidak ada yang error.
sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
Contoh output

Langkah opsional:
Seperti Elasticsearch, untuk membatasi heap space di Logstash edit file konfigurasi Logstash
sudo nano /etc/logstash/jvm.options
Cari bagian
-Xms1g
-Xmx1g
Lalu ubah menjadi
-Xms256m
-Xmx512m
Lanjut kita enable Logstash saat booting
sudo systemctl enable logstash
sudo systemctl start logstash
Install Filebat
Terakhir, install Filebat.
sudo yum install filebeat -y
Selanjutnya kita konfigurasi Filebat agar bisa mengirim log ke Logstash
sudo nano /etc/filebeat/filebeat.yml
Cari baris output.elasticsearch dan hosts, beri comment didepannya.Lihat screenshot berikut
Hal ini kita lakukan karena kita tidak butuh Filebat untuk mengirim log langsung ke Elasticsearch.

Masih di file lang sama, cari baris output.logstash dan hosts, dan hapus comment didepannya. Lihat screenshot
Selanjutnya, aktifkan modul system dan juga nginx di Filebat. Modul yang diaktifkan sesuaikan sendiri dengan filter yang kalian aktifkan diatas.
sudo filebeat modules enable system
Enable dan start Filebat
sudo systemctl enable filebeat
sudo systemctl start filebeat
Lanjut, load index template di Elasticsearch
sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
Selanjutnya enable output Elasticsearch
sudo filebeat setup -e -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601
Contoh output

Kembali cek dashboard Kibana.


Sisanya bisa kalian explore sendiri.

Oke mungkin itu saja tutorial kali ini. Semoga bermanfaat. Jika ada yang ingin ditanyakan silahkan tinggalkan komentar.