1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Napa.js

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
metric.md 5.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 05:42 7a34d50

Введение

Как и логирование, метрики являются базовым требованием для создания отслеживаемых сервисов. API метрик позволяет разработчикам использовать собственную систему метрик как в JavaScript, так и в C++ (аддон).

Метрика имеет свою идентичность, содержащую следующую информацию:

  • Раздел: группа или категория метрики.
  • Имя: имя метрики. Комбинация раздела и имени должна быть уникальной в системе.
  • Тип: тип метрики, который может быть:
    • Число: абсолютное число, например: PrivateBytes.
    • Скорость: текущий объём в числе, например: QueryPerSecond.
    • Процентная доля: абсолютное число, которое необходимо сэмплировать по процентилям, например: SuccessLatency.
  • Измерения: метрика может иметь несколько измерений, каждое измерение может связываться со строковым значением во время выполнения. Например, IncomingRequestRate может иметь 2 измерения: ['client-id', 'request-type'].

Метрики — это объекты, связанные с процессом, которые можно использовать в разных зонах.

C++ API

Интерфейс Metric

/// <summary> Перечисление типа метрики. </summary>
enum class MetricType {
    Number = 0,
    Rate,
    Percentile,
};

/// <summary> Интерфейс для представления многомерной метрики с максимальной размерностью 64. </summary>
class Metric {
public:

    /// <summary> Устанавливает значение метрики с переменным числом аргументов измерения. </summary>
    /// <param name="value"> Значение Int64. </param>
    /// <param name="numberOfDimensions"> Количество устанавливаемых измерений. </param>
    /// <param name="dimensionValues"> Массив значений имён измерений. </param>
    /// <returns> Успех/Неудача. </returns>
    /// <remarks>
    ///     Количество значений измерений должно точно соответствовать количеству измерений, предоставленных при создании этой метрики.
    /// </remarks>
    virtual bool Set(int64_t value, size_t numberOfDimensions, const char* dimensionValues[]) = 0;

    /// <summary>
    ///     Увеличивает значение метрики на переменное число аргументов измерения.
    ///     Используется в основном для упрощения счётчиков скорости.
    /// </summary>
    /// <param name="value"> Значение UInt64 для увеличения. </param>
    /// <param name="numberOfDimensions"> Количество измерений. </param>
    /// <param name="dimensionValues"> Массив значений имён измерений. </param>
    /// <returns> Успех/Неудача. </returns>
    /// <remarks>
    ///     Количество
``` **napajs.metric.MetricType.Rate, ['client-id'])**

// Увеличиваем QPS для client-id 'client1'.
**latency.increment(['client1'])**.

#### **decrement(dimensions?: string[]): void**
Уменьшает значение метрики, ограниченной значениями измерений.

### **get(section: string, name: string, type: MetricType, dimensions: string[] = []): Metric**
Создаёт метрику с идентификатором, состоящим из секции, имени, типа и измерений. Если метрика уже существует с заданными параметрами, возвращает существующую.

Пример:
```ts
import * as napa from 'napajs';
let metric = napa.metric.get(
    'app1', 
    'counter1', 
    napa.metric.MetricType.Number, 
    []);
metric.increment([]);

Использование пользовательских провайдеров метрик

Разработчики могут подключить пользовательский провайдер метрик, вызвав перед созданием любых зон следующее:

napa.runtime.setPlatformSettings({
    "metricProvider": "<имя-модуля-пользовательского-провайдера-метрик>"
}

Разработка пользовательских провайдеров метрик

TBD

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-Napa.js.git
git@api.gitlife.ru:oschina-mirror/mirrors-Napa.js.git
oschina-mirror
mirrors-Napa.js
mirrors-Napa.js
master