Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Блок конфигурации 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']
  1. В качестве теста можно заменить на 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/.