uid
Утилита UID предоставляет различные функции для поиска или изменения информации в таблице tsdb-uid. Это включает назначение UID для метрик, имен тегов и значений тегов, а также метаданных UID, метаданных временных рядов и определений или данных дерева.
Используйте утилиту UID с командной строкой:
uid <subcommands> [arguments]
Общие параметры командной строки
Параметры, специфичные для утилиты UID, включают:
Поиск
Команда поиска является по умолчанию для uid и используется для поиска UID, назначенного имени, или имени, назначенного UID для заданного типа.
Формат команды
<kind> <name> <kind> <UID>
Пример команды
./tsdb uid tagk host
Пример ответа
tagk host: [0, 0, 1]
grep
Подкоманда grep выполняет поиск по регулярному выражению для заданного типа UID и возвращает список всех имен UID, которые соответствуют выражению. Поля, необходимые для команды grep, включают:
| Имя | Тип данных | Описание | По умолчанию | Пример |
|---|---|---|---|---|
| kind | Строка | Тип UID для поиска. Должен быть одним из metrics, tagk или tagv
| tagk | |
| expression | Строка | Регулярное выражение для поиска | disk.*write |
Формат команды
grep <kind> '<expression>'
Пример команды
./tsdb uid grep metrics 'disk.*write'
Пример ответа
metrics iostat.disk.msec_write: [0, 3, -67] metrics iostat.disk.write_merged: [0, 3, -69] metrics iostat.disk.write_requests: [0, 3, -70] metrics iostat.disk.write_sectors: [0, 3, -68]
assign
Эта подкоманда используется для назначения идентификаторов новым уникальным именам для метрик, имен тегов или значений тегов. Укажите список одного или нескольких значений для назначения UID, и список назначений будет возвращен.
| Имя | Тип данных | Описание | Пример |
|---|---|---|---|
| kind | Строка | Тип UID, который представляют имена. Должен быть одним из metrics, tagk или tagv
| tagk |
| name | Строка | Одно или несколько имен для назначения UID. Имена не должны быть в кавычках и не могут содержать пробелы. | owner |
Формат команды
assign <kind> <name> [<name>...]
Пример команды
./tsdb uid assign metrics disk.d0 disk.d1 disk.d2 disk.d3
Пример ответа
rename
Изменяет имя уже назначенного UID. Если UID данного типа не существует, будет возвращено сообщение об ошибке.
Примечание
После изменения имени UID необходимо очистить кэш (см. /api/dropcaches) или перезапустить все TSD для применения изменений. TSD не перезагружают карты UID периодически.
| Имя | Тип данных | Описание | Пример |
|---|---|---|---|
| kind | Строка | Тип UID, который представляет имя. Должен быть одним из metrics, tagk или tagv
| tagk |
| name | Строка | Существующее имя UID | owner |
| newname | Строка | Новое имя UID | server_owner |
Формат команды
rename <kind> <name> <newname>
Пример команды
./tsdb uid rename metrics disk.d0 disk.d0.bytes_read
delete
Удаляет отображение UID из таблицы tsdb-uid. Убедитесь, что все источники больше не записывают данные, используя UID, и что прошло достаточно времени, чтобы пользователи не запрашивали данные, использующие UID.
Примечание
После удаления UID он все еще может оставаться в кэшах работающих серверов TSD. Убедитесь, что очистили их кэши после удаления записи.
Предупреждение
Удаление UID не удалит подлежащие данные, связанные с UID (мы работаем над этим). Для метрик это безопасно, это не повлияет на запросы. Но для имен и значений тегов, если запрос сканирует данные, содержащие старый UID, запрос завершится ошибкой, потому что он больше не может найти сопоставление имени.
| Имя | Тип данных | Описание | Пример |
|---|---|---|---|
| kind | Строка | Тип UID, который представляет имя. Должен быть одним из metrics, tagk или tagv
| tagk |
| name | Строка | Существующее имя UID | owner |
Формат команды
delete <kind> <name>
Пример команды
./tsdb uid delete disk.d0
fsck
Команда UID FSCK проверит всю таблицу UID на наличие ошибок, связанных с именами и отображениями UID. По умолчанию запуск будет сканировать каждый столбец в таблице и регистрировать любые обнаруженные ошибки. В версии 2.1 можно исправить ошибки в таблице, передав флаг «fix». Объекты UIDMeta пропускаются во время сканирования. Возможные ошибки включают:
| Ошибка | Описание | Исправление |
|---|---|---|
| Максимальный ID для метрик — 42, но найдено только 41 запись. Возможно, 1 ID был удалён? | Это указывает на то, что один или несколько UID не использовались для сопоставления записей. Если UID был удалён, это нормально. Если UID не удалялись, это может указывать на неиспользуемые UID из-за автоматического назначения серверами TSD, когда данные поступали слишком быстро. Попробуйте назначать UID заранее по возможности. | Исправление не требуется |
| Найден ID 42 для метрик, но максимальный ID — только 41! Будущие ID могут быть двойными! | Если это происходит, обычно это связано с повреждением и указывает на то, что строка максимального ID не была обновлена должным образом. | Установите строку максимального ID на максимальное обнаруженное значение |
| Неверный максимальный ID для метрик: должен быть 8 байт | Указывает на повреждение строки максимального ID. | Пока нет исправления. |
| Отсутствует обратное отображение для прямого отображения метрик: foo -> 000001 | Это может произойти, если сервер TSD упал до записи обратного отображения, и это будет препятствовать выполнению запросов к временным рядам, использующим UID, поскольку они не смогут найти имя. | Восстановить отсутствующее обратное отображение. |
| Прямое отображение метрик bar -> 000001 отличается от обратного отображения: 000001 -> foo | Обратное отображение указывает на другое имя, чем прямое отображение, и это случается редко. Оно будет связано с другим сообщением. | Зависит от второго сообщения |
| Несогласованное прямое отображение метрик bar -> 000001 против bar -> foo / foo -> 000001 | При несовпадении прямого/обратного отображения возможно, что UID был назначен нескольким именам одного типа. Если это происходит, то данные для двух разных имён были записаны в один и тот же временной ряд, и эти данные фактически повреждены. | Исправление заключается в удалении прямых отображений для всех имен, которые сопоставляются с одним UID. Затем UID присваивается новое имя, которое представляет собой объединение предыдущих имён через точку с префиксом «fsck». Например, в приведённом выше примере новое имя будет «fsck.bar.foo». Это имя может быть использовано для доступа к данным из повреждённого временного ряда. При записи данных для ошибочных имён в следующий раз каждому из них будет назначен новый UID, и будут созданы новые временные ряды. |
| Дублирующее прямое отображение метрик bar -> 000002 и null -> foo | В этом случае UID использовался не более одного раза, но обратное отображение было неправильным. | Обратное отображение будет восстановлено, в этом случае: 000002 -> bar |
| Отсутствует обратное отображение метрик bar -> 000002 | Найдено обратное отображение без прямого отображения. UID может быть удалён. | Удалить обратное отображение |
| Несогласованное обратное отображение метрик 000003 -> foo против 000001 -> foo / foo -> 000001 | Если сирота обратного отображения указывает на решенный прямое отображение, возникает эта ошибка. | Удалить обратное отображение |
Параметры
- fix - Попытка исправить ошибки, описанные в таблице выше
- delete_unknown - Удаляет любые столбцы в таблице UID, которые не принадлежат OpenTSDB
Формат команды
fsck [fix] [delete_unknown]
Пример команды
./tsdb uid fsck fix
Пример ответа
INFO [main] UidManager: ---------------------------------- INFO [main] UidManager: - Running fsck in FIX mode - INFO [main] UidManager: - Remove Unknowns: false - INFO [main] UidManager: ---------------------------------- INFO [main] UidManager: Maximum ID for metrics: 2 INFO [main] UidManager: Maximum ID for tagk: 4 INFO [main] UidManager: Maximum ID for tagv: 2 ERROR [main] UidManager: Forward tagk mapping is missing reverse mapping: bar -> 000004 INFO [main] UidManager: FIX: Restoring tagk reverse mapping: 000004 -> bar ERROR [main] UidManager: Inconsistent reverse tagk mapping 000003 -> bar vs 000004 -> bar / bar -> 000004 INFO [main] UidManager: FIX: Removed tagk reverse mapping: 000003 -> bar ERROR [main] UidManager: tagk: Found 2 errors. INFO [main] UidManager: 17 KVs analyzed in 334ms (~50 KV/s) WARN [main] UidManager: 2 errors found.
metasync
Эта команда будет проходить через всю таблицу данных, сканируя каждую строку данных временных рядов и генерируя отсутствующие объекты TSMeta и UIDMeta или обновляя созданные метки времени для каждого типа объекта, если это необходимо. Используйте эту команду после включения отслеживания метаданных с существующими данными или если вы подозреваете, что некоторые временные ряды могут быть не проиндексированы должным образом. Команда также будет передавать новые или обновлённые записи метаданных в поисковый движок, если плагин настроен. Если существующие метаданные повреждены, то есть TSD не может десериализовать объект, он будет заменён новой записью.
Безопасно запускать эту команду в любое время, так как она не будет уничтожать или перезаписывать действительные данные. (Если вы не будете изменять столбцы непосредственно в HBase способом, несовместимым с форматами метаданных). Утилита разделит таблицу данных на блоки, обрабатываемые несколькими потоками, поэтому чем больше ядер в вашем процессоре, тем быстрее будет выполнена команда.
Формат команды
metasync
Пример команды
./tsdb uid metasync
metapurge
Эта подкоманда пометит все объекты TSMeta и UIDMeta для удаления в таблице UID. Это полезно для понижения версии с 2.0 до 1.x или просто для очистки всех метаданных и начала заново с metasync.
Формат команды
metapurge
Пример команды
./tsdb uid metapurge
treesync
Обрабатывает список объектов TSMeta в таблице UID, обрабатывая каждый из них во всех настроенных и включенных деревьях для компиляции ветвей. Эту команду можно запускать в любое время, и она не повлияет на существующие объекты.
Формат команды
treesync
Пример команды
./tsdb uid treesync
treepurge
Удаляет все ветви, столкновения, несовпавшие данные и, по желанию, само определение дерева для заданного дерева. Параметры включают:
| Имя | Тип данных | Описание | Пример |
|---|---|---|---|
| id | Целое число | ID дерева для очистки | 1 |
| definition | Флаг | Добавьте это литерал после ID, чтобы удалить определение дерева, а также данные | definition |
Формат команды
treepurge <id> [definition]
Пример команды
./tsdb uid treepurge 1
© 2010–2016 The OpenTSDB Authors
Licensed under the GNU LGPLv2.1+ and GPLv3+ licenses.
http://opentsdb.net/docs/build/html/user_guide/cli/uid.html