변수 제어를 통해 Kibana 대시보드 상호 작용성 향상
Kibana 8.18+에서 변수 제어를 사용하여 Kibana 대시보드의 개별 시각화를 필터링하고 시간 간격을 조정하며 다양한 필드로 그룹화하는 방법을 알아보세요.
이제 버전 8.18과 모든 9.x 시리즈부터 Kibana 대시보드에서 변수 제어를 사용할 수 있게 되어 기쁘게 생각합니다! 이 기능은 대시보드 사용자들 사이에서 가장 꾸준히 요청받은 추가 기능 중 하나였으며, 드디어 출시되었습니다 🎉 지난 몇 달간 변수 제어를 계속 확장하고 개선하였으며, 이제는 이를 위한 전용 블로그 포스팅을 만들게 되었습니다.
변수 제어란 무엇인가요?
이전에 Kibana 대시보드를 사용해 본 적이 있다면, 아마도 클래식 대시보드 제어를 알고 계실 것입니다. 데이터에서 값을 표시하여 몇 번의 클릭만으로 항목을 필터링할 수 있는 편리한 드롭다운입니다.

변수 제어는 겉보기에는 비슷해 보이지만, 독창적인 차별점이 있습니다. 대시보드의 모든 패널을 자동으로 필터링하는 대신, 개별 시각화 내의 ES|QL 쿼리에 직접 연결할 수 있습니다.
즉, 사용자가 각 제어가 적용되는 위치를 결정할 수 있습니다. 더욱 좋은 점은, 시간 간격 조정, 분석 필드 전환, 시각화 매개변수 실시간 변경 등 다양한 창의적인 트릭에 활용할 수 있다는 것입니다. 기본적으로, 대시보드는 진정한 상호 작용 경험을 제공하여 인사이트를 더 빠르고 쉽게 얻을 수 있습니다.
변수 제어 사용 사례
좋습니다, 변수 제어는 유용한 것 같은데요. 그렇다면 실제로 무엇을 할 수 있을까요? 대시보드 수준을 높이는 몇 가지 예는 다음과 같습니다.
선택한 시각화 필터링
일부 시각화는 필터링하고 다른 시각화는 그대로 두고 싶으신가요? 변수 제어를 사용하면 바로 그렇게 할 수 있습니다. 응답할 패널을 선택하고 시각화의 기반이 되는 ES|QL 쿼리에 연결하세요.

다른 시간 간격을 선택하세요
사용자에게 '5분', '1시간', '1일' 등 원하는 시간 버킷으로 전환할 수 있는 권한을 부여합니다. 미리 정의된 간격으로 변수 제어를 작성하고 시계열 쿼리에 연결합니다.

함수 변경
각 작업에 대해 여러 차트를 생성하는 대신, 대시보드 사용자가 최대값, 평균값, 다양한 백분위수 또는 다른 집계기를 선택할 수 있도록 합니다.

다양한 필드로 그룹화
조사 중에는 데이터를 다양한 차원으로 세분화해야 할 때가 있습니다. 변수 제어를 통해 여러 '그룹별' 필드를 정의하고, 대시보드 사용자들이 자신만의 인사이트를 발견하는 데 가장 적합한 필드를 선택할 수 있게 할 수 있습니다.

어떻게 만들 수 있나요?
변수 제어를 만드는 가장 쉽게 (그리고 아마도 가장 즐겁게 만드는) 방법은 시각화의 ES|QL 쿼리 편집기에서 직접 만드는 것입니다. 쿼리를 입력하기 시작하고 자동 완성 메뉴를 사용하면 Kibana가 제어 구성을 훌륭히 도와줍니다.
하지만 변수 자체에서 시작하고 싶다면 패널 추가 → 제어 → 변수 제어 로 이동하여 제어를 만든 후 시각화에 변수를 추가할 수도 있습니다.
예제 1: 다중 값 선택 기능을 갖춘 필터링 제어
1. ES|QL 쿼리로 구동되는 시각화를 선택하고 WHERE 절에서 '제어 생성'을 클릭합니다.

2. 자동으로 변수 생성 플라이아웃으로 리디렉션되며, '쿼리에서 값 가져오기' 유형이 선택되고 변수 이름이 이미 입력되어 있습니다. 시각화 쿼리에서 작동하려면 컨트롤의 이름이 항상 '?...'로 시작해야 합니다.
대시보드에서 선택된 시간 범위에 따라 필드의 값을 가져오고 업데이트하려면 보통 이런 쿼리가 필요합니다.
FROM <datasource_name>
| WHERE @timestamp <=?_tend and @timestamp >?_tstart
| STATS BY <field_name>
3. 제어를 저장하면 대시보드 상단에 제어가 나타나고, 시각화 쿼리가 변수 제어 이름으로 업데이트됩니다.

4. 제어에 다중 값 선택을 추가하려면 쿼리에서 MV_CONTAINS 함수를 사용하고 2단계에서 제어 생성 시 '다중 선택 허용'을 선택해야 합니다(9.3부터 사용 가능).

예제 2: 시간 간격 제어
시계열을 구축하는 경우, 날짜 히스토그램 간격에 대한 변수 제어를 쉽게 추가할 수 있습니다.
1. 시계열에 대한 ES|QL 쿼리를 작성할 때 '제어 생성'을 클릭합니다. 간격 변수를 만들 때는 BUCKET 대신 TBUCKET 을(를) 사용하는 것이 좋습니다. '1시간', '1일'과 같은 더 읽기 쉬운 간격을 허용하기 때문입니다. TBUCKET 에 곧 자동 옵션이 추가되어 시간 범위에 자동으로 적응할 수 있게 됩니다.

2. 드롭다운 메뉴에서 옵션을 채울 간격을 정의합니다.

3. 드롭다운 메뉴에서 다른 간격을 선택하고 시각화가 어떻게 변하는지 확인합니다.

예제 3: 함수용 변수
'정적 값' 유형의 제어를 사용하여 변수를 생성하고 드롭다운 값에 함수 이름을 추가합니다. 함수를 대체하려면 '??...'로 시작하는 변수 이름을 사용하는 것이 중요합니다.

2. ES|QL 쿼리에 변수 이름을 포함합니다.

예제 4: 필드를 위한 변수
'정적 값' 유형의 제어를 사용하여 원하는 필드 이름을 작성할 수 있습니다. 필드에서 작동하려면 '??...'로 시작하는 변수 이름을 사용하는 것이 중요합니다.

2. 시각화 쿼리에서 원하는 위치에 변수를 참조합니다.

Discover의 변수 제어
변수 컨트롤은 단순한 대시보드 기능이 아닙니다. Discover의 ES|QL 편집기에서도 직접 사용할 수 있습니다. Discover에서 더 빠른 데이터 탐색 경험을 위한 제어를 생성하고, 이를 대시보드로 가져올 수 있으며, 그 반대로도 가능합니다.

기술적 세부 사항
이제 변수 제어에는 쿼리에서 참조할 수 있는 부분과 사용해야 하는 명명 접두사(값의 경우 "?...", 필드 또는 함수의 경우 "??...")와 같은 몇 가지 규칙이 있다는 것을 눈치채셨을 것입니다. 변수는 단순히 클라이언트 측에서 스트링 치환만 하는 것이 아니기 때문입니다. 실제로는 쿼리 언어 자체에서 1급 시민으로 처리됩니다(ES|QL에서 매개변수로 알려짐).
이 디자인은 몇 가지 큰 장점을 제공합니다. 첫째, Kibana는 각 변수의 맥락을 이해할 수 있어, 자동으로 구성 설정을 생성하고 미리 채울 수 있습니다. 또한 훨씬 더 안전합니다. 언어가 변수 입력의 유효성을 엄격하게 검사하여 악의적인 주입을 방지하고, 이상이 있을 경우 우아하게 오류를 처리합니다. 또한 복잡한 유효성 검사 및 오류 처리를 클라이언트가 아닌 서버로 전환하여 성능과 안정성을 향상합니다. 성능에 대한 참고 사항을 말씀드리자면, 빠른 쿼리는 대시보드보다 먼저 로드되기 대문에 쿼리가 느리면 전체 대시보드 성능에 영향을 미칠 수 있으므로 빠른 쿼리를 포함하는 변수를 작성하는 것이 가장 좋습니다.
물론, 이 아키텍처에는 현재로서 몇 가지 제약이 있습니다. 변수는 아직 필터링에 '모두' 옵션을 지원하지 않으며, 현재 LIKE 또는 FROM (데이터 소스 전환용)과 같은 특정 연산자와 함께 사용할 수 없습니다. 좋은 소식은? 이러한 기능을 추가하기 위해 열심히 노력하고 있습니다.
제어의 미래가 가져올 변화
여기서 멈추지 않습니다! 주목하고 있는 개선 사항 일부는 다음과 같습니다.
✨ 대시보드 어디에나 컨트롤을 배치할 수 있는 기능
✨ 제어 체인 연결 - 한 제어의 출력이 다음 제어의 입력이 되는 것
✨ 변수에 대한 '모든' 선택과 같은 더 나은 선택 옵션
✨ 새로운 제어 유형(검색 유형 제어 및 데이터 소스용 변수)
✨ 그리고 많은 분들이 요청했던 삶의 질을 향상하는 추가 기능(예: 일반 제어 사전 필터링)
아이디어나 피드백이 있으시면 언제든지 알려주시기 바랍니다.




