Блок конфигурации telemetry
Блок конфигурации telemetry задает различные конфигурации для публикации метрик StarVault в вышестоящие системы. Доступные метрики StarVault можно найти в документации Telemetry internals.
telemetry {
statsite_address = "statsite.company.local:8125"
}
1. Параметры telemetry
Из-за большого количества настраиваемых параметров в блоке telemetry параметры на этой странице сгруппированы по провайдерам телеметрии.
1.1. Общие параметры
Опции доступные для всех конфигураций телеметрии.
-
usage_gauge_period(string: "10m")— интервал, через который собираются данные об использовании с высокой кардинальностью, такие как количество токенов, количество сущностей и количество секретов. Значение "none" отключает сбор данных. Используются формата строки время действия. -
maximum_gauge_cardinality(int: 500)— максимальная кардинальность калибровочных меток. -
disable_hostname(bool: false)— должны ли значения датчиков иметь префикс с именем локального хоста. -
enable_hostname_label(bool: false)— должны ли все значения метрики содержать меткуhostс локальным именем хоста. Рекомендуется включитьdisable_hostname, если используется эта опция. -
lease_metrics_epsilon(string: "1h")— размер контейнера, используемого для оценки истечения срока аренды в будущем. Например, для значения по умолчанию 1 час метрикаvault.expire.leases.by_expirationбудет суммировать общее количество истекающих аренд по 1-часовым контейнерам, начиная с текущего времени. Обратите внимание, что аренда распределяется по контейнерам путем округления. Например, еслиlease_metrics_epsilonимеет значение 1h и срок аренды A истекает через 25 минут, а срок аренды B - через 35 минут, то аренда A будет находиться в первом контейнере, что соответствует 0-30 минутам, а аренда B - во втором контейнере, что соответствует 31-90 минутам. Используются формата строки время действия. -
num_lease_metrics_buckets(int: 168)— количество контейнеров с истекшим сроком действия для аренд. Например, для значения по умолчанию будет сообщено о 168 метках значений для метрикиvault.expire.leases.by_expiration, где каждое значение в каждом контейнере отделено по времени параметромlease_metrics_epsilon. Для значенияlease_metrics_epsilonпо умолчанию 1 час и значения по умолчаниюnum_lease_metrics_buckets,vault.expire.leases.by_expirationбудет сообщать общее количество аренд, истекающих в течение каждого часа от текущего времени до одной недели от текущего времени. -
add_lease_metrics_namespace_labels(bool: false)— если значение установлено в true, тоvault.expire.leases.by_expirationбудет разбивать истекающие аренды как по времени, так и по пространству имен. По умолчанию этот параметр отключен, так как его включение может привести к большой кардинальности метрики. -
filter_default(bool: true)— параметр определяет, разрешать ли метрики, которые не были указаны фильтром. По умолчанию установлено значениеtrue, которое разрешает все метрики, если фильтры не указаны. При значенииfalseбез фильтров метрики отправляться не будут. -
prefix_filter(string array: [])— список правил фильтрации для разрешения/блокировки метрик по префиксам в следующем формате:
["+vault.token", "-vault.expire", "+vault.expire.num_leases"]
"+" пред префиксом разрешает любые метрики с данным префиксом. "-" перед префиксом — блокирует их. Если два правила пересекаются, приоритет будет иметь более конкретное правило. Блокировка будет иметь приоритет, если один и тот же префикс указан в списке несколько раз.
1.2. statsite
Параметры telemetry для statsite.
-
statsite_address(string: "")— адрес сервера statsite для пересылки данных метрик.
telemetry {
statsite_address = "statsite.company.local:8125"
}
1.3. statsd
Параметры telemetry для statsd.
-
statsd_address(string: "")— адрес сервера statsd для пересылки метрик.
telemetry {
statsd_address = "statsd.company.local:8125"
}
1.4. circonus
Параметры telemetry для Circonus.
-
circonus_api_token(string: "")— действительный токен Circonus API, используемый для создания/управления проверкой. Если токен указан, то управление метрикой включено. -
circonus_api_app(string: "nomad")— действительное имя приложения, связанное с API-токеном. -
circonus_api_url(string: "https://api.circonus.com/v2")— базовый URL-адрес используемый для контакта с Circonus API. -
circonus_submission_interval(string: "10s")— интервал, через который метрики передаются в Circonus. -
circonus_submission_url(string: "")— полеcheck.config.submission_urlобъекта Check API из ранее созданной HTTPTRAP-проверки. -
circonus_check_id(string: "")— идентификатор проверки (не пакет проверки) из ранее созданной HTTPTRAP-проверки. Числовая часть поляcheck._cidв объекте Check API. -
circonus_check_force_metric_activation(bool: false)— следует ли принудительно активировать метрики, которые уже существуют и не активны в данный момент. Если управление проверками включено, то по умолчанию добавляются новые метрики по мере их появления. Если метрика уже существует в проверке, то она не будет активирована. Этот параметр переопределяет такое поведение. -
circonus_check_instance_id(string: "<hostname>:<application>")— уникальная идентификации метрик, поступающих от данного экземпляра. Может использоваться для поддержания непрерывности метрик для переходных или эфемерных экземпляров при их перемещении в пределах инфраструктуры. По умолчанию значение параметра установлено как "имя хоста":"имя приложения" (например, "host123:nomad"). -
circonus_check_search_tag(string: <service>:<application>)— специальный тег, который в сочетании с идентификатором экземпляра помогает сузить результаты поиска, если не указан ни URL-адрес представления, ни Check ID. По умолчанию задается "сервис":"приложение" (например, "service:nomad"). -
circonus_check_display_name(string: "")— имя присваивоенное проверке при создании. Имя отображается в списке Circonus UI Checks. -
circonus_check_tags(string: "")— список дополнительных тегов, которые следует добавить к проверке при создании. Теги отделяются друг от друга запятыми. -
circonus_broker_id(string: "")— идентификатор конкретного Circonus Broker, который будет использоваться при создании новой проверки. Числовая часть поляbroker._cidв объекте Broker API. Если управление метрикой включено и не указаны ни Submission URL, ни Check ID, будет предпринята попытка поиска существующей проверки с использованием Instance ID и Search Tag. Если проверка не найдена, будет создана новая HTTPTRAP-проверка. По умолчанию выбирается случайный Enterprise Broker или Circonus Public Broker по умолчанию. -
circonus_broker_select_tag(string: "")— специальный тег, который будет использоваться для выбора Circonus Broker, если не указан Broker ID. Лучше всего использовать этот тег в качестве подсказки, какой брокер должен быть использован в зависимости от того, где запущен данный экземпляр (например, конкретное географическое местоположение или центр обработки данных, dc:sfo).
1.5. dogstatsd
Параметры telemetry для DogStatsD.
-
dogstatsd_addr(string: "")— адрес экземпляра DogStatsD. DogStatsD - это разновидность протокола statsd, совместимая с протоколом statsd, с дополнительной возможностью оформлять метрики тегами и информацией о событиях. Если это предусмотрено, StarVault будет отправлять различные телеметрические данные этому экземпляру для агрегирования. Это можно использовать для сбора информации о времени выполнения. -
dogstatsd_tags(string array: [])— список глобальных тегов, которые будут добавляться во все телеметрические пакеты, отправляемые в DogStatsD. Список строк, где каждая строка выглядит как "my_tag_name:my_tag_value".
1.6. prometheus
Параметры telemetry для prometheus.
-
prometheus_retention_time(string: "24h")— количество времени, в течение которого метрики Prometheus сохраняются в памяти. Если установить значение 0, телеметрия Prometheus будет отключена. -
disable_hostname(bool: false)— рекомендуется также включить опциюdisable_hostname, чтобы избежать префиксации метрик с именем хоста.
Конечная точка /v1/sys/metrics доступна только на активных узлах и автоматически отключается на ожидающих узлах. Возможно включить конечную точку /v1/sys/metrics на ожидающих узлах, разрешив неаутентифицированный доступ к метрикам.
StarVault не использует пути Prometheus по умолчанию, поэтому Prometheus должен быть сконфигурирован указанным ниже путем. Обратите внимание, что использование ?format=prometheus в пути не сработает, так как "?" будет пропущен, поэтому его необходимо указать в качестве параметра.
Токен StarVault требуется при capabilities = ["read", "list"] для /v1/sys/metrics. Опции Prometheus bearer_token или bearer_token_file должны быть добавлены в задание на очистку.
Пример блока job_name, необходимой в конфигурации Prometheus, приведен ниже.
# prometheus.yml
scrape_configs:
- job_name: 'starvault'
metrics_path: "/v1/sys/metrics"
params:
format: ['prometheus']
scheme: https
tls_config:
ca_file: your_ca_here.pem (1)
bearer_token: "your_vault_token_here"
static_configs:
- targets: ['your_vault_server_here:8200']
-
В качестве теста можно заменить на
insecure_skip_verify: true
Ниже показан пример конфигурации телеметрии, которую нужно добавить в файл конфигурации StarVault:
telemetry {
prometheus_retention_time = "30s"
disable_hostname = true
}
1.7. stackdriver
Параметры telemetry для Stackdriver Monitoring.
Провайдер телеметрии Stackdriver использует официальный Google Cloud Golang SDK. Это означает, что он поддерживает распространенные способы предоставления учетных данных в Google Cloud.
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/monitoring
https://www.googleapis.com/auth/monitoring.write
И следующие роли IAM:
roles/monitoring.metricWriter
-
stackdriver_project_id(string: "")— Google Cloud ProjectID для отправки данных телеметрии. -
stackdriver_namespace(string: "")— идентификатор пространства имен для данных телеметрии. -
stackdriver_debug_logs(bool: "false")— записывать ли StarVault дополнительные debug логи, связанные с стекдрайвером, в стандартный вывод ошибок (stderr).
Рекомендуется также включить опцию disable_hostname, чтобы избежать префиксации метрик с именем хоста, и включить вместо нее опцию enable_hostname_label.
telemetry {
stackdriver_project_id = "my-test-project"
stackdriver_location = "us-east1-a"
stackdriver_namespace = "vault-cluster-a"
disable_hostname = true
enable_hostname_label = true
}
Метрики из StarVault можно найти в Metrics Explorer. Все эти метрики отображаются с типом ресурса g`eneric_task`, а название метрики имеет префикс custom.googleapis.com/go-metrics/.