1. Twitter

 1) input 소스

input {  

    twitter {

        consumer_key => "CONSUMER_KEY_GOES_HERE"

        consumer_secret => "CONSUMER_SECRET_GOES_HERE"

        oauth_token => "ACCESS_TOKEN_GOES_HERE"

        oauth_token_secret => "ACCESS_TOKEN_SECRET_GOES_HERE"

        keywords => ["test","sample"]

        full_tweet => true

    }

}


 2) 참고링크

 - https://www.elastic.co/guide/en/logstash/current/plugins-inputs-twitter.html


2. Json_Line

 1) 설치

bin/logstash-plugin list json_line

./bin/logstash-plugin install logstash-codec-json_lines


 2) 소스

output {

  stdout { codec => json_lines }

}


 3) 참고링크

  - https://www.elastic.co/guide/en/logstash/current/plugins-codecs-json_lines.html#plugins-codecs-json_lines

  - https://github.com/logstash-plugins/logstash-codec-json_lines


3. RSS

 1) 설치

./logstash-plugin install logstash-input-rss


 2) 소스

input {

        rss {

                interval => 300

                url => "https://rss.itunes.apple.com/api/v1/kr/ios-apps/top-grossing/all/100/explicit.rss"

        }

}









1. Filter Mutate??

 - 데이터 변환


2. 기능

 - remove_field : 해당 필드 값들을 제거한다.

 - rename : 필드명을 변경한다.

 - 기타 여러 기능들이 있다. 아래 참고링크를 참고하면 좋다.


3. 예제

filter {

mutate {

remove_field => [

"@timestamp",

"@version"

]

rename => {

"TEST_VALUE" => "testValue"

}

}

}


* 참고 링크

 - https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-rename

1. conf파일 기본 형태

#데이터를 가지고옴.

input {

}


#데이터를 가공함.

filter {

}


#데이터를 출력함.

output {

}


2. mysql에서 데이터 가져와서 파일로 생성해보기.

 1) mysql-connector를 직접 다운받아, path를 지정해줘야함.

(1) connector 다운로드

wget 'https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz'


 - 'https://dev.mysql.com/downloads/connector/j/' 링크를 통해서 직접 다운로드 받을 수도 있다.


(2) 압축풀기

tar -xvf ./mysql-connector-java-5.1.46.tar.gz


(3) 파일이동

  - 필요한 파일만 원하는 디렉토리로 이동

mv ./mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar ./lib/mysql-connector-java-5.1.46.jar


(4) 불필요한 파일 삭제

rm -rf ./mysql-connector-java-5.1.46*


 * pwd 명령어를 사용하면 편하게 path를 가져올수있음.


 2) mysql로 input 사용

(1) plugin 확인

bin/logstash-plugin list jdbc


 - 없을 경우 install 해야한다.

bin/logstash-plugin install logstash-input-jdbc


(2) input conf

input {

  jdbc {

    jdbc_driver_library => "~/lib/mysql-connector-java-5.1.46.jar"

    jdbc_driver_class => "com.mysql.jdbc.Driver"

    jdbc_connection_string => "jdbc:mysql://localhost:3306/database_name?useUnicode=true&characterEncoding=utf8&useSSL=false"

    jdbc_user => "user_name"

    jdbc_password => "user_password"

    statement => "SELECT 1 FROM DUAL"

  }

}


 - 옵션설명(https://www.elastic.co/guide/en/logstash/6.2/plugins-inputs-jdbc.html)

옵션명 

기능 

비고 

 jdbc_driver_library

 mysql-connector 라이브러리 위치

 앞에서 다운받은 위치

 jdbc_driver_class

 드라이버 클래스

 Mysql : com.mysql.jdbc.Driver

 jdbc_connection_string Connect String 설정 
 jdbc_user

 계정명

 
 jdbc_password

 계정 비밀번호

 
 statement 

 조회하려는 쿼리

 SELECT 1 FROM DUAL


(3) 간단하게 확인하기 위해 json 형태로 출력하자

output {

  stdout { codec => json }

}


(4) 실행 확인

 - 문법확인도 함께 하려면 옵션에 -t 를 추가한다.

bin/logstash -f ~/sample.conf


 - 응답

[INFO ][logstash.inputs.jdbc     ] (0.041156s) SELECT 1 FROM DUAL

{"1":1,"@version":"1","@timestamp":"2018-03-22T07:44:43.471Z"}







1. Logstash란?

 - 입력(input), 필터(filter), 출력(output) 3단계로 구성되어 있고, 다양한 플러그인이 있어 여러 상황에서 사용하기 편함.

 - ex) 로그수집 등


2. Logstash 설치

 1) Centos 7기준

(1) java 설치 여부 확인

java -version


 - 아래와 같이 나오면 설치되어 있는 것이고, 아닐 경우 jdk 설치를 먼저 진행하세요.

java version "1.8.0_151"

Java(TM) SE Runtime Environment (build 1.8.0_151-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)


(2) Logstash 다운로드

 - wget으로 받아야하므로, wget 설치 필요

wget 'https://artifacts.elastic.co/downloads/logstash/logstash-6.2.0.tar.gz'


 - 압축풀기

tar -xvf ./logstash-6.2.0.tar.gz


 - 링크설정

ln -s logstash-6.2.0 logstash


 - 다운받은 tar.gz 파일 삭제

rm -rf ./logstash-6.2.0.tar.gz


- 확인

logstash -e ‘input { stdin { } } output { stdout {} }’


3. Logstash 설정

- aws ec2를 프리티어로 사용할 경우나, 메모리가 부족할 경우에만 설정하세요.

 1) JVM 메모리 설정

vi ~/logstash/config/jvm.options


 2) config 수정

-Xms128m

-Xmx128m



4. 플러그인 

 1) 플러그인 리스트 확인

bin/logstash-plugin list

bin/logstash-plugin list --group input 


 2) 플러그인 설치

bin/logstash-plugin install #{플러그인명}


 3) 플러그인 업데이트

bin/logstash-plugin update 

bin/logstash-plugin update #{플러그인명}


 4) 전체플러그인 목록

(1) INPUT : 바로가기

(2) FILTER : 바로가기

(3) OUTPUT : 바로가기



* 참고페이지

 - https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html

 - https://www.elastic.co/guide/en/logstash/current/installing-logstash.html


* 시작전 필요사항

 - Elastic Stack에 대한 사전 지식

 - ElasticSearch가 설치되어 있어야함. ( https://www.google.co.kr/search?q=elasticsearch+install )

 - Logstash가 설치되어 있어야함. (https://www.google.co.kr/search?q=logstash+install)

 - Kibana가 설치되어 있어야함.(https://www.google.co.kr/search?q=kibana+install)


 - 해당 자료는 6.2.4 Set로 수정되었습니다.


1. 구성

  - ELB 로그를 S3에 저장한다.

  - Logstash로 간단하게 가지고와서, ElasticSearch에 넣는다.

  - Kibana로 간단하게 본다.


2. AWS Elb Log `ON`

 - AWS Console에서 쉽게 켤 수 있다.

 - https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/classic/access-log-collection.html

- 위에 S3 Location에 원하는 버킷 정보를 넣으면 된다.



3. Logstash Config 파일

 - config 파일



 - 실행 명령어

{LOGSTASH_PAHT}/logstash -f ''elb-access-logstash-conf.conf


4. ElasticSearch Index 확인하기

 - Rest API로 확인

curl -X GET 'http://localhost:9200/_cat/indices?v='


 - logstash-{날짜} 형태로 추가되어 있는지를 확인함.


5. Kibana 꾸미기

 1) Index Pattern 생성

  - Management에서 생성하면됨.

  - logstash-* 형태로 생성될 index들의 맵핑을 만들어 주면된다.


 2) Visualize 설정

  - 원하는 차트를 고르면된다.


  - Vertical Bar 로 표현할 예정



3) 차트 보기

 - 아래와 같이 설정하면 기본적인 차트를 볼 수 있음.

 - 필요한 형태로 변경하여 보면 됨.


6. 추가

 1) logstash로 생성한 모든 index 삭제

curl -X DELETE http://localhost:9200/logstash-%2A


 2) GeoIP

  - logstash Config 파일을 보면 Geoip 기능을 추가해놓음.

  - Map 으로 그려보면 재미남.


 3) 차트 꾸밀때 일정 설정...

  - 초기에 특정일자의 데이터만 수집해서 보는데, 데이터가 안나와서 삽질을 했다.

  - 시간을 최근 5분꺼만으로 세팅해놔서였다... 삽질하지말자!!



* 참고페이지

 - https://logz.io/blog/aws-elb-log-analysis/

 - https://medium.com/sharmin-anee/aws-elb-logs-from-s3-on-elk-stack-c463e2e2ec0

+ Recent posts