Подключение и конфигурирование#

Конфигурация Коллектора метрик описывается в формате HOCON и может быть сохранена в файле.

При запуске Коллектора путь к файлу конфигурации передается в --config.

Структура конфигурации#

Укрупненно структура конфигурации выглядит следующим образом:

collector {
  name: collectorName
  type: collectorType
  version: 1.1

  server: { }                   // необязательный параметр
  flowInitialDelayStepMs: 10    // необязательный параметр
  security: { }                 // необязательный параметр
  eventDiscovery: { }           // необязательный параметр
  iterators = [ { } ]           // необязательный параметр
  flows = [ { } ]
  components = [ { } ]
}

Все параметры конфигурации размещаются в корневом элементе collector.

Обязательными являются параметры:

  • name — имя коллектора, используется для идентификации каждого развернутого экземпляра коллектора (строка);

  • type — тип конфигурации коллектора, соответствует типам мониторируемых приложений/техсервисов (строка, например, одно из: kafka, flink, replicator, artemis, etcd);

  • version — версия конфигурации коллектора (строка, major - номер версии базового шаблона конфигурации, minor - номер ревизии с локальными изменениями);

  • flows — перечень потоков сборки метрик;

  • components — перечень компонентов, используемых в потоках.

Необязательными являются параметры:

  • server — настройки встроенного HTTP-сервера;

  • flowInitialDelayStepMs — начальная задержка перед стартом каждого потока сборки в миллисекундах (целое);

  • security — общие настройки безопасности;

  • eventDiscovery — настройки доступа к Event Discovery;

  • iterators — список итераторов потоков сборки.

Структура параметра конфигурации flows#

Параметр flows содержит список потоков сборки метрик с их настройками. Является обязательным.

Количество потоков может быть произвольным:

flows = [
    {
      name: Flow1
      status: active                                //необязательный параметр
      speedRatio: 1.5                               //необязательный параметр
      input: InputComponent
      output: OutputComponent
      processors: [Processor1, Processor2, ...]     //необязательный параметр
      aggregator: Aggregator                        //необязательный параметр
      postProcessor: [Processor1, Processor2, ...]  //необязательный параметр
      iterator: Iterator                            //необязательный параметр
    },

    // ...

    {
      name: FlowM
      status: inactive
      input: InputComponent
      output: OutputComponent
    }

    // ...

    {
      name: FlowN
      status: nonstop
      input: CollectorLivenessProbe
      output: OutputComponent
    }

  ]

Каждый поток описывается следующими параметрами:

  • name — имя экземпляра потока (строка);

  • status — признак «активности» потока (строка, если "active" или "nonstop" поток запускается, иначе игнорируется);

  • speedRatio — коэффициент «ускорения» темпа периодического опроса источников метрик потока (вещественное, если < 1 – замедление, если > 1 – ускорение, по умолчанию = 1);

  • input — ссылка на имя input-компонента из списка компонентов (строка);

  • output — ссылка на имя output-компонента из списка компонентов (строка);

  • processors, postProcessors — список ссылок на имена processor-компонентов из списка компонентов (строка); Порядок следования компонентов в списке определяет последовательность их применения к проходящим через них метрикам!

  • aggregator — ссылка на имя aggregator-компонента из списка компонентов (строка);

  • iterator — ссылка на имя итератора потока из списка итераторов (строка).

Структура параметра конфигурации components#

Параметр components содержит список используемых компонентов коллектора с их настройками. Является обязательным.

Количество компонентов может быть произвольным:

 components = [
    {
      name: SomeInputComponent
      description: "Component description"
      type: input
      class: InputComponentClassName
      // ...
    },

    // ...

    {
      name: SomeOutputComponent
      description: "Component description"
      type: output
      class: OutputComponentClassName
      // ...
    },

    // ...

    {
      name: SomeProcessorComponent
      description: "Component description"
      type: processor
      class: ProcessorComponentClassName
      // ...
    }
  ]

Каждый компонент описывается рядом параметров, номенклатура которых зависит от типа и программной реализации компонента. Общими являются следующие поля:

  • name — имя экземпляра компонента (строка);

  • description — описание экземпляра компонента (строка);

  • type — тип компонента (строка, возможные варианты: input, output, processor, aggregator);

  • class — имя класса программной реализации компонента (строка).

Структура параметра конфигурации server#

Параметр server содержит настройки встроенного HTTP-сервера. Является необязательным.

server {
    host: localhost,
    port: 8080
    ssl: { }                    //необязательный параметр
  }

Настройки server:

  • host — адрес сервера (строка);

  • port — порт HTTP-сервера (целое);

  • ssl — настройки SSL (если параметр не задается, организуется незащищенное соединение без SSL).

Параметр ssl содержит настройки защищенного SSL-соединения HTTPs-сервера. Является необязательным.

ssl {
   port: 8081
   keystorelocation: /path/to/file.jks
   keystoreslonik: SomeKeyStorePassword
   truststorelocation: /path/to/file.jks
   truststoreslonik: SomeTrustStorePassword
}

Настройки ssl:

  • port — порт HTTPs-сервера (целое);

  • keystorelocation — путь к keystore (строка);

  • keystoreslonik – пароль к keystore (строка);

  • truststorelocation – путь к truststore (строка);

  • truststoreslonik – пароль к truststore (строка).

Если в конфигурации для сервера не заданы параметры SSL, поднимается единственный HTTP-сервер и для /system и для /control endpoints. Если в конфигурации для сервера указаны параметры SSL, поднимается отдельный HTTP-сервер для /system endpoints (healthcheck) и отдельный HTTPs-сервер для /control endpoints.

Структура параметра конфигурации security#

Параметр security содержит общие настройки безопасности. Является необязательным.

security: {
  encoderKey: "SomeKey"
  encoderClassName: "SomeName"
}

Настройки security:

  • encoderKey — ключ декодирования секретов (строка);

  • encoderClassName — полное имя класса кодировщика (целое).

Структура параметра конфигурации eventDiscovery#

Параметр eventDiscovery содержит настройки доступа к Event Discovery. Является необязательным.

Необходим, если требуется получение отдельных параметров конфигурации из Event Discovery.

eventDiscovery: {
    host: "https://11.11.11.11"
    port: 2379
    jks: {
      path: /path/to/file.jks
      password: somePassword
    }
    authority: someAuthorityName
    uri: "fpss://Domain.Federation"
  }

Настройки eventDiscovery:

  • host — адрес сервера (строка);

  • port — порт сервера (целое).

  • jks — SSL-сертификат:

    • path — путь к JKS-файлу клиентского сертификата (строка);

    • password — пароль от JKS (строка);

  • authorityauthority name DN-сертификата сервера (строка);

  • uri — адрес событийного Домена (строка).

Структура параметра конфигурации iterators#

Параметр iterators содержит перечень итераторов потоков с их настройками. Является необязательным.

iterators = [
  {
    name: Iterator1
    type: flowIteratorType
    collection: [
      {
        components: [
          {
            type: input
            class: SomeInputComponentClass
            config: [
              {key: host, value: 11.11.11.1},
              {key: port, value: 8790}
            ]
          }
          // ...
        ]
      },
      // ...
      {
        components: [
          {
            type: input
            class: AnotherInputComponentClass
            config: [
              {key: host, value: 11.11.11.11},
              {key: port, value: 8790}
            ]
          }
          // ...
        ]
      }
    ]
  }
  // ...
]

Каждый итератор идентифицируется уникальным именем name, содержит перечень итерируемых значений collection и должен принадлежать одному из двух типов flowIteratorType или componentIteratorType.

Значения collection являются структурными, могут быть адресованы заданным типам и классам компонентов, содержат набор их варьируемых параметров.

Связь между итератором и экземпляром потока устанавливается по полю потока iterator, где указывается имя (name) итератора.

Коллектор для каждого значения из collection итератора с типом flowIteratorType создает отдельную копию экземпляра потока и подменяет текущие параметры конфигурации компонентов этого потока на соответствующие значения итератора (соответствие устанавливается по именам типов и классов компонентов).

Коллектор для каждого значения из collection итератора с типом componentIteratorType создает отдельную копию input компонента из списка inputs данного потока и подменяет текущие параметры конфигурации компонента на соответствующие значения итератора (соответствие устанавливается по именам типов и классов компонентов).