Kibana Visualize 추가해주세요
Index는 수정하지 마시고요
내가 받은 업무 지시사항이다.

지금 팀의 상황을 간략하게 보자면 소프트웨어 개발은 서울에서 하고 서버 인프라 관리 및 운영은 해외에 있는 파트너사에서 하고 있다.
이런 구조를 가지고 있다보니 새로운 인프라 요청이 있을 경우 시간 소요가 많이 되고 있다. 그렇기 때문에 당연히 요청은 보수적으로 하게 된다.
Kibana를 만져본지가 오래되어 다시 한번 살펴보았다.
이전에는 쿼리하고자 하는 데이터가 수집되고 있지 않으면 index pattern을 수정하여 처리했었다. 하지만 이번에는 권한 및 커뮤니케이션 비용 문제로 인해 index pattern을 건드릴 수 없기 때문에 다른 방법을 찾아야했다.
시간을 좀 투자하여 검색을 열심히 하다보니 대안책 두가지를 발견했다.
하나는 스크립트 필드(Scripted Field)이며, 다른 하나는 런타임 필드(Runtime Field)이다.
이름에서 벌써 느낌이 확 왔다.
뭔가 스크립트를 이용해 연산해서 필드를 만들 수 있나보다!
대규모 데이터를 다루는 상태에서 스크립트로 후처리를 해도 되는지 의문이 들었다.
역시나 Elastic에서 권장하는 기능은 아니었다. 성능에 영향을 주기 때문이다.
심지어 잘못된 스크립트 필드를 생성하면 에러가 발생한다.
스크립트 필드나 런타임 필드를 고려하기 전에 인덱스 패턴을 우선 고려하는 것이 좋다.
하지만 상황이 여의치 않을때는 두가지 방법을 적절히 이용해 보도록 하자.
1.스크립트 필드(Scripted Field)
중요한 값을 스키마에서 별도 필드로 정의하지 못하였거나 또는 두 개 필드를 결합하여 단일 필드로 처리하고자 하는 경우에는 어떻게 해야할까요? 이 때 유용한 것이 바로 Kibana의 스크립트 필드입니다.
출처 : Elastic blog
Kibana4 초기에 처음 도입되었다. Elasticsearch 스크립트 언어 중 Lucene Expressions로만 사용가능했고 숫자만 정의할 수 있는 등 사용이 제한적이었다. Kibana5에서 Painless 언어가 도입되면서 기능이 향상되었다.

1 row 마다 연산이 발생하기 때문에 너무 복잡한 연산은 지양하는 것이 좋다.
사용 방법은 아래와 같다.
자세한 사용방법은 여기를 클릭
2.런타임 필드(Runtime Field)
기존에 Elasticsearch는 데이터 검색 속도를 높이기 위해 쓰기 스키마 접근 방식을 사용했습니다. 하지만 이제 Elasticsearch에 읽기 스키마 기능이 추가되어 수집 후에도 사용자가 문서의 스키마를 유연하게 변경하고 검색 쿼리의 일부로만 존재하는 필드를 생성할 수도 있습니다.
출처 : Elastic blog
비슷한 기능으로 먼저 지원한 스크립트 필드보다 더 간편하게 사용할 수 있다. 하지만 런타임 필드를 사용하기 위해서는 최소 버전이 Elastic 7.11 이상이어야 한다.

자세한 사용방법은 여기를 클릭
스크립트 필드, 런타임 필드 모두 유용하지만 잘못된 수식을 사용할 경우 전반적으로 영향을 미칠 수 있기 때문에 검증을 충분히 하고 적용해야한다.
Kibana에서 이러한 기능들을 제공하지만 안타깝게도 팀에서 사용할 수 있는 환경이 아니어서 단순 필터할 수 있는 조건으로 추려서 업무를 마무리했다.
실제 적용 사례를 남기지 못해 아쉽다.