Пользователи, по крайней мере, получают доступ к 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 – Ограничить строки
Ограничения
- Тайм-аут запроса: максимальное время выполнения 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)
21 декабря 2025 г.
Читайте также

