AI 기반 대시보드: 비전에서 Kibana까지

이미지를 처리하기 위해 LLM을 사용해 대시보드를 생성하고 이를 Kibana 대시보드로 전환합니다.

솔루션 하나로 데이터를 관찰하고, 보호하고, 검색하세요. 애플리케이션 모니터링에서 위협 탐지에 이르기까지, Kibana는 중요한 사용 사례 전반에서 사용할 수 있는 다용도 플랫폼입니다. 지금 14일 무료 체험판을 시작하세요.

Kibana Lens를 사용하면 대시보드를 매우 간단하게 끌어서 놓을 수 있지만, 수십 개의 패널이 필요한 경우에는 클릭 수가 늘어납니다. 대시보드를 스케치하고 스크린샷을 찍어 LLM이 전체 프로세스를 완료하도록 할 수 있다면 어떨까요?

이 글에서는 이를 실현하는 방법에 대해 설명합니다. 대시보드의 이미지를 가져와서 매핑을 분석한 다음 Kibana를 전혀 건드리지 않고도 대시보드를 생성하는 애플리케이션을 만들어 보겠습니다!

단계:

  1. 배경 & 애플리케이션 워크플로
  2. 데이터 준비
  3. LLM 구성
  4. 애플리케이션 기능

배경 & 애플리케이션 워크플로

가장 먼저 떠오른 생각은 LLM이 전체 NDJSON 형식의 Kibana 저장 개체를 생성한 다음 Kibana로 가져오도록 하는 것이었습니다.

몇 가지 모델을 사용해 보았습니다:

  • Gemini 2.5 프로
  • GPT o3 / o4-미니 하이 / 4.1
  • 클로드 4 소네트
  • Grok 3
  • 딥씽크(딥씽크 R1)

그리고 프롬프트는 간단하게 시작했습니다:

각 비주얼리제이션을 작성하는 방법에 대한 몇 가지 예시와 자세한 설명을 살펴봤지만 운이 없었습니다. 이 실험에 관심이 있으시다면 여기에서 자세한 내용을 확인할 수 있습니다.

이 접근 방식을 사용한 결과, LLM에서 생성된 파일을 Kibana에 업로드하려고 할 때 이러한 메시지가 표시되었습니다:

이는 생성된 JSON이 유효하지 않거나 형식이 잘못되었음을 의미합니다. 가장 흔한 문제는 불완전한 NDJSON을 생성하거나, 매개변수를 착각하거나, 아무리 강제 적용을 시도해도 NDJSON 대신 일반 JSON을 반환하는 LLM이었습니다.

검색 템플릿이 LLM 프리스타일보다 더 효과적이었다는 이 글에서 영감을 받아 전체 NDJSON 파일을 생성하도록 요청하는 대신 템플릿을 LLM에 제공하고 코드에서 LLM이 제공한 매개변수를 사용하여 적절한 시각화를 만들기로 결정했습니다. 이 접근 방식은 실망스럽지 않았고 예측 가능하고 확장 가능하며 이제 코드가 무거운 작업을 수행하므로 LLM이 아닌 코드가 작업을 수행하게 되었습니다.

애플리케이션 워크플로우는 다음과 같습니다:

간단하게 설명하기 위해 일부 코드는 생략하지만, 전체 애플리케이션의 작업 코드는 노트북에서찾을 수 있습니다.

필수 구성 요소

개발을 시작하기 전에 다음이 필요합니다:

  1. Python 3.8 이상
  2. Venv Python 환경
  3. 엔드포인트 및 API 키와 함께 실행 중인 Elasticsearch 인스턴스
  4. 환경 변수 이름 OPENAI_API_KEY에 저장된 OpenAI API 키입니다:

데이터 준비

데이터의 경우, 간단하게 유지하면서 Elastic 샘플 웹 로그를 사용하겠습니다. 여기에서 해당 데이터를 클러스터로 가져오는 방법을 알아보세요.

각 문서에는 애플리케이션에 요청을 보낸 호스트에 대한 세부 정보와 함께 요청 자체 및 응답 상태에 대한 정보가 포함되어 있습니다. 아래는 문서 예시입니다:

이제 방금 로드한 인덱스( kibana_sample_data_logs)의 매핑을 가져와 보겠습니다:

나중에 로드할 이미지와 함께 매핑을 전달하겠습니다.

LLM 구성

구조화된 출력을 사용하여 이미지를 입력하고 함수에 전달해야 하는 정보가 포함된 JSON을 수신하여 JSON 객체를 생성하도록 LLM을 구성해 보겠습니다.

종속성을 설치합니다:

Elasticsearch는 인덱스 매핑을 검색하는 데 도움이 됩니다. Pydantic을 사용하면 파이썬으로 스키마를 정의한 다음 LLM에 따르도록 요청할 수 있으며, LangChain은 LLM과 AI 도구를 더 쉽게 호출할 수 있도록 도와주는 프레임워크입니다.

LLM에서 원하는 출력을 정의하기 위해 Pydantic 스키마를 생성합니다. 이미지에서 알아야 할 것은 차트 유형, 필드, 비주얼리제이션 제목 및 대시보드 제목입니다:

이미지 입력은 제가 방금 그린 대시보드를 보내드리겠습니다:

이제 LLM 모델 호출과 이미지 로딩을 선언합니다. 이 함수는 생성하려는 대시보드의 이미지와 Elasticsearch 인덱스의 매핑을 수신합니다.

with_structured_output 을 사용하면 Pydantic Dashboard 스키마를 LLM이 생성할 응답 객체로 사용할 수 있습니다. Pydantic을 사용하면 유효성 검사를 통해 데이터 모델을 정의할 수 있으므로 LLM 출력이 예상 구조와 일치하는지 확인할 수 있습니다.

이미지를 base64로 변환하여 입력으로 보내려면 온라인 변환기를 사용하거나 코드로 변환할 수 있습니다.

LLM에는 이미 Kibana 대시보드에 대한 컨텍스트가 있으므로 프롬프트에서 모든 것을 설명할 필요는 없으며, Elasticsearch 및 Kibana와 함께 작동한다는 것을 잊지 않도록 하기 위한 몇 가지 세부 사항만 설명하면 됩니다.

프롬프트를 자세히 살펴 보겠습니다:

섹션이유
귀하는 Kibana 버전 9.0.0의 이미지에서 Kibana 대시보드를 분석하는 전문가입니다.이를 강화하는 것이 바로 Elasticsearch이며, Elasticsearch 버전은 LLM이 오래되거나 유효하지 않은 매개변수를 착각할 가능성을 줄여줍니다.
대시보드 이미지와 Elasticsearch 인덱스 매핑이 제공됩니다.LLM의 잘못된 해석을 피하기 위해 이미지가 대시보드에 관한 것이라고 설명합니다.
다음은 대시보드의 기반이 되는 인덱스의 인덱스 매핑입니다. 이를 사용하여 데이터와 사용 가능한 필드를 이해하는 데 도움이 됩니다. 인덱스 매핑: {index_mappings}LLM이 유효한 필드를 동적으로 선택할 수 있도록 매핑을 제공하는 것이 중요합니다. 그렇지 않으면 여기에 매핑을 하드 코딩하여 너무 딱딱하게 만들거나 올바른 필드 이름이 포함된 이미지에 의존할 수 있는데, 이는 신뢰할 수 없습니다.
이미지에 표시되는 내용에 따라 각 시각화와 관련된 필드만 포함합니다.가끔 이미지와 관련이 없는 필드를 추가하려고 시도하기 때문에 이 기능을 추가해야 했습니다.

그러면 표시할 시각화 배열이 있는 객체가 반환됩니다:

LLM 응답 처리

에서 샘플 2x2 패널 대시보드를 만든 다음 대시보드 가져오기 API를 사용하여 JSON으로 내보낸 다음, 패널을 시각화 템플릿(파이, 막대, 메트릭)으로 저장하여 일부 매개 변수를 교체하여 질문에 따라 다른 필드로 새로운 시각화를 만들 수 있습니다.

템플릿 JSON 파일은 여기에서 확인할 수 있습니다. 나중에 대체할 개체 값을 {variable_name}로 변경한 방법에 유의하세요.

LLM이 제공한 정보를 바탕으로 어떤 템플릿을 사용하고 어떤 값을 대체할지 결정할 수 있습니다.

fill_template_with_analysis 는 시각화의 JSON 템플릿, 제목, 필드, 그리드에 있는 시각화의 좌표 등 단일 패널에 대한 매개변수를 받습니다.

그런 다음 템플릿의 값을 바꾸고 최종 JSON 시각화를 반환합니다.

간단하게 하기 위해 LLM이 생성하기로 결정한 패널에 정적 좌표를 할당하고 위 이미지와 같은 2x2 그리드 대시보드를 생성합니다.

LLM에서 결정한 시각화 유형에 따라 JSON 파일 템플릿을 선택하고 fill_template_with_analysis 을 사용하여 관련 정보를 바꾼 다음 새 패널을 나중에 대시보드를 만드는 데 사용할 배열에 추가합니다.

대시보드가 준비되면, 대시보드 만들기 API를 사용해 새 JSON 파일을 Kibana로 푸시하여 대시보드를 생성합니다:

스크립트를 실행하고 대시보드를 생성하려면 콘솔에서 다음 명령을 실행합니다:

최종 결과는 다음과 같습니다:

결론

LLM은 텍스트를 코드로 변환하거나 이미지를 코드로 변환할 때 강력한 시각적 기능을 발휘합니다. 또한 대시보드 API를 사용하면 JSON 파일을 대시보드로 전환할 수 있으며, LLM과 몇 가지 코드를 사용하면 이미지를 Kibana 대시보드로 전환할 수 있습니다.

다음 단계는 다양한 그리드 설정, 대시보드 크기 및 위치를 사용하여 대시보드 시각적 요소의 유연성을 개선하는 것입니다. 또한 더 복잡한 시각화 및 시각화 유형에 대한 지원을 제공하면 이 애플리케이션에 유용한 추가 기능이 될 것입니다.

관련 콘텐츠

최첨단 검색 환경을 구축할 준비가 되셨나요?

충분히 고급화된 검색은 한 사람의 노력만으로는 달성할 수 없습니다. Elasticsearch는 여러분과 마찬가지로 검색에 대한 열정을 가진 데이터 과학자, ML 운영팀, 엔지니어 등 많은 사람들이 지원합니다. 서로 연결하고 협력하여 원하는 결과를 얻을 수 있는 마법 같은 검색 환경을 구축해 보세요.

직접 사용해 보세요