본문 바로가기

ELK

[ES] 도커를 이용해 인덱스 주기적으로 삭제하기 로그를 끊임없이 ES에 저장하다보면 디스크 용량이 부족한 문제가 발생한다. 수동으로 인덱스를 삭제하다보면 단순히 번거로울 뿐만이 아니라 삭제하지 않으려고 했던 인덱스도 삭제될 수 있기 때문에, 삭제 자동화는 ES 운영에 반드시 필요하다. curator는 elasticsearch의 인덱스를 관리를 위한 어플리케이션으로, ES와 격리된 환경에서 http 통신으로 동작이 가능하다. 여기에는 인덱스 삭제만 나와있지만, 샤드의 삭제나 엘라스틱서치의 스냅샷 삭제, 샤드 라우팅 변경도 가능하다. 나의 경우 curator를 세팅할 서버는 폐쇄된 환경이었기 때문에, 로컬에서 curator 공식사이트의 dockerfile을 받아 이미지를 빌드한 다음, 이미지를 파일로 압축해 서버에 세팅하고 cronjob을 통해 매일 인덱..
[ES] 403 index read-only 에러가 발생했을 때 어느날 ElasticSearch index에 데이터가 제대로 들어오지 않는 것같아서 logstash의 log를 열어보니 다음과 같은 로그가 여러개 발생해 있었다. logstash.outputs.elasticsearch] retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"blocked by: [FORBIDDEN/12/index read-only / allow delete (api)] 그래서 찾아보니 이런 내용의 글이 있었다. (원문 페이지: https://discuss.elastic.co/t/forbidden-12-index-read-only-allow-delete-api/110282) ..
[ES] mapping 데이터 타입 설정하기 ES는 인덱스를 자동생성된 방식 그대로 사용하기를 권장하지 않는다. 키바나를 올바르게 활용하기 위해서는 템플릿을 통해 인덱스의 데이터 타입 가공이 필요하다. 가령 키바나에서 1초 이상의 요청시간이 필요한 로그(time:>1000)를 검색하고 싶다면 해당 데이터의 타입은 string이 아닌 integer여야한다.자동생성되는 매핑타입은 일반적으로 string keyword 이므로, 템플릿 추가를 통해 인덱스 생성 전에 integer로 타입 지정하도록 설정할 수 있다. 내가 변경하고자 두 필드는 time_taken과 logdate인데, 이 데이터의 자동으로 생성된 매핑은 아래와 같다.{ "mapping": { "doc": { "properties": { //다른 데이터들 생략 "logdate": { "type..