Метаданные
Основное назначение OpenTSDB — хранение временных рядов и выполнение различных операций с данными. Однако полезно знать, какой тип данных хранится, и предоставлять контекст при работе с информацией. Метаданные OpenTSDB — это данные о временных рядах. Большая часть из них настраивается пользователем для интеграции с внешними инструментами, такими как поисковые системы или системы отслеживания задач. В этом разделе описываются различные доступные метаданные и их назначение.
UIDMeta
Каждый временной ряд, хранящийся в OpenTSDB, имеет как минимум три UID, связанных с ним. Всегда будет metric и один или несколько пар тегов, состоящих из tagk или имени тега и tagv или значения тега. Когда в систему поступает новое имя одного из этих UID, ему присваивается уникальный идентификатор, так что всегда существует пара «имя UID» и «числовой идентификатор».
Каждый UID также может иметь запись метаданных в таблице tsdb-uid. Доступные данные для каждого UID включают неизменяемые поля, такие как uid, type, name и временная метка created, которая отражает время, когда UID был впервые назначен. Кроме того, некоторые поля могут быть отредактированы, например, description, notes, displayName и набор custom пар «ключ-значение» для записи дополнительной информации. Подробную информацию о полях см. на конечной точке /api/uid/uidmeta.
При каждом создании или изменении объекта UIDMeta он будет отправлен в плагин поиска, если плагин был настроен и загружен. Сведения о значениях UID см. в разделе UID и TSUID.
TSMeta
Каждый временной ряд в OpenTSDB уникально идентифицируется комбинацией UID метрики и UID имени/значения тегов, образуя TSUID, как описано в UID и TSUID. При получении нового временного ряда объект TSMeta может быть записан в таблицу tsdb-uid в строке, идентифицируемой TSUID. Объект метаданных включает некоторые неизменяемые поля, такие как tsuid, metric, tags, lastReceived и временная метка created, которая отражает время первого получения TSMeta. Кроме того, некоторые поля можно редактировать, такие как description, notes и другие. Подробности см. в /api/uid/tsmeta.
Включение метаданных
Если вы хотите использовать метаданные в своей настройке OpenTSDB, необходимо явно включить отслеживание метаданных в режиме реального времени и/или использовать инструменты командной строки. Существует несколько вариантов генерации метаданных из-за влияния на производительность, поэтому перед включением каких-либо настроек протестируйте их влияние на ваши TSD перед включением настроек в рабочей среде.
Доступно четыре варианта, начиная с наименьшего влияния на наибольшее.
-
tsd.core.meta.enable_realtime_uid— При включении, всякий раз, когда метрике, имени тега или значению тега присваивается UID, генерируется объект UIDMeta и, по желанию, отправляется в настроенный плагин поиска. Поскольку UID присваиваются довольно редко, эта настройка не должна сильно влиять на производительность. -
tsd.core.meta.enable_tsuid_tracking— При включении, каждый раз при записи временного ряда, в таблицуtsdb-metaзаписывается1с временной меткой данного временного ряда. Включение этой настройки удвоит количество операций put в хранилище и может потребовать больше оперативной памяти. Например, один TSD должен быть способен обрабатывать 6000 временных рядов в секунду примерно с 2 ГБ оперативной памяти. -
tsd.core.meta.enable_tsuid_incrementing— При включении этой настройки каждый записанный временной ряд будет увеличивать счетчик в таблицеtsdb-meta, соответствующей временным рядам, к которым относится временной ряд. Поскольку каждый временной ряд порождает запрос на инкремент, это может создать гораздо большую нагрузку на TSD и быстро использовать память, поэтому включайте только в том случае, если вы можете распределить нагрузку по нескольким TSD или ваши записи довольно небольшие. Включение инкремента переопределит настройкуtsd.core.meta.enable_tsuid_tracking. Например, один TSD должен быть способен обрабатывать 3000 временных рядов в секунду примерно с 6 ГБ оперативной памяти. -
tsd.core.meta.enable_realtime_ts— При включении, каждый раз, когда приходит новый временной ряд, создается объект TSMeta и, по желанию, отправляется в настроенный плагин поиска. Этот параметр также включит настройкуtsd.core.meta.enable_tsuid_incrementing, даже если она явно установлена какfalseв конфигурации. Если вы часто отправляете новые временные ряды в свои TSD, этот параметр может вызвать значительные накладные расходы и потребовать настройки процесса сбора мусора. Если вы не часто отправляете новые временные ряды, вы можете включить эту настройку без проблем, но следите за использованием оперативной памяти ваших TSD.
Предупреждение
Следите за использованием кучи JVM при включении каких-либо настроек метаданных в режиме реального времени.
В ситуациях, когда TSD завершается аварийно до записи метаданных в хранилище или если вы не включили отслеживание в реальном времени, вы можете периодически использовать инструмент командной строки uid и подкоманду metasync для генерации отсутствующих объектов UIDMeta и TSMeta. См. uid для получения информации.
Аннотации
Еще один вид метаданных — аннотации. Аннотации — это простые объекты, связанные с временной меткой и, необязательно, временным рядом. Аннотации предназначены для очень простого способа записи события. Они не предназначены для системы управления событиями или отслеживания задач. Вместо этого их можно использовать для связи временного ряда с такой внешней системой.
Каждая аннотация связана с начальной временной меткой. Это определяет, где заметка хранится в бэкенде, и может быть началом события с началом и концом или просто использоваться для записи заметки в определенный момент времени. Необязательно можно задать конечную временную метку, если заметка представляет собой временной интервал, например, задачу, которая была решена некоторое время после начала.
Кроме того, аннотация определяется TSUID. Если поле TSUID установлено на допустимый TSUID, аннотация будет храниться и ассоциироваться с временными рядами, определенными идентификатором. Это означает, что при создании запроса на временные ряды любые аннотации, сохраненные в запрошенном временном интервале, будут извлечены и, по желанию, возвращены пользователю. Эти аннотации считаются «локальными».
Если TSUID пуст, аннотация считается «глобальной» записью, связанной со всеми временными рядами в системе. При запросе пользователь может указать, чтобы глобальные аннотации извлекались для временного интервала запроса. Эти заметки будут возвращены вместе с «локальными» аннотациями.
Аннотации должны содержать очень краткое описание, ограниченное примерно 25 символами, так как заметка может отображаться на графике. Если запрошенный временной интервал содержит много аннотаций, график может забиться заметками. Пользовательские интерфейсы могут позволять пользователю выбрать аннотацию для получения более подробной информации. Эта информация может включать длинные «примечания» и/или пользовательский набор пар «ключ-значение».
Пользователи могут добавлять, редактировать и удалять аннотации через API HTTP по адресу ../api_http/annotation.
Пример графика GnuPlot с маркерами аннотаций показан ниже. Обратите внимание, что только поле description отображается в рамке синей линией, записывая start_time. Только start_time отображается на графике.

© 2010–2016 The OpenTSDB Authors
Licensed under the GNU LGPLv2.1+ and GPLv3+ licenses.
http://opentsdb.net/docs/build/html/user_guide/metadata.html