Устранение неполадок с помощью Azure Application Insights с использованием KQL

Пользователи, по крайней мере, получают доступ к Azure Application Insights даже в пределах минимального уровня доступа, если вы запрашиваете доступ к порталам управления DXP по адресу https://world.optimizely.com/service-request-forms/access-to-dxp-portal/. Azure Application Insights — это мощная служба мониторинга производительности приложений (APM), которая помогает отслеживать работоспособность, производительность и использование ваших приложений в режиме реального времени. Он обеспечивает сквозное наблюдение посредством телеметрии, такой как запросы, зависимости, исключения, трассировки и пользовательские события, что позволяет разработчикам быстро обнаруживать аномалии, диагностировать проблемы и понимать поведение пользователей. Благодаря встроенным панелям мониторинга, средствам аналитики и полной интеграции с Azure Monitor он обеспечивает глубокую аналитику, повышающую надежность, оптимизирующую производительность и улучшающую общее взаимодействие с пользователем. Будут моменты, когда предоставленной информационной панели будет недостаточно. Разработчику придется выполнять запросы к телеметрическим данным, а язык запросов Kusto (KQL) — это механизм, который разблокирует эти данные. KQL дает вам возможность фрагментировать и анализировать данные телеметрии в любом масштабе.

Основы KQL

Application Insights хранит данные телеметрии в таких таблицах, как:

  • запросы – Входящие HTTP-запросы – имя, URL, продолжительность, код результата, успех.
  • зависимости — Внешние вызовы (БД, API) — тип, цель, имя, продолжительность, успех
  • исключения — исключения приложения — тип, сообщение, externalMessage, идентификатор проблемы.
  • трассировки — пользовательские сообщения журнала — сообщение, уровень серьезности.
  • customMetrics — пользовательская производительность — имя метрики, значение.
  • pageViews – просмотры страниц на стороне клиента – имя, URL-адрес, продолжительность.
  • следы
  • доступностьРезультаты
  • customEvents

Общие операторы

  • где — фильтровать строки
  • проект – выберите определенные столбцы
  • суммировать – Агрегации (количество, среднее, процентили)
  • расширить – Создать вычисляемые поля
  • join — объединить таблицы.
  • Упорядочить по – Сортировать результаты
  • take – Ограничить строки
Read more:  Блог ВТО | Блог данных

Ограничения

  • Тайм-аут запроса: максимальное время выполнения 3 минуты. Для больших наборов данных может потребоваться выборка или фильтрация по времени.
  • Размер набора результатов: возвращается максимум 500 000 строк.
  • Хранение данных: 90 дней для подробных данных (можно настроить до 730 дней). Для долгосрочного хранения требуется экспорт в Log Analytics или хранилище.
  • Параллельные запросы: регулирование при больших нагрузках
  • Выборка. Application Insights может применять адаптивную выборку. Это может повлиять на подсчет, если вы не используете itemCount.
  • Без изменения данных: KQL доступен только для чтения. Вы не можете обновить или удалить телеметрию.
  • Ограничения на объединение: объединение больших таблиц может быть медленным или усеченным.
  • Сложность запроса: некоторые сложные операции (например, рекурсивная логика) не поддерживаются.

Лучшие практики мониторинга и устранения неполадок

Use Time Filters Early
requests
| where timestamp > ago(1h)
This improves performance dramatically.

Project Only What You Need
| project name, duration
Reduces memory and speeds up queries.

Use Summaries for High-Volume Data
Instead of returning thousands of rows:
| summarize count() by name

Use itemCount When Sampling Is Enabled
| summarize total = sum(itemCount)

Correlate Telemetry Using Operation Id
requests
| join traces on operation_Id

Ссылки KQL для дальнейшего использования

// Basic query pattern
TableName
| where Timestamp > ago(1d)  // Filtering
| where Operation_Name == "HomeController.Index"
| project Column1, Column2    // Selecting columns
| summarize Count = count() by Column1  // Aggregation
| order by Count desc        // Sorting
| limit 10                   // Limiting results

Filtering with where:
requests
| where timestamp > ago(24h)
| where success == false
| where duration > 1000  // Duration in milliseconds

Selecting columns with project:
requests
| project timestamp, name, url, duration, resultCode
| take 100

Aggregation with summarize:
requests
| summarize 
    AvgDuration = avg(duration),
    RequestCount = count(),
    FailedCount = countif(success == false)
    by name, bin(timestamp, 1h)

Top 5 Slowest Requests:
requests
| where timestamp > ago(7d)
| top 5 by duration desc
| project timestamp, name, duration, url, resultCode

Failure Rate Trend:
requests
| where timestamp > ago(30d)
| summarize 
    TotalRequests = count(),
    FailedRequests = countif(success == false)
    by bin(timestamp, 1d)
| extend FailureRate = FailedRequests * 100.0 / TotalRequests
| order by timestamp asc
| render timechart

Exception Analysis:
exceptions
| where timestamp > ago(1d)
| summarize Count = count() by type, innermostMessage
| order by Count desc
| take 20

Alert on Patterns, Not Single Events
Use:
avg(duration)
percentile(duration, 95)
count()

Explore Requests
requests
| summarize count(), avg(duration) by name

Find Failing Dependencies
dependencies
| where success == false
| summarize count() by target, type

Trace-Level Debugging
traces
| where severityLevel >= 3
| order by timestamp desc

Exception Analysis
exceptions
| summarize count() by type, innermostMessage

User Behavior
customEvents
| summarize count() by name

End-to-End Transaction Diagnostics
requests
| where operation_Id == ""

Using parse to Extract Data
traces
| parse message with "User:" userId ", Action:" action

Using bin() for Time Bucketing
requests
| summarize count() by bin(timestamp, 5m)

Using join for Correlation
requests
| join kind=leftouter dependencies on operation_Id

Using make-series for Time-Series Analysis
requests
| make-series count() on timestamp in range(ago(1d), now(), 1h)

Read more:  Решения Aaron Boone's Game 1 Yankees Решения, загруженные с помощью диких карт

21 декабря 2025 г.

Читайте также

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.