Поддерживает ли OpenTSDB изменение данных?

Зашел через документы. Не нашел много информации об этом, но:

  1. Поддерживает ли OpenTSDB поверх Hbase изменение значений? (Я знаю, что это не имеет особого смысла, так как обычно используется для мониторинга)

  2. Поддерживает ли он добавление нового тега к существующему значению метрики?

Мне нужно провести некоторый анализ и модификацию моих данных временных рядов, хранящихся в OpenTSDB. Хотелось бы узнать, предоставляет ли OpenTSDB функциональность для достижения этой цели. Что-то вроде маркировки точки данных "бесполезной", так что в следующий раз, когда я запрашиваю данные и получаю точку данных, я могу легко отфильтровать ее, проверяя либо тег, либо значение.

1 ответ

Решение

Что я наконец решил сделать, это:

  1. Проанализируйте и классифицируйте точку как бесполезную или полезную.
  2. Получить точку с его TSUID
  3. Используйте конечную точку api/annotation, чтобы добавить к ней локальную аннотацию, используя TSUID

Эта ссылка дает хорошее объяснение того, как opentsdb версии 2.3 обрабатывает изменения данных. Насколько я понимаю, что 2.4 похож.

http://opentsdb.net/docs/build/html/user_guide/writing/index.html#duplicate-data-points

Вкратце: это зависит от типа данных каждой записи для этой точки и от того, произошло ли сжатие. Если тип данных такой же (включая # байтов) и не было сжатие, то это будет работать. Если было сжатие, оно не будет работать. Если тип данных отличается, он не будет работать. Если для tsd.storage.fix_duplicates задано значение true, приведенные выше сценарии будут следовать стратегии выигрыша при последней записи.

Цитирование соответствующего раздела

Запись точек данных в OpenTSDB обычно идемпотентна в течение часа после первоначальной записи. Это означает, что вы можете записать значение 42 в метку времени 1356998400, а затем снова написать 42 в течение того же времени, и ничего плохого не произойдет. Однако, если вам разрешено сжатие, чтобы уменьшить потребление памяти и записать одну и ту же точку данных после сжатия строки данных, при запросе по этой строке может быть возвращено исключение. Если вы попытаетесь записать два разных значения с одной и той же отметкой времени, исключение дублирующейся точки данных может возникнуть во время запроса. Это связано с разницей в кодировании целых чисел в 1, 2, 4 или 8 байтов и чисел с плавающей запятой. Если первое значение было целым числом, а второе - с плавающей запятой, всегда будет выдаваться повторяющаяся ошибка. Однако, если оба значения были числами с плавающей запятой или оба были целыми числами, которые могли быть закодированы на одной и той же длине, то исходное значение может быть перезаписано, если в строке не произошло сжатие.

В большинстве случаев, если записывается дублирующая точка данных, это обычно указывает на то, что что-то пошло не так с источником данных, например, неожиданно перезапущенный процесс или ошибка в скрипте. OpenTSDB не сможет "безопасно" сгенерировать исключение при запросе по строке с одним или несколькими дубликатами, чтобы можно было решить проблему.

В OpenTSDB 2.1 вы можете включить последние записи, установив для параметра конфигурации tsd.storage.fix_duplicates значение true. Если этот флаг включен, во время запроса будет возвращено самое последнее записанное значение, а не исключение. В файл журнала также будет записано предупреждение о том, что найден дубликат. Если сжатие также включено, то исходное сжатое значение будет перезаписано последним значением.

Для вашего второго вопроса с метрикой может быть связан один или несколько тегов k/v. Таким образом, метрика может иметь несколько общих или непересекающихся пространств тэгов вместе со связанными тэгами.

Другие вопросы по тегам