-
Logstash 6.x Json 포맷 Log 파일 입력 받아 ElasticSearch6.x 에 Template 기반 출력 하는 법ELK/Logstash 2018. 11. 20. 15:40
Logstash에서 json 포맷의 로그파일 input으로, Elasticsearch에 ouput 시키기
0. log 파일 내용
{"id":"1", "hashtag" : "해시테그1"}
{"id":"2", "hashtag" : "해시테그2"}
{"id":"3", "hashtag" : "해시테그3"}
,,,,,
1. Logstash 설정 파일 (eg, logstash-backpack-hashtag.conf)
input {file {path => "/usr/local/nodejs/backpack/logs/backpack-api-posting.log" // 로그 파일 경오start_position => "beginning" // 시작점 부터 읽어 드리는 옵션}}filter{json {source => "message" // 해당 log 각각의 row}}output {elasticsearch {hosts => ["xxx.xxx.xxx.xxx:9200"]index => "backpack_postings" // 엘라스틱 서치 인덱스 명document_type => "postings" // 엘라스틱 서치 타입 명document_id => "%{id}" // 엘라스틱 도큐먼트 id, 위에서는 json format의 id값template_name => "backpack_postings" // 맵핑시킬 엘라스틱서치 탬플릿 명}}2. 엘라스틱서치 템플릿
+nori 형태소 분석기, ngram, edge_ngram 적용 케이스
#템플릿 등록PUT _template/backpack_hashtags{"template": "backpack_hashtags","settings": {"analysis": {"analyzer": { // 분석기 설정,,,"korean_analyzer" : {"type" : "custom","tokenizer": "korean_tokenizer","filter" : ["stop", "lowercase", "trim"]},"ngram_analyzer" : {"type" : "custom","tokenizer" : "ngram_tokenizer","filter" : ["lowercase", "trim"]},"edge_ngram_analyzer" : {"type" : "custom","tokenizer" : "edge_ngram_tokenizer","filter" : ["lowercase", "trim"]}},"tokenizer": { // 토크나이저 설정,,,"korean_tokenizer": {"type": "nori_tokenizer","decompound_mode": "mixed","user_dictionary": "userdict_ko.txt"},"ngram_tokenizer" : {"type" : "ngram","min_gram" : "1","max_gram" : "5","token_chars": [ "letter", "digit"]},"edge_ngram_tokenizer" : {"type" : "edge_ngram","min_gram" : "1","max_gram" : "5","token_chars": [ "letter", "digit"]}}}},"mappings": {"hashtags" : { // 타입 명"properties": {"hashtag" : {"type": "text","fields" : { // 필드 정의"hashtag_ko" : {"type" : "text", "analyzer" : "korean_analyzer", "boost": 3},"hashtag_ng" : {"type" : "text", "analyzer" : "ngram_analyzer", "boost": 1},"hashtag_ed" : {"type" : "text", "analyzer" : "edge_ngram_analyzer", "boost": 2}}}}}}}3. 해당 템플릿으로 인덱스 생성
backpack_hashtags
PUT /backpack_hashtags
인덱스 정보를 채우지 않아도, 해당 템플릿으로 지정한 이름으로 맵핑되어 인덱스가 생성 됩니다.
4. logstash 실행
../bin/logstash -f ./logstash-backpack-hashtag.conf5. elasticsearch 데이터 확인
#GET /backpack_hashtags/hashtags/_search?pretty'ELK > Logstash' 카테고리의 다른 글
Logstash 6.x Multi instance 실행 설정 법 (0) 2018.11.20