Cara Memantau Log NGINX dengan ELK Stack
Hai, teman-teman! Kali ini kita bakal bahas gimana caranya memantau log NGINX pake ELK Stack. Buat yang belum tau, ELK Stack itu singkatan dari Elasticsearch, Logstash, dan Kibana. Tiga serangkai ini bakal bantu kita ngumpulin, ngolah, dan nampilin data log dari NGINX dengan keren abis. Yuk, simak langkah-langkahnya!
1. Instalasi ELK Stack
Pertama-tama, pastiin dulu kalian udah punya ELK Stack terinstal di server kalian. Kalo belum, kalian bisa ikutin panduan instalasinya di sini. Jangan lupa, pastiin versi yang kalian pake kompatibel satu sama lain ya!
2. Konfigurasi NGINX untuk Logging
Sebelum kita ngumpulin log, pastiin dulu NGINX udah dikonfigurasi buat nge-log dengan format yang bener. Biasanya, NGINX udah punya file log di /var/log/nginx/access.log
dan /var/log/nginx/error.log
. Tapi, kalo kalian pengen format lognya lebih spesifik, kalian bisa ubah konfigurasi di /etc/nginx/nginx.conf
.
Contoh konfigurasi log format JSON:
http {
log_format json_combined escape=json
'{'
'"time_local":"$time_local",'
'"remote_addr":"$remote_addr",'
'"remote_user":"$remote_user",'
'"request":"$request",'
'"status": "$status",'
'"body_bytes_sent":"$body_bytes_sent",'
'"http_referrer":"$http_referer",'
'"http_user_agent":"$http_user_agent",'
'"http_x_forwarded_for":"$http_x_forwarded_for",'
'"request_time":"$request_time"'
'}';
access_log /var/log/nginx/access.log json_combined;
}
Dengan format JSON, nanti Logstash bakal lebih gampang ngolah datanya.
3. Konfigurasi Logstash
Selanjutnya, kita perlu ngatur Logstash buat ngumpulin log dari NGINX. Buat file konfigurasi baru di /etc/logstash/conf.d/nginx.conf
dengan isi kaya gini:
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
codec => "json"
}
}
filter {
date {
match => [ "time_local", "dd/MMM/yyyy:HH:mm:ss Z" ]
target => "@timestamp"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "nginx-access-%{+YYYY.MM.dd}"
}
}
Penjelasan:
- input: Ngambil log dari
/var/log/nginx/access.log
dengan format JSON. - filter: Ngubah format waktu
time_local
jadi format timestamp yang dimengerti Elasticsearch. - output: Ngirim data log ke Elasticsearch dengan index
nginx-access-<tanggal>
.
4. Jalankan Logstash
Setelah konfigurasi selesai, jalankan Logstash dengan perintah:
sudo systemctl start logstash
Pastiin Logstash jalan dengan cek statusnya:
sudo systemctl status logstash
5. Konfigurasi Kibana
Nah, sekarang datanya udah masuk ke Elasticsearch. Langkah selanjutnya adalah nampilin data itu di Kibana. Buka Kibana di browser kalian (biasanya di http://localhost:5601
), lalu ikutin langkah-langkah berikut:
Buat Index Pattern:
- Pilih “Management” > “Stack Management” > “Index Patterns” > “Create index pattern”.
- Masukkan pattern
nginx-access-*
dan klik “Next step”. - Pilih
@timestamp
sebagai “Time field” dan klik “Create index pattern”.
Eksplorasi Data:
- Pilih “Discover” di sidebar kiri.
- Pilih index pattern
nginx-access-*
yang udah kita buat tadi. - Kalian bakal liat data log NGINX yang udah diolah sama Logstash.
6. Buat Visualisasi dan Dashboard
Buat yang pengen lebih keren lagi, kalian bisa bikin visualisasi dan dashboard di Kibana. Caranya:
Buat Visualisasi:
- Pilih “Visualize” > “Create visualization”.
- Pilih tipe visualisasi yang kalian mau (misalnya, pie chart, bar chart, dll).
- Atur parameter sesuai kebutuhan, misalnya nampilin jumlah request per status code.
Buat Dashboard:
- Pilih “Dashboard” > “Create dashboard”.
- Tambahkan visualisasi yang udah kalian buat tadi ke dashboard.
- Atur tata letaknya sesuai selera.
7. Monitor dan Alarm
Kalo kalian pengen dapetin notifikasi kalo ada error atau traffic yang nggak biasa, kalian bisa pake fitur “Alerting” di Kibana. Caranya:
- Buat Rule:
- Pilih “Stack Management” > “Alerts and Insights” > “Rules”.
- Klik “Create rule”.
- Pilih tipe rule yang sesuai, misalnya “Log threshold”.
- Atur kondisi dan action (misalnya, kirim email kalo ada error 500 lebih dari 10 kali dalam 5 menit).
Kesimpulan
Nah, gitu aja sih cara memantau log NGINX pake ELK Stack. Dengan ELK Stack, kalian bisa ngumpulin, ngolah, dan nampilin data log dengan lebih gampang dan keren. Selamat mencoba, dan semoga bermanfaat!