Elasticsearch adalah mesin pencari open source berbasis Lucene, yang dikembangkan di Jawa. Ini menyediakan mesin pencari teks lengkap terdistribusi dan multitenant dengan antarmuka web Dasbor HTTP (Kibana). Data ditanyakan, diambil, dan disimpan dengan skema dokumen JSON. Elasticsearch adalah mesin pencari terukur yang dapat digunakan untuk mencari semua jenis dokumen teks, termasuk file log. Elasticsearch adalah inti dari 'Elastic Stack' atau ELK Stack.
Logstash adalah alat sumber terbuka untuk mengelola acara dan log. Ini menyediakan pipelining real-time untuk pengumpulan data. Logstash akan mengumpulkan data log Anda, 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. Ini memungkinkan Anda untuk mengelola dan memvisualisasikan data dari Elasticsearch. Tidak hanya cantik, tetapi juga kuat.
Dalam tutorial ini, saya akan menunjukkan cara menginstal dan mengkonfigurasi Elastic Stack di server CentOS 7 untuk memantau log server. Kemudian saya akan menunjukkan cara menginstal 'Elastic beats' di CentOS 7 dan sistem operasi klien Ubuntu 16.04.
Prasyarat
- CentOS 7 64 bit dengan RAM 4GB - elk-master
- CentOS 7 64 bit dengan 1 GB RAM - client1
- Ubuntu 16.04 64 bit dengan 1GB RAM - client2
Langkah 1 - Siapkan Sistem Operasi
Dalam tutorial ini, kami akan menonaktifkan SELinux di server CentOS 7. Edit file konfigurasi SELinux.
vim /etc/sysconfig/selinux
Ubah nilai SELinux dari menegakkan menjadi dinonaktifkan.
SELINUX=dinonaktifkan
Kemudian reboot server.
boot ulang
Masuk ke server lagi dan periksa status SELinux.
dapatkan
Pastikan hasilnya dinonaktifkan.
Langkah 2 - Instal Java
Java diperlukan untuk penyebaran tumpukan Elastis. Elasticsearch membutuhkan Java 8, disarankan untuk menggunakan Oracle JDK 1.8. Saya 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/8u77-b02/jdk-8u77-linux-x64.rpm"
Kemudian instal dengan perintah rpm ini;
rpm -ivh jdk-8u77-linux-x64.rpm
Terakhir, periksa versi Java JDK untuk memastikannya berfungsi dengan baik.
java -versi
Anda akan melihat server versi Java.
Langkah 3 - Instal dan Konfigurasi Elasticsearch
Pada langkah ini, kita akan menginstal dan mengkonfigurasi Elasticsearch. Saya akan menginstal Elasticsearch dari paket rpm yang disediakan oleh elastic.co dan mengonfigurasinya untuk berjalan di localhost (untuk membuat penyiapan aman dan memastikannya tidak dapat dijangkau dari luar).
Sebelum menginstal Elasticsearch, tambahkan kunci elastic.co 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
Elasticsearch diinstal. Sekarang masuk ke direktori konfigurasi dan edit file konfigurasi elasticsaerch.yml.
cd /etc/elasticsearch/
vim elasticsearch.yml
Aktifkan kunci memori untuk Elasticsearch dengan menghapus komentar pada baris 40. Ini menonaktifkan pertukaran memori untuk Elasticsearch.
bootstrap.memory_lock:true
Di blok 'Jaringan', batalkan komentar pada baris network.host dan http.port.
network.host:localhost
http.port:9200
Simpan file dan keluar dari editor.
Sekarang edit file elasticsearch.service untuk konfigurasi kunci memori.
vim /usr/lib/systemd/system/elasticsearch.service
Batalkan komentar Batas MEMLOCK baris.
LimitMEMLOCK=tak terhingga
Simpan dan keluar.
Edit file konfigurasi sysconfig untuk Elasticsearch.
vim /etc/sysconfig/elasticsearch
Batalkan komentar pada baris 60 dan pastikan nilainya 'tidak terbatas'.
MAX_LOCKED_MEMORY=tidak terbatas
Simpan dan keluar.
Konfigurasi Elasticsearch selesai. Elasticsearch akan berjalan di alamat IP localhost pada port 9200, kami menonaktifkan pertukaran memori untuk itu dengan mengaktifkan mlockall di server CentOS.
Muat ulang systemd, aktifkan Elasticsearch untuk memulai saat boot, lalu mulai layanan.
sudo systemctl daemon-reload
sudo systemctl aktifkan elasticsearch
sudo systemctl start elasticsearch
Tunggu sebentar hingga Eelasticsearch memulai, lalu periksa port yang terbuka di server, pastikan 'status' untuk port 9200 adalah 'LISTEN'.
netstat -plntu
Kemudian periksa kunci memori untuk memastikan bahwa mlockall diaktifkan, dan periksa apakah Elasticsearch berjalan dengan perintah di bawah.
curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'
Anda akan melihat hasilnya di bawah.
Langkah 4 - Instal dan Konfigurasi Kibana dengan Nginx
Pada langkah ini, kita akan menginstal dan mengkonfigurasi Kibana dengan server web Nginx. Kibana akan mendengarkan alamat IP localhost dan Nginx bertindak sebagai proxy terbalik untuk aplikasi Kibana.
Download 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
Batalkan komentar pada baris konfigurasi untuk server.port, server.host, dan elasticsearch.url.
server.port:5601
server.host:"localhost"
elasticsearch.url:"http://localhost:9200"
Simpan dan keluar.
Tambahkan Kibana untuk dijalankan saat boot dan mulai.
sudo systemctl aktifkan kibana
sudo systemctl start kibana
Kibana akan berjalan pada port 5601 sebagai aplikasi node.
netstat -plntu
Instalasi Kibana selesai. Sekarang kita perlu menginstal Nginx dan mengkonfigurasinya sebagai proxy terbalik untuk dapat mengakses Kibana dari alamat IP publik.
Nginx tersedia di repositori Epel, instal epel-release dengan yum.
yum -y install epel-release
Selanjutnya, instal paket Nginx dan httpd-tools.
yum -y install nginx httpd-tools
Paket httpd-tools berisi alat untuk server web, kami akan menggunakan otentikasi dasar htpasswd untuk Kibana.
Edit file konfigurasi Nginx dan hapus 'server {} ', sehingga kami dapat menambahkan konfigurasi host virtual baru.
cd /etc/nginx/
vim nginx.conf
Hapus blok server {}.
Simpan file dan keluar dari vim.
Sekarang kita perlu membuat file konfigurasi virtual host baru di direktori conf.d. Buat file baru 'kibana.conf' dengan vim.
vim /etc/nginx/conf.d/kibana.conf
Tempelkan konfigurasi di bawah ini.
server {
listen 80;
nama_server elk-stack.co;
auth_basic "Akses Terbatas";
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 Koneksi 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Simpan dan keluar.
Kemudian buat file otentikasi dasar baru dengan perintah htpasswd.
sudo htpasswd -c /etc/nginx/.kibana-user admin
KETIKA SANDI ANDA
Uji konfigurasi Nginx dan pastikan tidak ada kesalahan. Kemudian tambahkan Nginx untuk dijalankan pada saat boot dan mulai Nginx.
nginx -t
systemctl aktifkan nginx
systemctl start nginx
Langkah 5 - Instal dan Konfigurasikan Logstash
Pada langkah ini, kita akan menginstal Logsatash dan mengonfigurasinya untuk memusatkan log server dari klien dengan filebeat, lalu memfilter dan mengubah data Syslog dan memindahkannya ke 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 server elastis.
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 ]
# Alamat IP Server
subjectAltName =IP:10.0.15.10
Simpan dan keluar.
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. Kami akan membuat file 'filebeat-input.conf' baru untuk mengonfigurasi sumber log untuk filebeat, kemudian file 'syslog-filter.conf' untuk pemrosesan syslog dan file 'output-elasticsearch.conf' untuk menentukan output Elasticsearch.
Buka direktori konfigurasi logstash dan buat file konfigurasi baru di subdirektori 'conf.d'.
cd /etc/logstash/
vim conf.d/filebeat-input.conf
Konfigurasi input:rekatkan 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 dan keluar.
Buat file syslog-filter.conf.
vim conf.d/syslog-filter.conf
Tempelkan 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}" ]
}
tanggal {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
Kami menggunakan plugin filter bernama 'grok ' untuk mengurai file syslog.
Simpan dan keluar.
Buat file konfigurasi keluaran 'output-elasticsearch.conf'.
vim conf.d/output-elasticsearch.conf
Tempelkan 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 dan keluar.
Terakhir tambahkan logstash untuk memulai saat boot dan memulai layanan.
sudo systemctl aktifkan logstash
sudo systemctl start logstash
Langkah 6 - Instal dan Konfigurasi Filebeat pada Klien CentOS
Beats adalah pengirim data, agen ringan yang dapat diinstal pada node klien untuk mengirim data dalam jumlah besar 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 'Event Log' klien Windows.
Dalam tutorial ini, saya akan menunjukkan cara menginstal dan mengkonfigurasi 'Filebeat' untuk mentransfer file log data ke server Logstash melalui koneksi SSL.
Masuk ke server klien1. Kemudian salin file sertifikat dari server elastis ke server client1.
ssh [dilindungi email]Salin file sertifikat dengan perintah scp.
scp [dilindungi email]:~/logstash-forwarder.crt .
TYPE elk-server passwordBuat direktori baru dan pindahkan file sertifikat ke direktori tersebut.
sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/Selanjutnya, impor kunci elastis di server client1.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearchUnduh Filebeat dan instal 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.rpmFilebeat telah diinstal, buka direktori konfigurasi dan edit file 'filebeat.yml'.
cd /etc/filebeat/
vim filebeat.ymlDi bagian jalur pada baris 21, tambahkan file log baru. Kami akan menambahkan dua file '/var/log/secure' untuk aktivitas ssh dan '/var/log/messages' untuk log server.
jalur:
- /var/log/secure
- /var/log/messagesTambahkan konfigurasi baru pada baris 26 untuk menentukan jenis file syslog.
jenis dokumen:syslogFilebeat menggunakan Elasticsearch sebagai target output secara default. Dalam tutorial ini, kita akan mengubahnya menjadi Logshtash. Nonaktifkan output Elasticsearch dengan menambahkan komentar pada baris 83 dan 85.
Nonaktifkan output elasticsearch.
#-------------------------- Keluaran pencarian elastis ------------------ ------------
#output.elasticsearch:
# Array host yang akan dihubungkan.
# hosts:["localhost:9200"]Sekarang tambahkan konfigurasi output logstash baru. Batalkan komentar pada konfigurasi output logstash dan ubah semua nilai ke konfigurasi yang ditunjukkan di bawah ini.
output.logstash:
# Host Logstash
host:["10.0.15.10: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:falseSimpan file dan keluar dari vim.
Tambahkan Filebeat untuk memulai saat boot dan memulainya.
sudo systemctl aktifkan filebeat
sudo systemctl start filebeatLangkah 7 - Instal dan Konfigurasi Filebeat di Klien Ubuntu
Hubungkan ke server dengan ssh.
ssh [dilindungi email]Salin file sertifikat ke klien dengan perintah scp.
scp [dilindungi email]:~/logstash-forwarder.crt .Buat direktori baru untuk file sertifikat dan pindahkan file ke direktori tersebut.
sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/Tambahkan kunci elastis 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.debBuka direktori konfigurasi filebeat dan edit file 'filebeat.yml' dengan vim.
cd /etc/filebeat/
vim filebeat.ymlTambahkan jalur file log baru di bagian konfigurasi jalur.
jalur:
- /var/log/auth.log
- /var/log/syslogSetel jenis dokumen ke syslog.
jenis dokumen:syslogNonaktifkan output elasticsearch dengan menambahkan komentar ke baris yang ditunjukkan di bawah ini.
#-------------------------- Keluaran pencarian elastis ------------------ ------------
#output.elasticsearch:
# Array host yang akan dihubungkan.
# hosts:["localhost:9200"]Aktifkan keluaran logstash, batalkan komentar pada konfigurasi dan ubah nilainya seperti yang ditunjukkan di bawah ini.
output.logstash:
# Host Logstash
host:["10.0.15.10: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:falseSimpan file dan keluar dari vim.
Tambahkan Filebeat untuk memulai saat boot dan memulainya.
sudo systemctl aktifkan filebeat
sudo systemctl start filebeatPeriksa status layanan.
systemctl status filebeat
Langkah 8 - Menguji Elastic Stack
Buka browser web Anda dan kunjungi domain tumpukan elastis yang Anda gunakan dalam konfigurasi Nginx, milik saya adalah 'elk-stack.co'. Masuk sebagai pengguna admin dengan kata sandi Anda dan tekan Enter untuk masuk ke dasbor Kibana.
Buat indeks default baru 'filebeat-*' dan klik tombol 'Buat'.
Indeks default telah dibuat. Jika Anda memiliki beberapa ketukan di tumpukan elastis, Anda dapat mengonfigurasi ketukan default hanya dengan satu klik pada tombol 'bintang'.
Buka 'Temukan ' dan Anda akan melihat semua file log dari server elk-client1 dan elk-client2.
Contoh output JSON dari log server elk-client1 untuk login ssh yang tidak valid.
Dan masih banyak lagi yang dapat Anda lakukan dengan dasbor Kibana, cukup bermain-main dengan opsi yang tersedia.
Elastic Stack telah diinstal pada server CentOS 7. Filebeat telah diinstal pada CentOS 7 dan klien Ubuntu.
Cent OS