'logstash-' 날짜 형태로 인덱스를 자동 생성하는데, 여러 타이틀 혹은 용도 별로 분리하려면 수정이 필수적임. 



만약 새롭게 생성하는 상황이라면, 원하는 곳에 pipelines에 적용할 config 파일을 하나 만들자. 


( https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html 참고)



만약 이미 만들어 두었다면 config/pipelines.yml을 열어 pipeline.id의 path.config를 확인해보자.


이제 기본적인 pipeline config를 구성했다면 원하는 조건과 이름을 활용해 인덱스를 수정해보자.


만약 logstash에서 elasticsearch로 바로 보낸다면 output 부분이 아래와 같을 것이다. 


output { elasticsearch { hosts => ["IP Address:port"] } }



hosts아래에 인덱스 이름 조건을 아래와 같이 삽입하면 elasticsearch에서 인덱스 명이 수정된 것을 확인할 수 있다.



output { elasticsearch { hosts => ["IP Address:port"]

index => 'test-%{+YYYY.MM.dd}' } }



만약 다중 pipelines을 사용한다면 input의 type별로 인덱스를 다르게 할 수 있다.



input {

redis {

.

.

type => "game_name"

}

.

.

}

.

.



output {

if[type]=="game_name"{ elasticsearch { hosts => ["IP Address:port"]

index => 'test-%{+YYYY.MM.dd}' }

}

.

.

}



* 조건은 아래와 같이 다중으로 처리 할 수 있다. 


if[type]=="game_name" and [playtime]>0{




보다 상세한 내용은 https://www.elastic.co/guide/en/logstash/current/configuration.html 문서에서 찾을 수 있다.



------------------------------------------------------------------------------------------------------------------------------


커스텀 인덱스 사용에 대한 주의 사항이 있어 내용을 추가한다.


유저 ip로 유저들의 위치 등을 찾아 낼 수 있는 플러그인을 기본적으로 제공하는데 한 가지 제약이 있다.


커스텀 인덱스를 사용하면 geoip의 정보를 찾아주지면 location이 아래처럼 일반 데이터 형태로 처리된다. 



그래서 Visualize/Map으로 가면 아래와 같은 에러를 볼 수 있다. 




원인은 logstash-로 시작되는 인덱스가 아닌 경우 geoip 를 제대로 처리하지 않기 때문이다. (https://www.elastic.co/blog/geoip-in-the-elastic-stack 참고)


elasticsearch로 output 하는 기본 Template 파일을 보면 "template":"logstash-*"로 시작되는걸 볼 수 있다. 


이를 해결하기 위한 방법은 두 가지가 있는데, 첫 번째는 별도의 template 파일을 만들어서 적용하는 것이다. 


elasticsearch {
      manage_template => true
      template => "/etc/logstash/templates/custom_template.json"
}

(https://stackoverflow.com/questions/29344547/kibana4-geo-map-error-not-showing-the-client-ip-field 참고)

하지만 이는 커스텀 인덱스 별로 모두 별도로 만들어야 하는 문제가 있다. 이를 해결하기 위한 두 번째 방법을 권고하는데, 그 방법은 커스텀 인덱스 이름 앞에 "logstash-"를 붙이는 방법이다. 개인적으로도 이 방법을 추천한다. 

index => 'logstash-test-%{+YYYY.MM.dd}'

잘 처리되면 아래와 같은 결과를 볼 수 있다. 

이상. 또 다른 이슈 안생기길...

'개발/경험 > linux-Solution' 카테고리의 다른 글

Elasticsearch cluster 설정  (0) 2018.07.25
logstash와 mysql 연동  (0) 2018.07.24
logstash 인덱스 수정, 조건 설정하는 방법  (0) 2018.07.16
Kibana systemd 에 등록하기  (0) 2018.07.11
Elasticsearch 설치기  (0) 2018.07.06
메모리 사용양 측정 - mpstat  (1) 2015.04.10

+ Recent posts