AWS Elastisearch + Logstash + Kibana 를 이용한 로그분석 환경 구성하기(part 2)

Install logstash

logstash

logstash는 시스템로그, 어플리케이션로그 등 거의 모든 종류의 로그를 수집해 처리하고 전송 할 수 있는 오픈소스 툴이다. 본 문서에서는 nginx웹서버의 access log를 Amazon ES에 저장하는 방법을 설명한다. file,redis,mongodb등 수많은 Output plugin들을 지원하므로 각 환경에 대한 전송방법은 logstash 공식메뉴얼https://www.elastic.co/guide/en/logstash/current/output-plugins.html를 참고한다.

jdk설치

http://www.oracle.com/technetwork/java/javase/downloads/index.html 에서 java다운로드 받아 설치.


public signing key 다운로드 및 설치

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

logstash 레포지토리 등록

/etc/yum.repos.d/디렉토리에 logstash.repo파일을 만들어 다음내용을 추가한다.

[logstash-2.3]
name=Logstash repository for 2.3.x packages
baseurl=https://packages.elastic.co/logstash/2.3/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

logstash 설치

yum으로 간단하게 설치가 된다.

yum install logstash

Amazon_ES 연동을 위한 플러그인 설치

AWS Elasticsearch에 데이터를 로딩하기 위해서는 logstash-output-amazon_es라는 이름의 logstash Output 플러그인이 필요하다. 보다 자세한 내용은 logstash-output-amazon_es의 github page https://github.com/awslabs/logstash-output-amazon_es에서 확인 할 수 있다.

설치는 다음 명령어로 손쉽게 설치가 가능하다.

/opt/logstash/bin/plugin install logstash-output-amazon_es

Nginx 로그포멧 설정

Amazon ES에 nginx의 access log를 로딩하기 위해 로그포멧을 json형태로 변경한다. 로그포멧 변경은 /etc/nginx/nginx.conf 파일 log_format부분에 다음 내용을 추가한다.

log_format json_format '{"time": "$time_iso8601", '
                    '"remote_addr": "$remote_addr", '
                    '"remote_user": "$remote_user", '
                    '"body_bytes_sent": $body_bytes_sent, '
                    '"request_time": $request_time, '
                    '"status": $status, '
                    '"request": "$request", '
                    '"request_method": "$request_method", '
                    '"http_referrer": "$http_referer", '
                    '"http_user_agent": "$http_user_agent"}';
access_log  /var/log/nginx/access.log  json_format;

logstash 설정

/etc/logstash/conf.d/logstash.conf을 만들고 다음과 같이 수정한다.

  • input : 수집할 데이터 소스에 대해 정의해 준다. apache, nginx 등의 로그 파일을 데이터 소스로 사용할 경우 file을 이용하여 데이터를 수집한다.
  • filter : input에서 수집한 데이터를 가공하기 위한 패턴을 기술.
  • output : input으로 부터 수집된 데이터의 전송에 대한 정의.
input {
    file {
        path => "/var/log/nginx/access.log" # nginx access log의 절대경로
        type => nginx
        codec => json
    }
}
output {
    amazon_es {
        hosts => ["search-test-lab-n6tnyeqif2zfyha77vvnvvd45i.ap-northeast-1.es.amazonaws.com"] # 생성한 Amazon ES Endpoint주소
        region => "ap-northeast-1" # 리전
        index => "nginx.access-logs-%{+YYYY.MM.dd}" # 인덱스 이름
    }
}

logstash 구동

service logstash start

logstash데몬이 구동되면 Amazon ES로 nginx 로그를 전송하게 된다. 이후에 Amazon ES콘솔에서 다음 그림과 같이 나타날 것이다.

다음으로 Amazon ES콘솔의 Kibana URL을 클릭해 들어가 확인하면 된다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다