Table of Contents
ELK 스택에 NGINX 로그 전송하기
JAVA 8 이상이 필요합니다. 설치되어 있지 않으면 여기 를 참조해서 설치합니다.
ELK 스택이 필요합니다. 설치되어 있지 않다면 여기 를 참조해서 설치합니다.
Logstash 설정하기
메모리가 작은 경우, JVM 메모리 설정을 변경해 줍니다.
sudo vi /etc/logstash/jvm.options
......
-Xms256m
-Xmx256m
......
sudo vi /etc/logstash/logstash.yml
......
path.data: /var/lib/logstash
path.config: /etc/logstash/conf.d
path.logs: /var/log/logstash
......
sudo vi /etc/logstash/conf.d/logstash-nginx-es.conf
input {
beats {
port => 5400
ssl => false
# ssl => true
# ssl_certificate_authorities => ["/etc/elk-certs/elk-ssl.crt"]
# ssl_certificate => "/etc/elk-certs/elk-ssl.crt"
# ssl_key => "/etc/elk-certs/elk-ssl.key"
# ssl_verify_mode => "force_peer"
}
}
filter {
grok {
match => [ "message" , "%{COMBINEDAPACHELOG}+%{GREEDYDATA:extra_fields}"]
overwrite => [ "message" ]
}
mutate {
convert => ["response", "integer"]
convert => ["bytes", "integer"]
convert => ["responsetime", "float"]
}
# geoip {
# source => "clientip"
# target => "geoip"
# add_tag => [ "nginx-geoip" ]
# }
date {
match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
remove_field => [ "timestamp" ]
}
useragent {
source => "agent"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "weblogs-%{+YYYY.MM.dd}"
document_type => "nginx_logs"
}
stdout { codec => rubydebug }
}
sudo systemctl start logstash
sudo systemctl enable logstash
아래 명령으로 logstash 가 실행되고 있음을 확인할 수 있습니다.
netstat -tulpn | grep 5400
gpg key 추가
웹서버가 ELK 서버와 다르면 gpg key 를 추가로 설치해 주어야 합니다.
# gpg key 추가
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
# ElasticSearch 7.x 추가
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Filebeat 설치하기
sudo apt update
sudo apt install filebeat
sudo mv /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.org
sudo vi /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
paths:
- /var/log/nginx/*.log
exclude_files: ['\.gz$']
# scan_frequency: 10s
output.logstash:
hosts: ["172.31.31.196:5400"]
# ssl.certificate_authorities: ["/etc/elk-certs/elk-ssl.crt"]
# ssl.certificate: "/etc/elk-certs/elk-ssl.crt"
# ssl.key: "/etc/elk-certs/elk-ssl.key"
sudo systemctl start filebeat
sudo systemctl enable filebeat
에러가 발생하면 아래의 명령으로 로그를 확인할 수 있습니다.
tail -n 100 /var/log/syslog