Визуализируйте данные из Azure Data Explorer в Kibana с помощью коннектора с открытым исходным кодом K2Bridge

K2Bridge (мост Кибана-Кусто) позволяет использовать Azure Data Explorer в качестве источника данных и визуализировать эти данные в Kibana. K2Bridge — это контейнерное приложение с открытым исходным кодом. Он действует как прокси-сервер между экземпляром Kibana и кластером Azure Data Explorer. В этой статье описывается, как использовать K2Bridge для создания этого подключения.

K2Bridge переводит запросы Kibana на язык запросов Kusto (KQL) и отправляет результаты Azure Data Explorer обратно в Kibana.

Подключение Kibana к Azure Data Explorer через K2Bridge.

K2Bridge поддерживает вкладку Обнаружить Kibana, где вы можете:

  • искать и исследовать данные;
  • отфильтровать результаты;
  • добавить или удалить поля в таблице результатов;
  • просматривать содержимое записи;
  • сохранять поисковые запросы и делиться ими.

На следующем изображении показан экземпляр Kibana, связанный с Azure Data Explorer с помощью K2Bridge. Пользовательский опыт в Kibana не изменился.

Страница Kibana привязана к Azure Data Explorer.

Предварительные условия

Прежде чем вы сможете визуализировать данные из Azure Data Explorer в Kibana, подготовьте следующее.

Запустите K2Bridge в службе Azure Kubernetes (AKS)

По умолчанию диаграмма Helm K2Bridge ссылается на общедоступный образ, расположенный в Microsoft Container Registry (MCR). MCR не требует никаких учетных данных.

  1. Загрузите необходимые карты Helm.

  2. Добавьте в Helm зависимость Elasticsearch. Зависимость требуется, потому что K2Bridge использует небольшой внутренний экземпляр Elasticsearch. Экземпляр обслуживает запросы, связанные с метаданными, такие как запросы шаблонов индекса и сохраненные запросы. Этот внутренний экземпляр не сохраняет бизнес-данные. Вы можете рассматривать экземпляр как деталь реализации.

    1. Чтобы добавить зависимость Elasticsearch в Helm, выполните следующие команды:

      helm repo add elastic https://helm.elastic.co
      helm repo update
      
    2. Чтобы получить диаграмму K2Bridge из каталога диаграмм репозитория GitHub:

      1. Клонируйте репозиторий с GitHub.

      2. Перейдите в каталог корневого репозитория K2Bridges.

      3. Выполните следующую команду:

        helm dependency update charts/k2bridge
        
  3. Разверните K2Bridge.

    1. Задайте для переменных правильные значения для вашей среды.

      ADX_URL=[YOUR_ADX_CLUSTER_URL] #For example, https://mycluster.westeurope.kusto.windows.net
      ADX_DATABASE=[YOUR_ADX_DATABASE_NAME]
      ADX_CLIENT_ID=[SERVICE_PRINCIPAL_CLIENT_ID]
      ADX_CLIENT_SECRET=[SERVICE_PRINCIPAL_CLIENT_SECRET]
      ADX_TENANT_ID=[SERVICE_PRINCIPAL_TENANT_ID]
      
    2. При желании включите телеметрию Application Insights. Если вы впервые используете Application Insights, создайте ресурс Application Insights. Скопируйте ключ инструментария в переменную.

      APPLICATION_INSIGHTS_KEY=[INSTRUMENTATION_KEY]
      COLLECT_TELEMETRY=true
      
    3. Установите диаграмму K2Bridge.

      helm install k2bridge charts/k2bridge -n k2bridge --set image.repository=$REPOSITORY_NAME/$CONTAINER_NAME --set settings.adxClusterUrl="$ADX_URL" --set settings.adxDefaultDatabaseName="$ADX_DATABASE" --set settings.aadClientId="$ADX_CLIENT_ID" --set settings.aadClientSecret="$ADX_CLIENT_SECRET" --set settings.aadTenantId="$ADX_TENANT_ID" [--set image.tag=latest] [--set privateRegistry="$IMAGE_PULL_SECRET_NAME"] [--set settings.collectTelemetry=$COLLECT_TELEMETRY]
      

      В разделе Конфигурация вы можете найти полный набор параметров конфигурации.

    4. Вывод предыдущей команды предлагает следующую команду Helm для развертывания Kibana. При желании запустите эту команду:

      helm install kibana elastic/kibana -n k2bridge --set image=docker.elastic.co/kibana/kibana-oss --set imageTag=6.8.5 --set elasticsearchHosts=http://k2bridge:8080
      
    5. Используйте переадресацию портов для доступа к Kibana на локальном хосте.

      kubectl port-forward service/kibana-kibana 5601 --namespace k2bridge
      
    6. Подключитесь к Kibana, перейдя в http://127.0.0.1:5601.

    7. Раскройте Kibana для пользователей. Для этого есть несколько способов. Используемый вами метод во многом зависит от вашего варианта использования.

      Например, вы можете предоставить службу как службу балансировщика нагрузки. Для этого добавьте параметр --set service.type=LoadBalancer в предыдущую команду установки Kibana Helm.

      Затем запустите эту команду:

      kubectl get service -w -n k2bridge
      

      Выходные данные должны выглядеть так:

      NAME            TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
      kibana-kibana   LoadBalancer   xx.xx.xx.xx    <pending>     5601:30128/TCP   4m24s
      

      Затем вы можете использовать появившееся сгенерированное значение EXTERNAL-IP. Используйте его для доступа к Kibana, открыв браузер и перейдя на <EXTERNAL-IP>: 5601.

  4. Настройте шаблоны индекса для доступа к вашим данным.

    В новом экземпляре Kibana

    1. Откройте Kibana.
    2. Перейдите в раздел Управление.
    3. Выберите Шаблоны индекса.
    4. Создайте шаблон индекса. Имя индекса должно точно соответствовать имени таблицы или имени функции без звездочки (*). Вы можете скопировать соответствующую строку из списка.

Примечание

Чтобы запустить K2Bridge на других поставщиках Kubernetes, измените значение Elasticsearch storageClassName в values.yaml, чтобы оно соответствовало предложенному поставщиком.

Визуализируйте данные

Когда Azure Data Explorer настроен в качестве источника данных для Kibana, вы можете использовать Kibana для исследования данных.

  1. В Kibana в крайнем левом меню выберите вкладку Обнаружить.

  2. В крайнем левом раскрывающемся списке выберите шаблон индекса. Шаблон определяет источник данных, который вы хотите изучить. В этом случае шаблон индекса — это таблица Azure Data Explorer.

    Выбор шаблона индекса.

  3. Если в ваших данных есть поле временного фильтра, вы можете указать временной диапазон. В правом верхнем углу страницы Обнаружить выберите временной фильтр. По умолчанию на странице отображаются данные за последние 15 минут.

    Выбор временного фильтра.

  4. В таблице результатов показаны первые 500 записей. Вы можете развернуть документ, чтобы изучить данные его поля в формате JSON или таблицы.

    Расширенная запись.

  5. По умолчанию таблица результатов включает столбец _source. Он также включает столбец Время, если поле времени существует. Вы можете добавить определенные столбцы в таблицу результатов, выбрав добавить рядом с именем поля в крайней левой панели.

    Определенные столбцы с выделенной кнопкой добавления.

  6. В строке запроса вы можете искать данные по:

    • Ввод поискового запроса.
    • Использование синтаксиса запросов Lucene. Пример.
      • Выполните поиск по запросу «ошибка», чтобы найти все записи, содержащие это значение.
      • Выполните поиск по запросу «состояние: 200», чтобы получить все записи со значением статуса 200.
    • Использование логических операторов AND, OR, и NOT.
    • Использование подстановочных знаков звездочки (*) и вопросительного знака (?). Например, запрос «город назначения: L*» соответствует записям, в которых значение города назначения начинается с «L» или «l». (K2Bridge не чувствителен к регистру.)

    Выполнение запроса

    Совет

    В разделе Поиск можно найти дополнительные правила и логику поиска.

  7. Чтобы отфильтровать результаты поиска, используйте список полей на самой правой панели страницы. В списке полей вы можете увидеть следующее.

    • Пять лучших значений для поля.
    • Количество записей, содержащих поле.
    • Процент записей, содержащих каждое значение.

    Совет

    Используйте увеличительное стекло, чтобы найти все записи с определенным значением.

    Список полей с выделенной лупой.

    Вы также можете использовать лупу для фильтрации результатов и просмотра представления в формате таблицы результатов для каждой записи в таблице результатов.

    Список таблиц с выделенной лупой.

  8. Для поиска выберите Сохранить или Поделиться.

    Выделенные кнопки для сохранения или отправки результатов поиска.