timechart
Описание
Выполняет поиск и генерацию массива данных, распределенных по временной шкале.
Синтаксис
timechart [<timefield>] [<limit>] [<span>] [<bins>] [<useother>] <functions-expression> ["," <functions-expression>] [<by_expression>]
Обязательные аргументы
functions-expression Обязательно использование хотя бы одной из функций:
| Параметр | Синтаксис | Описание |
|---|---|---|
count | count | count(<field>) | Вычисляет количество событий, содержащих поле. Если поле не указано, рассчитывает общее количество событий. |
avg | avg(<field>) | Вычисляет среднее значение по заданному полю. |
dc | dc(<field>) | Вычисляет количество уникальных значений в заданном поле. |
max | max(<field>) | Вычисляет максимальное значение по заданному полю. |
min | min(<field>) | Вычисляет минимальное значение по заданному полю. |
sum | sum(<field>) | Вычисляет сумму значений по заданному полю. |
perc | perc(<field>, <percent>) | Вычисляет персентиль по заданному полю и проценту. |
median | median(<field>) | Вычисляет медиану по заданному полю. |
Опциональные аргументы
| Параметр | Синтаксис | По умолчанию | Описание |
|---|---|---|---|
span | span=<span> | см. Предопределенные значения span | Определяет интервал для распределения отрезков. |
timefield | timefield=<field> | @timestamp | Имя поля в котором хранится временная метка. |
bins | bins=<int> | 100 | Максимальное количество отрезков для расчета. |
limit | limit=<int> | 10 | Максимальное количество уникальных значений by_field, которые будут использоваться в названии столбцов результата. Остальные значения объединятся в поле OTHER. |
useother | useother=<boolean> | true | При значении false параметр limit не учитывается. |
by_expression | by <field> | Имя поля для группировки значений. |
Допустим следующий формат временных параметров: (+|-)<int>(s|m|h|d|w|month):
- s/sec/secs/second/seconds - секунды
- m/min/mins/minute/minutes - минуты
- h/hr/hrs/hour/hours - часы
- d/day/days - дни
- w/week/weeks - недели
- mon/month/months - месяцы
Если не указан параметр span для временного поля, будут действовать предопределенные параметры.
Перечень предопределенных параметров:
| Временной интервал | span |
|---|---|
| последние 15 минут | 10 секунд |
| последние 60 минут | 1 минута |
| последние 4 часа | 5 минут |
| последние 24 часа | 30 минут |
| последние 7 дней | 1 день |
| последние 30 дней | 1 день |
| последний год | 1 месяц |
Примеры запросов
Пример 1
Расчет среднего количества сообщений для каждого пользователя по часовым интервалам:
... | timechart limit=5 span=1h avg(msgNums) by user
Пример 2
В данном примере для каждого уникального значения поля event.outcome производится агрегация данных за интервал времени в 15 минут с подсчетом количества событий. Временной диапазон запроса делится на 15 интервалов.
... | timechart bins=15 span=15m count by event.outcome
Для входных данных, представленных ниже в качестве примера, строится столбчатая диаграмма c группировкой серий:
| username | request | path | status | event.outcome |
|---|---|---|---|---|
| Ivanov | GET | /veil | 200 | success |
| Petrov | GET | /cherry | 200 | success |
| Ivanov | POST | /fuel | 403 | failure |
| Andreev | GET | /quilt | 200 | success |

Пример 3
Подсчет общего количества событий и максимального смещения лога по 3-часовым интервалам:
... | timechart span=3h count(log.offset), max(log.offset) by event
Пример 4
В данном примере для каждого часового интервала система вернет значение поля msgNums, которое встречается в 95 процентах случаев:
... | timechart span=1h perc(msgNums, 95)
Пример 5
Динамика объемов ответа сетевого трафика для каждой операционной системы по 30-минутным интервалам с ограничением на количество уникальных хостов:
| timechart span=30m sum(http.response.body.bytes) as 'Объем, КБ' by user_agent.os.full
| eval 'Объем, КБ'=round('Объем, КБ'/1024)
В данном примере создается новое поле Объем, КБ, которое преобразует значения поля http.response.body.bytes в килобайты, команда round округляет килобайты до 2 значащий цифр и сохраняет в новое поле Объем, КБ.
Для каждого уникального значения хоста user_agent.os.full рассчитывается динамика объемов ответа сетевого трафика Объем, КБ за 30-минутный интервал.
Пример входных данных:
| user.name | http.response.body.bytes | user_agent.os.full | @timestamp |
|---|---|---|---|
| Ivanov | 50988 | Mac OS X | 2025-05-26T15:25:39.697685Z |
| Petrov | 10772 | Windows 8 | 2025-05-26T15:25:33.003472Z |
| Borisov | 51954 | Windows 10 | 2025-05-26T15:25:24.338701Z |
| Ermolov | 10541 | iPhone OS 4.2.6 | 2025-05-26T15:25:24.290198Z |
| Andreev | 10646 | Android 2.3.3 | 2025-05-26T15:25:25.223198Z |
Результатом выполнения запроса может быть следующая таблица:
| Android 2.3.3 | Mac OS X | Windows 10 | Windows 8 | iPhone OS 4.2.6 | @timestamp |
|---|---|---|---|---|---|
| 181 | 300 | 133 | 257 | 136 | 2025-05-26T16:00:00.000Z |
| 230 | 350 | 233 | 237 | 283 | 2025-05-26T16:30:00.000Z |
| 568 | 503 | 388 | 288 | 378 | 2025-05-26T17:00:00.000Z |
