소소한 컴퓨터 이야기

[Elastic Search] VM Workstation을 이용한 Elastic Search 사용 (2)

by Cori

1. logstach 설치, 노드 1번에 수행 (별도의 컴퓨터에 해도 됨)  

-> lostash를 사용하면 input과 output을 지정하고, filtering까지 적용할 수 있음. 대용량의 실시간 성이 있는 데이터들을 받아서 필터링을 하고, Elastic Search에 전송해줌 

 

0) 설치파일 다운로드 

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.14.1-linux-x86_64.tar.gz

tar xfz logstash-7.14.1-linux-x86_64.tar.gz

1) logstash 테스트

-> 리눅스에서의 일반적인 input과 output에 대해 logstash test 

~/logstash-7.14.1/bin/logstash -e 'input { stdin { } } output { stdout { } }'

2) logstash를 체계적으로 이용하기 위해, config 파일 수정 

· 디렉터리 이동 

cd ~/logstash-7.14.1/config

· 파일 수정

gedit test.conf

파일에 다음 내용 입력 

· input { stdin { } }

· output { stdout { } } 

· 앞으로는 다음 명령을 통해 logstash를 수행할 수 있다. 

~/logstash-7.14.1/bin/logstash -f test.conf

· 파일 수정

9900번 포트에서 들어오는 데이터를 input으로 사용하기 위해, 다음 내용 입력 

· 새로운 터미널 창에서 명령어 수행 

echo "hello logstash" | nc localhost 9900

"hello logstash" 라는 문자열을 내 컴퓨터 로컬호스트 9900으로 보낸다 ..  logstash에서 이 값을 input으로 감지하고 활용을 함 

* 가끔 Ncat: Connection refused 에러가 뜨면서 실행이 안되는데, 좀 기다렸다 실행하면 정상적으로 수행된다. 

 

· 파일 수정 

-> input값과 마찬가지로, output 값에 대해서도 파일을 수정한다. 

로컬호스트의 9200번 (elasticsearch)로 밀어넣으며, id와 pw는 우리가 지정해놓은 값을 사용한다. 

 

· 새로운 터미널 창에서 명령어 수행 

elastic search에 제대로 들어갔는지 확인하기 위해, 3번 노드에서 Kibana 실행해야 함 

 

3) 3번 노드에서 Kibana 실행 후    # dev tools 

GET /_cat/indices

위 명령어를 통해 인덱스 조회를 하면, logstash 인덱스가 만들어진 것을 확인할 수 있음 

GET logstash-*/_search

logstash 데이터를 검색하면, 데이터 하나가 들어가 있는 것을 확인할 수 있다. 

· 파일 수정 

-> input과 output에서 더 나아가, filter를 지정해서 logstash를 수행한다. 

grok을 이용해 매치되는 내용 추출, output을 stdout으로 다시 바꾸었다. 

 

· weblog 이용한 결과 조회 (새로운 터미널)

head ~/weblog-sample.log

head n 1 ~/weblog-sample.log | nc localhost 9900

* weblog-sample.log 파일은 강사님이 구글 드라이브에 올려주신 weblog-sample.log 파일을 사용하였다. 

· 샘플 로그 활용을 위해, 3번 노드에서 기존에 생성한 인덱스를 삭제하자 (Kibana)

DELETE logstash*

· conf 파일 수정 

· Kibana에서 실행 결과 조회 

GET /_cat/indices

GET logstash-*/_search

 

2. 한글 형태소 분석기 (nori 설치), 모든 노드에 수행

1) nori 설치 

~/es-714/bin/elasticsearch-plugin install analysis-nori

2) 명령어 수행 

curl "elastic-1:9200/_cat/nodes?v" -u elastic:bigdata

3. 한글 입력 세팅, 모든 노드에 대해 수행 ... 강의 자료 참고 

4. Kibana, nori tokenizer 사용 

0) GET _analyze 

nori analyzer를 사용하여 텍스트 분석 수행 

 

1) my_nori 인덱스에 '해물 사전을 추가한 my_nori_tokenizer 생성, 활용 

· nori_none tokenizer 사용

· nori_discard tokenizer 사용 

· nori_mixed tokenizer 사용

2) 품사 다루기, my_pos 인덱스 생성 

my_pos 인덱스를 만들고, stoptags를 NR을 줌 (숫자) 

 

· 생성한 my_pos 인덱스를 통해 '다섯'아이 분석해보기 

숫자가 생략된 것을 확인할 수 있다. 

· '나의' 아이 분석해보기 

 

5. filebeat 설치, 노드 1에서만 수행 

0) 파일 다운로드 

$ wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.14.1-linux-x86_64.tar.gz

 

1) 압축 해제 및 파일명 변경 

$ tar xfz filebeat-7.14.1-linux-x86_64.tar.gz

$ mv filebeat-7.14.1-linux-x86_64.tar.gz files

$ mv filebeat-7.14.1-linux-x86_64 fb-714

 

2) filebeat의 yml 파일 수정 

$ gedit ~/fb-714/filebeat.yml

enabled: true, paths: weblog-sample.log, hosts: elasticsearch (localhost:9200), username, password 수정 

 

3) Google Drive에서 filestream 파일 다운받아서, 홈 디렉터리 아래에 넣어두기 

4) filebeat 실행 

$ cd fb-714

$ /filebeat

 

5) Kibana Dev Tools 실행 (노드 3번) -> filebeat 받은 이후 수행 

$ GET _cat/indices

$ GET filebeat-7.14.1*/_search

logstash는 하나씩 데이터를 넣는 반면, filebeat의 경우 데이터를 계속 밀어넣음 

 

6) Filebeat 중지, 1번 노드 

7) 개수 count 

$ GET filebeat-7.14.1*/_count

$ DELETE filebeat* 

블로그의 정보

코딩하는 오리

Cori

활동하기