[Elasticsearch] Logstash 설치와 기본개념

2015. 10. 15. 09:56·프로젝트 관련 조사/로그 관련
반응형

출처: http://asuraiv.blogspot.kr/2015/07/elasticsearch-logstash.html

 

1. 개요



Logstash는 입출력 도구이다. 다양한 종류의 로그 (System logs, webserver logs, error logs, application logs) 뿐만아니라 입력되는 모든 종류의 데이터를 가공하여 출력할 수 있다.

Elasticsearch와 궁합이 잘 맞아 지금은 Elasticsearch의 공식 패키지에 포함되어 있다고 한다. 이제 그 Logstash 설치해보고 기본적인 개념들을 살펴보도록 한다.

2. Logstash 설치와 간단예제



일단 설치해보자.

1) download

$ wget 'http://download.elastic.co/logstash/logstash/logstash-1.5.1.tar.gz'

주소는 다음으로 변경됨

 

 

 


2) 압축풀기

$ tar -xvzf logstash-1.5.1.tar.gz


끝났다(..) 정말이다.

Logstash는 위에서 언급했듯이 입출력 도구이며,
input > filter > output 의 pipeline구조로 구성되어있다.









 

  • input : 데이터를 받아들인다
  • filter : 데이터를 가공한다
  • output : 데이터를 출력한다


이러한 input, filter, output 설정은 직접 configuration 파일을 작성하여 설정해야하는데,
문법은 아래와 같다

input {
        .
        .
        .
}

filter {
        .
        .
        .
}

output {
        .
        .
        .
}

엄청 간단해 보인다. 하지만 어떤 기술이든 마찬가지로 기본은 쉬워보이는법,, 조금만 파고들어가면 걷잡을 수 없이 미로를 헤맬수  있다.

여튼 가장 기본적인 설정 즉, 입력은 stdin, 출력은 stdout 으로 설정하여 어떤식으로 입출력을 처리하는지 살펴보자. 일단 설정파일은 아래와 같이 매우 간단하다.

$ cat logstash.conf
input {
        stdin { }
}

output {
        stdout {
                codec => rubydebug { }
        }
}

주목할 부분은 stdout 설정에 codec을 추가했다는 것이다. rubydebug는 출력을 보기좋은 json 포맷으로 보여준다.

이제 logstash 압축을 해제한 디렉토리의 /bin 디렉토리로 이동하여 아래와같은 명령어로 conf 파일과 함께 실행 시킨다.

$ ./logstash -f [configuration file path]/logstash.conf

실행이 되었으면 stdin 으로 'Hello world'를 입력해보자

$ ./logstash -f logstash.conf
Logstash startup completed
Hello world!
{
       "message" => "Hello world!",
      "@version" => "1",
    "@timestamp" => "2015-07-21T11:47:37.140Z",
          "host" => "cweb02.ami"
}

표준 입력으로 Hello world! 라는 문자열을 입력했고, 표준 출력으로 출력이되며 rubydebug 코덱으로 인해 json 형식으로 출력된다. 이때 message, @version, @timestamp 등의 필드는 Logstash에 내장 되어있는 필드라고 볼 수 있다.

input, output 플러그인의 종류는 매우 많다. 물론 데이터의 출력과 동시에 Elasticsearch에 색인작업을 해주는 elasticsearch output plugin도 존재한다.
아래의 문서들을 참고하자!

  • input plugins : https://www.elastic.co/guide/en/logstash/current/input-plugins.html
  • output plugins : https://www.elastic.co/guide/en/logstash/current/output-plugins.html
  • codec plugins : https://www.elastic.co/guide/en/logstash/current/codec-plugins.html


filter 설정을 적용하면, 입력으로 들어온 데이터를 가공하는 작업 예를들어 json 형식으로 데이터가 입력되었다면 필드를 삭제, 추가하거나 필드의 값을 조작할 수 있다. 여기서는 json 데이터를 가공해주는 json filter를 적용해보자.

아래와 같이 conf 파일을 수정한다

input {
        stdin { }
}

filter {
        json {
                source => "message"
                add_field => { "new_field1" => "New field value!"  }
                add_field => { "new_field2" => "My name is %{name}" }
                remove_field => [ "useless_field" ]
        }
}

output {
        stdout {
                codec => rubydebug { }
        }
}

filter로서 'json' filter를 추가했다. source 설정은 가공할 데이터가 들어있는 field를 가리킨다. add_field는 말그대로 field를 추가하는 것으로서, static한 고정값을 가지고있는 field를 추가할 수도있고, 기존 source의 데이터의 필드값을 '%{field이름}' 을 사용해 접근할 수 있다.

이제 이러한 설정을 저장하고, 실행한 뒤 표준 입력으로 json 포맷을 던져보자.

$ ./logstash -f logstash.simple.conf
Logstash startup completed
{ "name" : "timmy", "address" : "boston", "useless_field" : "garbage value" }
{
       "message" => "{ \"name\" : \"timmy\", \"address\" : \"boston\", \"useless_field\" : \"garbage value\" }",
      "@version" => "1",
    "@timestamp" => "2015-07-21T12:03:38.577Z",
          "host" => "cweb02.ami",
          "name" => "timmy",
       "address" => "boston",
    "new_field1" => "New field value!",
    "new_field2" => "My name is timmy"
}

{ "name" : "timmy", "address" : "boston", "useless_field" : "garbage value" } 와 같은 json 데이터를 표준입력을 통해 입력했다. name필드값으로 'timmy', address필드값으로 'boston'을 입력하였고, 필드 삭제 예제를 위해 'useless_field'도 추가했다.

결과는? 입력된 값 바로아래에서 볼 수 있다. 일단은 위에서 설명한것처럼 message, @version, @timestamp, host 필드는 Logstash의 내장 필드이다. 그 아래로, name과 address가 정상적으로 출력되고 있고, remove_field 설정으로 인해 'useless_field'는 삭제되었다.

그리고 add_field 설정에서 정의된 new_field1, new_field2 필드들이 새로 추가 되었으며, 주목할만한건 new_field2 의 값인데, %{name} 와 같이 기존 데이터의 필드의 값을 접근하여 새로운 필드의 값으로 저장된 것을 볼 수 있다.

짐작했겠지만 다양한 종류의 데이터를 가공하기 위해 필터의 종류도 매우 다양하다. 아래를 참고 하자.

fileter plugins : https://www.elastic.co/guide/en/logstash/current/filter-plugins.html

3. 결론



아무튼 Logstash는 input, filter, output 의 파이프라인 구조로 되어있다는 점, 더불어 input과 output의 한 부분으로 동작하며 데이터를 변화시키는 codec도 기억하면 좋을 것이다.

반응형
저작자표시

'프로젝트 관련 조사 > 로그 관련' 카테고리의 다른 글

logstash 레퍼런스  (0) 2015.10.15
log4j 관련  (0) 2015.10.15
중앙집중 로깅 시스템  (0) 2015.10.15
LogStash 이해하기  (0) 2015.10.15
MS 로그 syslog로 전환  (0) 2015.10.12
'프로젝트 관련 조사/로그 관련' 카테고리의 다른 글
  • logstash 레퍼런스
  • log4j 관련
  • 중앙집중 로깅 시스템
  • LogStash 이해하기
호레
호레
창업 / IT / 육아 / 일상 / 여행
    반응형
  • 호레
    Unique Life
    호레
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 법률
        • 기본
        • 개인정보보호법
        • 정보통신망법
        • 전자금융거래법
        • 전자금융감독규정
        • 신용정보법
        • 온라인투자연계금융업법
      • 창업
        • 외식업 관련
        • 임대업 관련
        • 유통업 관련
        • 세무 관련
        • 마케팅 관련
        • 기타 지식
        • 트렌드
        • Youtube
      • IT기술 관련
        • 모바일
        • 윈도우
        • 리눅스
        • MAC OS
        • 네트워크
        • 빅데이터 관련
        • A.I 인공지능
        • 파이썬_루비 등 언어
        • 쿠버네티스
        • 기타 기술
      • 퍼블릭 클라우드 관련
        • Azure
        • GCP
        • AWS
      • 정보보안 관련
        • QRadar
        • Splunk
        • System
        • Web
      • 기타
        • 세상 모든 정보
        • 서적
      • 게임 관련
        • 유니티
      • 부동산
      • 맛집 찾기
        • 강남역
        • 양재역
        • 판교역
        • ★★★★★
        • ★★★★
        • ★★★
        • ★★
        • ★
      • 결혼_육아 생활
        • 리얼후기
        • 일상
        • 육아
        • 사랑
        • Food
      • 영어
        • 스피킹
        • 문법
        • 팝송
        • 영화
      • K-컨텐츠
        • 드라마
        • 영화
        • 예능
      • 독서
      • 프로젝트 관련 조사
        • 시스템 구축
        • 로그 관련
        • 웹
        • APT
        • 모의 해킹
        • DB
        • 허니팟
        • 수리카타
        • 알고리즘
        • FDS
      • 기업별 구내 식당 평가
        • 한국관광공사
        • KT telecop
        • KT M&S
        • KT powertel
        • KT cs 연수원
        • 진에어
      • 대학 생활
        • 위드윈연구소
        • 진로 고민
        • 채용정보
        • 자동차
        • 주식
        • 악성코드
        • 게임 보안
      • 쉐어하우스
  • 블로그 메뉴

    • 홈
    • 게임 관련
    • IT 기술 관련
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    유니티
    수제버거존맛
    대통령
    점심
    마케팅
    상호관세
    복리후생
    판교맛집
    AWS
    수제버거
    돈까스
    판교
    판교역
    수제버거맛집
    쥬쥬랜드
    런치
    이재곧죽습니다
    맛집
    무역전쟁
    보안가이드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
호레
[Elasticsearch] Logstash 설치와 기본개념
상단으로

티스토리툴바