ClickStack включает встроенную систему оповещений, которая позволяет командам в реальном времени выявлять проблемы и реагировать на них по журналам, метрикам и трассировкам.
Оповещения можно создавать прямо в интерфейсе HyperDX; они интегрируются с популярными системами уведомлений, такими как Slack и PagerDuty.
Система оповещений ClickStack работает со всеми вашими данными, помогая отслеживать состояние системы, выявлять ухудшение производительности и контролировать ключевые бизнес-события.
ClickStack поддерживает два взаимодополняющих способа создания оповещений: Оповещения на основе поиска и оповещения для графика на панели мониторинга. После создания оповещение привязывается либо к поиску, либо к диаграмме.
1. Оповещения на основе поиска
Оповещения на основе поиска позволяют отправлять уведомления на основе результатов сохраненного поиска. Они помогают выявлять случаи, когда определенные события или шаблоны возникают чаще (или реже), чем ожидалось.
Оповещение срабатывает, когда количество совпадающих результатов в пределах заданного временного окна либо превышает, либо опускается ниже указанного порога.
Чтобы создать оповещение на основе поиска:
Чтобы для поиска можно было создать оповещение, поиск должен быть сохранен. Вы можете либо создать оповещение для уже существующего сохраненного поиска, либо сохранить поиск в процессе создания оповещения. В примере ниже предполагается, что поиск не сохранен.
Откройте диалог создания оповещения
Начните с ввода поиска и нажмите кнопку Alerts в правом верхнем углу страницы Search.Создайте оповещение
В панели создания оповещения вы можете:
- Задать имя для сохраненного поиска, связанного с оповещением.
- Установить порог и указать, сколько раз он должен быть достигнут в течение заданного периода. Пороги также можно использовать как верхние или нижние границы. Период здесь также определяет, как часто будет срабатывать оповещение.
- Указать значение
grouped by. Это позволяет применять к поиску агрегацию, например по ServiceName, и тем самым запускать несколько оповещений на основе одного и того же поиска.
- Выбрать пункт назначения вебхука для уведомлений. Вы можете добавить новый вебхук прямо из этого представления. Подробности см. в разделе Добавление вебхука.
Перед сохранением ClickStack визуализирует условие порога, чтобы вы могли убедиться, что оно будет работать ожидаемым образом.
Обратите внимание, что к одному поиску можно добавить несколько оповещений. Если повторить описанный выше процесс, вы увидите текущие оповещения в виде вкладок в верхней части диалога редактирования оповещения, причем каждому оповещению будет присвоен номер.
2. Оповещения для графиков на панели мониторинга
Оповещения для графиков на панели мониторинга добавляют возможность настраивать оповещения прямо на графиках.
Вы можете создать оповещение на основе графика напрямую из сохранённой панели мониторинга, используя полноценные SQL-агрегации и функции ClickHouse для сложных вычислений.
Когда метрика пересекает заданный порог, оповещение срабатывает автоматически, позволяя отслеживать KPI, задержки и другие ключевые метрики во времени.
Чтобы создать оповещение для визуализации на панели мониторинга, панель мониторинга должна быть сохранена.
Чтобы добавить оповещение для графика на панели мониторинга:
Оповещения можно создавать в процессе создания графика, при добавлении графика на панель мониторинга, а также для уже существующих графиков. В примере ниже предполагается, что график уже существует на панели мониторинга.
Откройте диалог редактирования графика
Откройте меню настроек графика и нажмите кнопку оповещения. Откроется диалог редактирования графика.Добавьте оповещение
Выберите Add Alert.Задайте условия оповещения
Задайте условие (>=, >, <=, <, =, !=, <= x >=, > or <), порог, длительность и вебхук. Длительность здесь также определяет, как часто будет срабатывать оповещение.Вы можете добавить новый вебхук прямо из этого окна. Подробности см. в разделе Добавление вебхука.
При создании оповещения можно либо использовать существующий вебхук, либо создать новый. После создания вебхук будет доступен для повторного использования в других оповещениях.
Вебхук можно создать для разных типов сервисов, включая Slack и PagerDuty, а также для универсальных конечных точек.
Например, рассмотрим создание оповещения для графика ниже. Прежде чем указать вебхук, пользователь может выбрать Add New Webhook.
Откроется диалог создания вебхука, где можно создать новый вебхук:
Имя вебхука обязательно, а описание — необязательно. Остальные настройки, которые нужно заполнить, зависят от типа сервиса.
Обратите внимание, что для ClickStack с открытым исходным кодом и ClickStack Cloud доступны разные типы сервисов. См. Интеграции по типам сервисов.
Интеграции по типам сервисов
Оповещения ClickStack поддерживают интеграцию со следующими типами сервисов из коробки:
- Slack: отправка уведомлений напрямую в канал через вебхук или API.
- PagerDuty: маршрутизация инцидентов для дежурных команд через API PagerDuty.
- Вебхук: подключение оповещений к любой пользовательской системе или процессу через универсальный вебхук.
Интеграции только в ClickHouse CloudИнтеграции через Slack API и PagerDuty поддерживаются только в ClickHouse Cloud.
В зависимости от типа сервиса потребуется указать разные данные. А именно:
Slack (URL вебхука)
- URL вебхука. Например:
https://hooks.slack.com/services/<unique_path>. Подробности см. в документации Slack.
Slack (API)
API PagerDuty
Универсальный
- URL вебхука
- Заголовки вебхука (необязательно)
- Тело вебхука (необязательно). Сейчас в теле поддерживаются переменные шаблона
{{title}}, {{body}} и {{link}}.
Оповещениями можно централизованно управлять через панель оповещений в левой части интерфейса HyperDX.
Здесь вы можете увидеть все оповещения, созданные и запущенные в ClickStack.
Здесь также отображается история проверок оповещений. Оповещения проверяются через регулярные интервалы времени (они задаются параметрами period/duration при создании оповещения). Во время каждой проверки HyperDX обращается к вашим данным, чтобы определить, выполнено ли условие оповещения:
- Красная полоса: во время этой проверки пороговое условие было выполнено, и оповещение сработало (уведомление отправлено)
- Зелёная полоса: оповещение было проверено, но пороговое условие не выполнилось (уведомление не отправлено)
Каждая проверка выполняется независимо: оповещение анализирует данные в рамках соответствующего временного окна и срабатывает, только если в этот момент условие истинно.
В примере выше первое оповещение срабатывало при каждой проверке, что указывает на постоянную проблему. Второе оповещение показывает, что проблема устранена: сначала оно сработало дважды (красные полосы), а при последующих проверках пороговое условие уже не выполнялось (зелёные полосы).
При нажатии на оповещение вы переходите к диаграмме или поиску, к которым оно привязано.
Чтобы удалить оповещение, откройте диалог редактирования для соответствующего поиска или диаграммы, затем выберите Remove Alert.
В примере ниже кнопка Remove Alert удалит оповещение с диаграммы.
SQL-оповещения для графиков
SQL-оповещения для графиков позволяют задавать условия оповещений с помощью произвольного ClickHouse SQL. Это даёт полный контроль над фильтрацией, агрегацией и вычислениями — всё, что можно выразить в SQL, можно превратить в оповещение.
Поддерживаемые типы диаграмм
Оповещения на основе SQL поддерживаются для трех типов диаграмм:
| Тип диаграммы | Поведение |
|---|
| Line | Оповещение для временного ряда. Запрос должен возвращать строки, сгруппированные по временным бакетам. Каждый бакет оценивается независимо относительно порогового значения. |
| Stacked Bar | Оповещение для временного ряда. Поведение такое же, как у Line. |
| Number | Оповещение по одному значению. Запрос возвращает один числовой результат, который сравнивается с пороговым значением один раз при каждой проверке. |
Другие типы SQL-диаграмм (Table, Pie, Heatmap и т. д.) не поддерживают оповещения.
Чтобы создать оповещение для SQL-графика:
Создайте или откройте SQL-график на панели мониторинга
На сохранённой панели мониторинга либо создайте новый график в режиме SQL, либо откройте существующий SQL-график для редактирования.В качестве типа отображения выберите Line, Stacked Bar или Number.Добавьте оповещение
В разделе оповещений редактора графика выберите Add Alert. Настройте:
- Тип порога:
>= (больше или равно), > (больше), <= (меньше или равно), < (меньше), = (равно), != (не равно), <= x >= (между), или > or < (вне диапазона)
- Значение порога: Числовое значение для сравнения
- Interval: Как часто проверяется оповещение (1m, 5m, 15m, 30m, 1h, 6h, 12h или 1d). Это также задаёт временное окно для каждой проверки.
- Webhook: Канал уведомлений, который используется при срабатывании оповещения. См. Добавление вебхука.
Временной диапазон оповещенияОбычно запросы оповещения выполняются один раз за интервал. Однако если один или несколько интервалов были пропущены из-за ошибок или медленных запросов, при следующем выполнении будет использоваться временной диапазон, включающий пропущенные интервалы. В этом случае параметры интервала в запросе по-прежнему будут соответствовать настроенному периоду оповещения, а параметры временного диапазона будут отражать более длинный временной диапазон.
Сохраните панель мониторинга
Сохраните панель мониторинга, чтобы активировать оповещение. После этого оповещение начнёт выполняться с настроенным интервалом.
Как интерпретируются результаты запроса
Система оповещений анализирует столбцы, возвращённые вашим SQL-запросом, чтобы определить, что именно сравнивать с порогом.
- Столбец значения: В качестве значения оповещения используется последний числовой столбец в выражении
SELECT. Если запрос возвращает несколько числовых столбцов (например, count, avg_latency, p99_latency), с порогом сравнивается только последний из них (p99_latency).
- Столбец временной метки: Для графиков временных рядов (Line и Stacked Bar) система определяет столбец Date/DateTime в результатах как временной бакет (то есть ось x на графике временного ряда). Значение в столбце значения для каждого временного бакета оценивается относительно порога независимо, и если значение в любом временном бакете превышает настроенный порог, оповещение сработает.
- Столбцы группировки: Любые столбцы, которые не являются числовыми и не содержат временную метку (например,
ServiceName, Environment), рассматриваются как измерения группировки. Если группы присутствуют, каждая уникальная комбинация значений групп отслеживается отдельно, и для неё формируется отдельное оповещение. ClickStack отправит оповещение для каждой группы, значение которой превышает настроенный порог. Группы доступны только для графиков временных рядов.
Параметры запроса и макросы
SQL-запросы оповещений поддерживают параметры шаблона и макросы, которые автоматически заменяются при вычислении. Это те же параметры и макросы, которые доступны при создании SQL-диаграммы.
Обязательные и рекомендуемые параметры
Запросы, используемые для оповещений по линейным диаграммам или столбчатым диаграммам с накоплением, должны включать параметр interval или макрос ({intervalSeconds:Int64}, {intervalMilliseconds:Int64}, $__timeInterval(col) или $__timeInterval_ms(col)). Во время выполнения оповещения он будет заменён на период, настроенный для этого оповещения.
Запросы, используемые для оповещений, должны включать фильтр временного диапазона ({startDateMilliseconds:Int64} и {endDateMilliseconds:Int64} или $__timeFilter(col) и т. д.). Независимо от того, есть ли в запросе фильтр временного диапазона, запрос оповещения будет выполняться для периода, настроенного для этого оповещения. Если фильтр временного диапазона отсутствует, то при каждом выполнении запрос будет считывать весь временной диапазон, доступный в исходной таблице.
Временной диапазон оповещенияОбычно запросы оповещений выполняются один раз за интервал. Однако если один или несколько интервалов были пропущены из-за ошибок или медленных запросов, при следующем выполнении будет использоваться временной диапазон, включающий пропущенные интервалы. В этом случае параметры interval в запросе по-прежнему будут установлены в соответствии с периодом, настроенным для оповещения, а параметры временного диапазона будут отражать более длинный временной диапазон.
Примеры запросов для оповещений
Доля ошибок по сервисам (временной ряд)
Создайте оповещение, если у какого-либо сервиса доля ошибок превышает 5%, при этом за период оповещения должно быть не менее 10 запросов, чтобы избежать лишних оповещений для сервисов с низким трафиком.
WITH error_rates AS (
SELECT
$__timeInterval(Timestamp) as ts,
ServiceName,
countIf (SpanKind = 'Server') as request_count,
countIf (
SpanKind = 'Server'
and StatusCode = 'Error'
) as error_count,
error_count / request_count * 100 AS error_percent
FROM $__sourceTable
WHERE $__timeFilter(Timestamp)
GROUP BY ts, ServiceName
)
SELECT ts, ServiceName, error_percent
FROM error_rates
WHERE request_count > 10
Тип отображения: Line или Stacked Bar
Порог: >= 5 (срабатывает, когда уровень ошибок достигает 5%)
В этом запросе ServiceName — нечисловой столбец и не временная метка, поэтому каждый сервис отслеживается как отдельная группа оповещения. Оповещение срабатывает независимо для каждого сервиса.
Обнаружение аномалий с помощью отстающего среднего (временной ряд)
Настройте оповещение так, чтобы оно срабатывало, если число ошибок превышает скользящее среднее более чем на два стандартных отклонения. Это помогает выявлять всплески относительно недавнего базового уровня, а не по фиксированному порогу.
WITH buckets AS (
SELECT
$__timeInterval(Timestamp) AS ts,
count() AS bucket_count
FROM $__sourceTable
WHERE TimestampTime >= fromUnixTimestamp64Milli({startDateMilliseconds:Int64})
- toIntervalSecond($__interval_s * 30) -- Получить 30 интервалов назад
AND TimestampTime < fromUnixTimestamp64Milli({endDateMilliseconds:Int64})
AND SeverityText = 'error'
GROUP BY ts
ORDER BY ts
WITH FILL
FROM toDateTime(fromUnixTimestamp64Milli({startDateMilliseconds:Int64}))
TO toDateTime(fromUnixTimestamp64Milli({endDateMilliseconds:Int64}))
STEP toIntervalSecond($__interval_s)
),
anomaly_detection AS (
SELECT
ts,
bucket_count,
avg(bucket_count) OVER (
ORDER BY ts ROWS BETWEEN 30 PRECEDING AND 1 PRECEDING
) AS previous_30_avg,
stddevPop(bucket_count) OVER (
ORDER BY ts ROWS BETWEEN 30 PRECEDING AND 1 PRECEDING
) AS previous_30_stddev,
greatest(
bucket_count - (previous_30_avg + 2 * previous_30_stddev), 0
) AS excess_error_count
FROM buckets
)
SELECT ts, excess_error_count
FROM anomaly_detection
WHERE ts >= fromUnixTimestamp64Milli({startDateMilliseconds:Int64})
AND ts < fromUnixTimestamp64Milli({endDateMilliseconds:Int64})
Тип отображения: Линейный график
Порог: > 0 (срабатывает, когда число ошибок превышает скользящий базовый уровень)
Обратите внимание: запрос выбирает 30 интервалов до начала диапазона дат, чтобы инициализировать расчёты в скользящем окне, а затем фильтрует итоговый вывод, оставляя только период оценки.
Распространённые сценарии оповещений
Ниже приведены несколько распространённых сценариев оповещений, для которых можно использовать HyperDX:
Ошибки: Мы рекомендуем настроить оповещения для сохранённых поисков по умолчанию
All Error Events и HTTP Status >= 400, чтобы получать уведомления, когда
число ошибок становится слишком большим.
Медленные операции: Вы также можете настроить поиск медленных операций (например,
duration:>5000), а затем создать оповещение, если
таких медленных операций становится слишком много.
Пользовательские события: Вы также можете настроить оповещения для команд,
работающих с клиентами, чтобы они получали уведомления, когда регистрируются новые пользователи
или выполняется критически важное действие пользователя. Последнее изменение 10 июня 2026 г.