최초 접속 시 생 성 된 Schema 가 없 기 때문 에 새로운 Schema 를 생성 해야 합니다 . 
 ELK _ TEST 라는 스키마 를 생성 하 고 ELK _ TEST 에 person 이 라는 테이블 을 생성 합니다 . 
 0 bd 44 ff 9 c 2 cf : Already exists 
 047670 ddbd 2 a : Already exists 
 ea 7 d 5 dc 89438 : Already exists 
 4 a 05570971 bb : Already exists 
 66 f 679 cd 5859 : Already exists 
 89362 eaac 850 : Already exists 
 d 76 c 23323 cb 4 : Already exists 
 f 7 a 113 d 2 d 566 : Already exists 
 cb 2 dece 5 a 7 e 2 : Pull complete 
 8 cf 5 a 699244 c : Pull complete 
 c 275 eeaebd 29 : Pull complete 
 159 e 9 a 1395 db : Pull complete 
 01 be 31 fa 2906 : Pull complete 
 9 b 5 ca 62233 e 3 : Pull complete 
 39280 aea 2 b 61 : Pull complete 
 6 bac 8 e 5 eed 53 : Pull complete 
 Digest : sha 256 : edd 49321633 aff 49 b 0 f 7 d 65 f 0 f 369 b 5555 b 467 b 1 d 8 b 7 a 29 c 629802 beb 9 f 0 a 68 f 
 Docker Pull 을 이용 하 여 logstash 이미지 를 내려 받 았 습니다 . 
 logstash 를 구동 하 기 전 에 mysql 연동 을 위하 여 필요 한 설정 들 이 있 습니다 . 
 먼저 Logstash - MySQL 을 연동 하 기 위해선 jdbc 드라이버 가 있 어야 하 는데요 . 
 https : / / dev . mysql . com / downloads / connector / j / 5 . 1 . html 에서 다운 받 으실 수 있 습니다 . 
 로컬 환경 에 MySQL - Connector 파일 을 다운 받 은 뒤 폴더 를 하나 생성 하 여 해당 파일 을 이동 시켜 놓 습니다 . 그 다음 해당 폴더 로 이동 하 여 텍스트 편집기 나 터미널 환경 에선 vim 을 이용 하 여 logstash . conf 라는 파일 을 생성 합니다 . 
 생성 한 파일 에 위 와 같이 입력 합니다 . 위 형식 은 크 게 input 과 output 으로 나뉘 어 져 있 는데 , input 은 logstash 가 입력 받 는 내용 을 설정 하 는 것 이 고 , output 은 input 에서 받 은 내용 을 처리 하 는 부분 을 설정 하 는 곳 입니다 . 
 우리 의 목적 은 logstash 가 jdbc connection 으로 설정 한 DB 접속 정보 로 접속 하 여 schedule 에 맞 게 입력 한 쿼 리문 을 실행 하 여 해당 데이터 를 elasticsearch 에 저장 하 는 것 입니다 . 
 그러므로 input 에서 DB 접속 정보 들 을 설정 하 였 고 , output 에선 elasticsearch 의 접속 정보 , 저장 할 index , document _ type 등 을 설정 합니다 . 
 위 와 같이 설정 한 뒤 , 이제 docker 환경 에서 logstash 를 구동 해 보 겠 습니다 . 
 $ docker run - it -- rm - v "$ PWD ":/ config - dir logstash logstash - f / config - dir / logstash . conf 
 간단히 설명 하 자면 , - it 를 이용 하 여 logstash 내 의 명령어 를 입력 할 수 있 고 , -- rm 으로 프로세스 를 종료 하 면 docker 가 바로 삭제 되 도록 설정 했 습니다 . 그리고 - v 옵션 은 로컬 의 경로 를 docker 프로세스 의 경로 로 마운트 하 는 명령어 입니다 . 추가 적 으로 - v 뒤 에 "$ PWD ":/ config - dir 라고 입력 하 면 , 로컬 의 터미널 창 에서 현재 디렉 토리 를 의미 하 는 PWD 의 경로 를 logstash docker 의 / config - dir 에 마운트 한다는 의미 입니다 . 
 이 명령 을 추가 한 이유 는 제 가 방금 로컬 에서 작성 한 logstash . conf 와 mysql - connector 파일 을 실제 logstash 환경 에서 사용 해야 하 기 때문 입니다 . 그 다음 으로 logstash - f / config - dir / logstash . conf 명령어 를 로컬 에서 - it 명령 을 통해서 직접 실행 하 였 습니다 . 
 위 명령 대로 실행 하 면 logstash 는 logstash . conf 의 설정 정보 를 가지 고 logstash 를 구동 하 게 됩니다 . 
 그 결과 를 보 시 면 , 
 gimseongsin @ gimseongsin - ui - MacBook - Pro : ~/ Desktop / IBK 시스템 / 교육 / ElasticSearch / data : > docker run - it -- rm - v "$ PWD ":/ config - dir logstash logstash - f / config - dir / logstash . conf 
 00 : 44 : 21 . 940 [ [ main ] - pipeline - manager ] INFO logstash . outputs . elasticsearch - Installing elasticsearch template to _ template / logstash 
 00 : 44 : 22 . 726 [ [ main ] - pipeline - manager ] INFO logstash . pipeline - Pipeline main started 
 00 : 45 : 01 . 377 [ Ruby - 0 - Thread - 16 : / usr / share / logstash / vendor / bundle / jruby / 1 . 9 / gems / rufus - scheduler - 3 . 0 . 9 / lib / rufus / scheduler / jobs . rb : 283 ] INFO logstash . inputs . jdbc - ( 0 . 012000 s ) SELECT version ( ) 
 00 : 45 : 01 . 384 [ Ruby - 0 - Thread - 16 : / usr / share / logstash / vendor / bundle / jruby / 1 . 9 / gems / rufus - scheduler - 3 . 0 . 9 / lib / rufus / scheduler / jobs . rb : 283 ] INFO logstash . inputs . jdbc - ( 0 . 002000 s ) SELECT version ( ) 
 00 : 45 : 01 . 438 [ Ruby - 0 - Thread - 16 : / usr / share / logstash / vendor / bundle / jruby / 1 . 9 / gems / rufus - scheduler - 3 . 0 . 9 / lib / rufus / scheduler / jobs . rb : 283 ] INFO logstash . inputs . jdbc - ( 0 . 051000 s ) SELECT count ( *) AS ` count ` FROM ( select * from person ) AS ` t 1 ` LIMIT 1 
 00 : 45 : 01 . 461 [ Ruby - 0 - Thread - 16 : / usr / share / logstash / vendor / bundle / jruby / 1 . 9 / gems / rufus - scheduler - 3 . 0 . 9 / lib / rufus / scheduler / jobs . rb : 283 ] INFO logstash . inputs . jdbc - ( 0 . 009000 s ) SELECT * FROM ( select * from person ) AS ` t 1 ` LIMIT 10000 OFFSET 0 
 logstash 가 실행 되 고 , 1 분 뒤 에 제 가 logstash . conf 파일 에서 설정 한 쿼리 인 select * from person 를 실행 하 고 그 결과 를 출력 하 게 됩니다 . 또 동시 에 이 출력 결과 는 output 으로 설정 한 elasticsearch 에 입력 되 게 됩니다 . 
 실제로 elasticsearch 에 저 조회 데이터 가 입력 되 었 는지 확인 하 기 위해 kibana 에 접속 하 여 확인 해 봅니다 . 
 Kibana 에 접속 해 보 니 해당 데이터 가 입력 되 어 있 습니다 . 
 logstash . conf 에 schedule 로 * * * * * * 로 입력 되 어 있 는데 , 이것 은 crontab 표기법 으로 1 분 에 한 번 씩 설정 한 쿼리 를 실행 하 고 데이터 를 저장 한다는 것 을 의미 합니다 . 
 이렇게 mysql 과 연동 하 여 주기 적 인 데이터 를 수집 할 수 있 게 되 었 습니다 . 
 [ 정보 ] elk