Предоставляет HTTP клиент со следующими функциями:
- Таймауты на запросы,
- Повторные запросы в случае таймаутов,
- Сбор метрик OpenTracing,
- Сбор метрик в формате Prometheus.
Смотрите пример использования HTTP клиента вместе с OT + Jaeger.
По умолчанию выключено. Чтобы собирать метрики, нужно:
- В конфигурации указать уникальное имя клиента, которое будет использоваться в качестве префикса к именам метрик.
- Установить опцию
Metrics.Collect
в значениеtrue
. - Важно: если URL запросы строятся динамически, то необходимо настроить свою функцию формирования значения для
метки
path
, иначе метрика будет иметь высокое значениеcardinality
, что плохо скажется на производительности Prometheus. Настраивается через опциюpromlib.InstrumentWithPath
. Опции передаются через конфигурациюMetrics.Options
.
Конфигурация для HTTP клиента. Пример yaml конфигурации смотрите в config.yml.
Поле | Тип | Стандартное значение | Описание |
---|---|---|---|
Name | string |
"" | Уникальное имя клиента (обязательно при сборе метрик Prometheus) |
DialTimeout | time.Duration |
5 секунд | Таймаут на установление TCP соединения для HTTP |
KeepAlive | time.Duration |
30 секунд | Интервал времени, после которого закрывается постоянное TCP соединение |
MaxIdleConns | integer |
100 | Максимальное количество соединений к внешнему сервису |
IdleTimeout | time.Duration |
15 минут | Время, после которого закрывается висящее TCP соединение |
RequestTimeout | time.Duration |
500 миллисекунд | Таймаут на выполнение запроса |
NoHTTPS | boolean |
true |
Выключение HTTPS |
RetryConfig | *retry.Config |
5 попыток выполнить запрос с фиксированной задержкой в 10мс | Стратегия выполнения повторных запросов |
OnRetry | func(n uint, err error) |
Логирует номер попытки и ошибку в stdout | Callback, вызываемый перед каждым повторным запросом |
MinVersionTLS | VersionTLS |
1.2 | Минимальная допустимая версия TLS |
PublicCert | string |
"" | Путь к публичному сертификату TLS |
PrivateCert | string |
"" | Путь к приватному сертификату TLS |
Metrics | ConfigMetrics |
Конфигурация сбора метрик в формате Prometheus |
Устанавливает пользовательский HTTP транспорт для клиента.
Выполняет GET запрос с заранее заготовленным HTTP запросом.
Выполняет POST запрос с заранее заготовленным HTTP запросом.
Выполняет заранее заготовленный HTTP запрос.
Создаёт новый инстанс Client.