Tutorial Install Centralize Log Manajemen Server Menggunakan Elasticsearch, Logstash dan Kibana di CentOS 7

Ditulis oleh Rahman Arif, dipublikasi pada 06 Nov 2017 dalam kategori Tutorial
Tutorial Install Centralize Log Manajemen Server Menggunakan Elasticsearch, Logstash dan Kibana di CentOS 7 - CodePolitan.com

Elasticsearch adalah mesin pencari open source dibawah Apache Licence dan ditulis menggunakan bahasa pemrograman Java. Elasticsearch menyediakan mesin pencari teks terdistribusi dan multitenant dengan antarmuka web Dasbor HTTP (Kibana). Data ditampilkan, diambil dan disimpan dengan format JSON. Elasticsearch adalah mesin pencari terukur yang dapat digunakan untuk mencari semua jenis dokumen teks, termasuk file log. Elasticsearch adalah jantung dari 'Elastic Stack' atau ELK Stack.

Logstash adalah tool open source untuk mengelola aktivitas dan log. Logstash menyediakan pipelining real-time untuk pengumpulan data. Dalam tutorial ini, Logstash akan mengumpulkan data log Server, mengubah data menjadi dokumen JSON, dan menyimpannya di Elasticsearch.

Kibana adalah alat visualisasi data open source untuk Elasticsearch. Kibana menyediakan antarmuka web dasbor yang cantik. Kibana dapat kita gunakan untuk mengelola dan memvisualisasikan data dari Elasticsearch. Kibana juga tidak hanya indah, tapi juga bertenaga.

Dalam tutorial ini, kita akan menginstal dan mengkonfigurasi Elastic Stack di server CentOS 7 untuk memantau log server. Kemudian kita akan memasang 'Filebeat' pada sistem operasi klien CentOS 7 dan Ubuntu 16.

Memanfaatkan Geo Query dan Date Query di Elasticsearch

Dalam tutorial kali ini, kita akan melakukan beberapa langkah, diantaranya:

Langkah 1 - Konfigurasi pada Server ELK

Langkah 2 - Install Java

Langkah 3 - Install dan Konfigurasi Elasticsearch

Langkah 4 - Install dan Konfigurasi Kibana di Nginx

Langkah 5 - Install dan Konfigurasi Logstash

Langkah 6 - Install dan Konfigurasi Filebeat pada Klien CentOS

Langkah 7 - Install dan Konfigurasi Filebeat pada Klien Ubuntu

Langkah 8 - Pengujian

Referensi

Persiapan

  1. CentOS 7 64 bit dengan RAM 4GB - server.logging.com (192.168.1.97)
  2. CentOS 7 64 bit dengan RAM 1 GB - centos7.logging.com (192.168.1.98)
  3. Ubuntu 16 64 bit dengan RAM 1 GB - ubuntu1604.logging.com (192.168.1.99)

Langkah 1 - Konfigurasi pada Server ELK

Dalam tutorial ini, kita akan menonaktifkan SELinux di CentOS 7. Dengan mengedit file konfigurasi SELinux.
Login ke server dengan akun root, kemudian di ketikan.

$ vim /etc/sysconfig/selinux

Ganti value SELINUX dari enforcing ke disabled.

SELINUX=disabled

Simpan dan tutup Vim.

<tekan tombol esc di keyboard>
:wq

Lalu restart server.

$ reboot

Login ke server dan cek status SELinux dengan mengetikkan.

$ getenforce

Pastikan hasilnya adalah disabled.

Matikan juga Firewall karena dalam tutorial ini, kita tidak memerlukannya.

$ systemctl stop firewalld
$ systemctl disable firewalld

Step 2 - Install Java

Java diperlukan untuk mengistall Elastik stack. Elasticsearch memerlukan Java 8, dianjurkan untuk menggunakan Oracle JDK 1.8. Kita akan menginstal Java 8 dari paket rpm Oracle resmi.

Unduh Java 8 JDK dengan perintah wget.

$ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.rpm"

Lalu install dengan perintah rpm.

$ rpm -ivh jdk-8u144-linux-x64.rpm

Selanjutnya, cek versi java JDK untuk memastikan instalasi berjalan semestinya.

$ java -version

Kalian akan melihat versi Java di terminal server.

Step 3 - Install dan Konfigurasi Elasticsearch

Pada langkah ini, kita akan menginstal dan mengkonfigurasi Elasticsearch.
Kita akan menginstal Elasticsearch dari paket rpm yang disediakan oleh elastic.co dan mengkonfigurasinya untuk berjalan di localhost (untuk membuat konfigurasi aman dan memastikannya tidak terjangkau dari luar).

Sebelum menginstal Elasticsearch, tambahkan elastic.co key ke server.

$ rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Selanjutnya, unduh Elasticsearch 5.1 dengan wget lalu instal.

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm
$ rpm -ivh elasticsearch-5.1.1.rpm

Setelah Elasticsearch terinstall. Sekarang masuklah ke direktori konfigurasi dan edit file konfigurasi elasticsaerch.yml.

$ cd /etc/elasticsearch/
$ vim elasticsearch.yml

Aktifkan memory lock dengan menghapus komentar pada baris 40. Ini menonaktifkan memory swapping untuk Elasticsearch.

bootstrap.memory_lock: true`

Di blok Network, hapus tanda komentar pada garis network.host dan http.port.

network.host: localhost
http.port: 9200

Simpan file dan keluar dari editor.

Sekarang edit file elasticsearch.service untuk konfigurasi memory lock.

vim /usr/lib/systemd/system/elasticsearch.service

Hapus tanda komentar pada baris LimitMEMLOCK.

LimitMEMLOCK=infinity

Simpan file dan keluar dari editor.

Edit file konfigurasi sysconfig untuk Elasticsearch.

vim /etc/sysconfig/elasticsearch

Hapus tanda komentar pada baris 60 dan pastikan valuenya adalah unlimited.

MAX_LOCKED_MEMORY=unlimited

Simpan file dan keluar dari editor.

Konfigurasi Elasticsearch telah selesai. Elasticsearch akan berjalan di alamat IP localhost pada port 9200, kita dapat menonaktifkan memory swapping dengan mengaktifkan mlockall di server CentOS.

Reload systemd, aktifkan Elasticsearch untuk memulai saat boot, lalu start service.

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

Tunggu sebentar agar Elasticsearch dimulai, lalu periksa port yang terbuka di server, pastikan 'state' untuk port 9200 adalah LISTEN.

Cek dengan mengetikkan perintah netstat -plntu

Kemudian periksa memory lockuntuk memastikan mlockall diaktifkan, dan periksa apakah Elasticsearch berjalan dengan perintah di bawah ini.

curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'

Anda akan melihat hasilnya di bawah ini.

Step 4 - Install dan Konfigurasi Kibana di Nginx

Pada langkah ini, kita akan menginstall dan mengkonfigurasi Kibana dengan server web Nginx. Kibana akan menggunakan alamat IP localhost dan Nginx bertindak sebagai reverse proxy untuk aplikasi Kibana.

Unduh Kibana 5.1 dengan wget, lalu install dengan perintah rpm:

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm
rpm -ivh kibana-5.1.1-x86_64.rpm

Sekarang edit file konfigurasi Kibana.

vim /etc/kibana/kibana.yml

Hapus tanda komentar pada baris konfigurasi untuk server.port, server.host dan elasticsearch.url.

server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"

Simpan file dan keluar dari editor.

Tambahkan Kibana untuk berjalan saat boot dan start service.

sudo systemctl enable kibana
sudo systemctl start kibana

Kibana akan berjalan di port 5601 sebagai node application.

netstat -plntu

Instalasi Kibana selesai. Sekarang kita perlu menginstal Nginx dan mengkonfigurasinya sebagai reverse proxy untuk bisa mengakses Kibana dari alamat IP publik.

Nginx tersedia di repositori Epel, instal epel-release dengan yum.

yum -y install epel-release

Selanjutnya, pasang paket Nginx dan httpd-tools.

yum -y install nginx httpd-tools

Paket httpd-tools berisi tool untuk server web, kita akan menggunakan otentikasi dasar htpasswd untuk Kibana.

Edit file konfigurasi Nginx dan hapus atau beri tag komentar blok 'server {}', jadi kita bisa menambahkan konfigurasi virtual host baru.

cd /etc/nginx/
vim nginx.conf

Beri tag komentar untuk server {} blok.

Simpan file dan keluar dari editor.

Sekarang kita perlu membuat file konfigurasi virtual host baru di direktori conf.d. Buat file baru 'kibana.conf' dengan vim atau vi atau nano.

vim /etc/nginx/conf.d/kibana.conf

Paste konfigurasi di bawah ini.

server {
    listen 80;

    server_name 192.168.1.97;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.kibana-user;

    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;
    }
}

Simpan file dan keluar dari editor.

Kemudian buat file basic authentication baru dengan perintah htpasswd.

sudo htpasswd -c /etc/nginx/.kibana-user admin
KETIKAN PASSWORD ANDA

Test konfigurasi Nginx dan pastikan tidak ada error. Kemudian tambahkan Nginx untuk dijalankan pada saat boot dan start Nginx.

nginx -t
systemctl enable nginx
systemctl start nginx

NGINX akan berjalan di port 80 sebagai nginx: master.

netstat -plntu

Langkah 5 - Instal dan Konfigurasi Logstash

Pada langkah ini, kita akan menginstal Logstash dan mengkonfigurasinya ke log server terpusat dari klien dengan filebeat, kemudian mem-filter dan mengubah data Syslog dan memindahkannya ke dalam simpanan (Elasticsearch).

Unduh Logstash dan instal dengan rpm.

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm
rpm -ivh logstash-5.1.1.rpm

Buat file sertifikat SSL baru sehingga klien dapat mengidentifikasi elastic server.
Buka direktori tls dan edit file openssl.cnf.

cd /etc/pki/tls
vim openssl.cnf

Tambahkan baris baru di bagian '[v3_ca]' untuk identifikasi server.

[ v3_ca ]

# Server IP Address
subjectAltName = IP: 192.168.1.97

Simpan file dan keluar dari editor.

Buat file sertifikat dengan perintah openssl.

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

File sertifikat dapat ditemukan di direktori /etc/pki/tls/certs/ dan /etc/pki/tls/private/.
Selanjutnya, kita akan membuat file konfigurasi baru untuk Logstash. Kita akan membuat file filebeat-input.conf baru untuk mengkonfigurasi sumber log untuk filebeat, lalu filesyslog-filter.conf untuk pemrosesan syslog dan file output-elasticsearch.conf untuk menentukan hasil Elasticsearch.

Buka direktori konfigurasi logstash dan buat file konfigurasi baru di subdirektori conf.d.

cd /etc/logstash/
vim conf.d/filebeat-input.conf

Masukan konfigurasi: paste konfigurasi di bawah ini.

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

Simpan file dan keluar dari editor.

Buat file syslog-filter.conf.

vim conf.d/syslog-filter.conf

Paste konfigurasi di bawah ini.

filter {
  if [type] == "syslog" {
    grok {
    match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
    add_field => [ "received_at", "%{@timestamp}" ]
    add_field => [ "received_from", "%{host}" ]
    }
    date {
    match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

KIta menggunakan filter plugin bernama 'grok' untuk mengurai file syslog.
Simpan file dan keluar dari editor.

Buat file konfigurasi output output-elasticsearch.conf.

vim conf.d/output-elasticsearch.conf

Paste konfigurasi di bawah ini.

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

Simpan file dan keluar dari editor.

Selanjutnya tambahkan logstash untuk memulai saat boot dan start service.

sudo systemctl enable logstash
sudo systemctl start logstash

NGINX akan berjalan di port :: 5443

netstat -plntu

Salin logstash-forwarder.crt dari /etc/pki/tls/certs/logstash-forwarder.crt ke /root/logstash-forwarder.crt

cp -v /etc/pki/tls/certs/logstash-forwarder.crt /root/logstash-forwarder.crt

Langkah 6 - Instal dan Konfigurasi Filebeat pada CentOS Client

Beats adalah pengirim data, agen ringan yang dapat diinstal pada node klien untuk mengirim sejumlah besar data dari mesin klien ke server Logstash atau Elasticsearch. Ada 4 ketukan yang tersedia, 'Filebeat' untuk 'Log Files', 'Metricbeat' untuk 'Metrics', 'Packetbeat' untuk 'Network Data' dan 'Winlogbeat' untuk Windows Client 'Event Log'.

Kita akan menginstal dan mengkonfigurasi 'Filebeat' untuk mentransfer file log data ke server Logstash melalui koneksi SSL.

Khusus untuk centos7, kita harus mengizinkan beberapa port jika kita menggunakan layanan firewalld, namun dalam kasus ini, kita akan mematikan firewall dan SELINUX Service, dengan perintah,

systemctl stop firewalld
systemctl disable firewalld

Nonaktifkan SELinux

vim /etc/sysconfig/selinux

Ubah nilai SELINUX dari enforcing ke disabled.

SELINUX = disabled

Kemudian reboot server.

reboot

Login ke server lagi dan periksa status SELinux.

getenforce

Pastikan hasilnya disabled.

Login ke client1 server. Kemudian salin file sertifikat dari elastic server ke server client1.

ssh root@client1IP

Salin file sertifikat dengan perintah scp.

scp root@192.168.1.97:~/logstash-forwarder.crt  .
KETIKAN server.logging.com root password

Buat direktori baru dan pindahkan file sertifikat ke direktori.

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

Selanjutnya, imporelastic key pada client1 server.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Unduh Filebeat dan install dengan rpm.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
rpm -ivh filebeat-5.1.1-x86_64.rpm

Filebeat telah terinstall, masuk ke direktori konfigurasi dan edit file filebeat.yml.

cd /etc/filebeat/
vim filebeat.yml

Di bagian baris ke 21, tambahkan file log baru. Kita akan menambahkan dua file /var/log/secure untuk aktivitas ssh dan /var/log/messages untuk log server.

paths:
    - /var/log/secure
    - /var/log/messages

Tambahkan konfigurasi baru pada baris 26 untuk menentukan jenis file syslog.

document-type: syslog

Filebeat menggunakan Elasticsearch sebagai target output secara default. Dalam tutorial ini, kita akan mengubahnya menjadi Logstash. Nonaktifkan keluaran Elasticsearch dengan menambahkan komentar pada baris 83 dan 85.
Nonaktifkan output elasticsearch.

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]

Sekarang tambahkan konfigurasi output logstash baru. Uncomment konfigurasi output logstash dan ubah semua nilai ke konfigurasi yang ditunjukkan di bawah ini.

output.logstash:
  # The Logstash hosts
  hosts: ["192.168.1.97:5443"]
  bulk_max_size: 1024
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

Simpan file dan keluar dari editor.

Tambahkan Filebeat untuk memulai saat boot danstart service.

sudo systemctl enable filebeat
sudo systemctl start filebeat

Langkah 7 - Instal dan Konfigurasi Filebeat pada Klien Ubuntu

Sambungkan ke server dengan ssh.

ssh root@ubuntu-clientIP

Salin file sertifikat ke klien dengan perintah scp.

scp root@192.168.1.97:~/logstash-forwarder.crt .

Buat direktori baru untuk file sertifikat dan pindahkan file ke direktori.

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

Tambahkan elastic key ke server.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Unduh paket Filebeat .deb dan instal dengan perintah dpkg.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
dpkg -i filebeat-5.1.1-amd64.deb

Arahkan ke direktori konfigurasi filebeat dan ubah file filebeat.yml dengan vim.

cd /etc/filebeat/
vim filebeat.yml

Tambahkan path file log baru di bagian konfigurasi paths.

paths:
    - /var/log/auth.log
    - /var/log/syslog

Tambahkan konfigurasi ini untuk document type syslogpada baris 26.

document-type: syslog

Nonaktifkan hasil elasticsearch dengan menambahkan komentar ke baris yang ditunjukkan di bawah ini.

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
# Array of hosts to connect to.
#  hosts: ["localhost:9200"]

Aktifkanlogstash output, hapus tanda komentar di konfigurasi dan ubah nilainya seperti gambar di bawah ini.

output.logstash:
  # The Logstash hosts
  hosts: ["192.168.1.97:5443"]
  bulk_max_size: 1024
  ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
  template.name: "filebeat"
  template.path: "filebeat.template.json"
  template.overwrite: false

Simpan file dan keluar dari editor.

Tambahkan Filebeat untuk memulai saat boot danstart service.

sudo systemctl enable filebeat
sudo systemctl start filebeat

Cek status filebeat service.

systemctl status filebeat

Langkah 8 - Pengujian

Buka browser web Anda dan kunjungi elastic stack domain yang Anda gunakan dalam konfigurasi Nginx, milik saya adalah server.logging.com atau 192.168.1.97.

Login sebagai admin user dengan password anda dan tekan Enter untuk login ke dashboard Kibana.

Buat indeks default baru filebeat- *dan klik pada tombol Create.

Indeks default telah dibuat. Jika Anda memiliki beberapa ketukan pada tumpukan elastis, Anda dapat mengonfigurasikan beat default hanya dengan satu klik pada tombol star.

Buka menu 'Discover' dan Anda akan melihat semua file log dari server elk-client1 dan elk-client2.

Contoh output JSON dari log server elk-client1 untuk server yang melakukan reboot.

Dan masih banyak lagi yang bisa Kita lakukan dengan dasbor Kibana.

ELK Stack telah terpasang di server CentOS 7. Filebeat telah diinstal pada CentOS 7 dan klien Ubuntu.

Referensi
https://www.elastic.co/guide/index.html

Gambar Sampul: Youtube



Berlangganan Informasi CodePolitan Melalui Email

Jangan sampai kamu melewatkan informasi penting tentang pemrograman dan teknologi! Kamu bisa berlangganan Newsletter CodePolitan dengan cara mengisi formulir di samping.

Banner foot-promo-update is not found.