Подключение и конфигурирование#
Конфигурация Коллектора метрик описывается в формате 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 (строка);
authority—authority nameDN-сертификата сервера (строка);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 данного потока и подменяет текущие параметры конфигурации компонента на соответствующие значения итератора (соответствие устанавливается по именам типов и классов компонентов).