0
0
0
share
#tutorial#ubuntu#elasticsearch#ELK
0 Komentar
Tutorial Install Centralize Log Manajemen Server Menggunakan Elasticsearch, Logstash dan Kibana di CentOS 7
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
- CentOS 7 64 bit dengan RAM 4GB - server.logging.com (192.168.1.97)
- CentOS 7 64 bit dengan RAM 1 GB - centos7.logging.com (192.168.1.98)
- 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 lock *untuk 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
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 file syslog-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, impor* elastic 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 dan* start 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 syslog *pada 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"]
Aktifkan* logstash 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 dan* start 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
0
0
0
share