솔루션 하나로 데이터를 관찰하고, 보호하고, 검색하세요. 애플리케이션 모니터링에서 위협 탐지에 이르기까지, Kibana는 중요한 사용 사례 전반에서 사용할 수 있는 다용도 플랫폼입니다. 지금 14일 무료 체험판을 시작하세요.
이제 버전 8.18과 모든 9.x 시리즈부터 Kibana 대시보드에서 변수 제어를 사용할 수 있게 되어 기쁘게 생각합니다! 이 기능은 대시보드 사용자들 사이에서 가장 꾸준히 요청받은 추가 기능 중 하나였으며, 드디어 출시되었습니다 🎉 지난 몇 달간 변수 제어를 계속 확장하고 개선하였으며, 이제는 이를 위한 전용 블로그 포스팅을 만들게 되었습니다.
변수 제어란 무엇인가요?
이전에 Kibana 대시보드를 사용해 본 적이 있다면, 아마도 클래식 대시보드 제어를 알고 계실 것입니다. 데이터에서 값을 표시하여 몇 번의 클릭만으로 항목을 필터링할 수 있는 편리한 드롭다운입니다.

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

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

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

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

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

2. 자동으로 변수 생성 플라이아웃으로 리디렉션되며, '쿼리에서 값 가져오기' 유형이 선택되고 변수 이름이 이미 입력되어 있습니다. 시각화 쿼리에서 작동하려면 컨트롤의 이름이 항상 '?...'로 시작해야 합니다.
대시보드에서 선택된 시간 범위에 따라 필드의 값을 가져오고 업데이트하려면 보통 이런 쿼리가 필요합니다.

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 (데이터 소스 전환용)과 같은 특정 연산자와 함께 사용할 수 없습니다. 좋은 소식은? 이러한 기능을 추가하기 위해 열심히 노력하고 있습니다.
제어의 미래가 가져올 변화
여기서 멈추지 않습니다! 주목하고 있는 개선 사항 일부는 다음과 같습니다.
✨ 대시보드 어디에나 컨트롤을 배치할 수 있는 기능
✨ 제어 체인 연결 - 한 제어의 출력이 다음 제어의 입력이 되는 것
✨ 변수에 대한 '모든' 선택과 같은 더 나은 선택 옵션
✨ 새로운 제어 유형(검색 유형 제어 및 데이터 소스용 변수)
✨ 그리고 많은 분들이 요청했던 삶의 질을 향상하는 추가 기능(예: 일반 제어 사전 필터링)
아이디어나 피드백이 있으시면 언제든지 알려주시기 바랍니다.



