Skip to content

Observatory

Блок observatory измеряет задержку набора исходящих, периодически выполняя пробный HTTP-запрос через каждый из них. Результаты передаются стратегии балансировщика strategy: leastPing, чтобы всегда использовался самый быстрый доступный исходящий.

Параметры

ПолеТипПо умолчаниюДопустимые значенияОписание
subjectSelector[]string[]<outbound tag prefix>Теги исходящих для проверки. Каждая запись — префикс; проверяется любой исходящий, тег которого начинается с одной из перечисленных строк.
probeURLstring(required)<URL>URL, который наблюдатель запрашивает через каждый проверяемый исходящий. Задержка измеряется по этому запросу от начала до конца.
probeIntervalduration.Duration10m<duration>Пауза между проверками одного и того же исходящего. Принимает строки длительности в стиле Go, например "30s", "5m".
enableConcurrencyboolfalsetrue | falseПроверять все выбранные исходящие параллельно, а не последовательно.

Исходный код: infra/conf/observatory.go:12-17 · зафиксировано на v26.7.28 (5ca6f4b)

Пример

json
{
  "outbounds": [
    { "tag": "proxy-jp", "protocol": "vless" },
    { "tag": "proxy-us", "protocol": "vless" }
  ],
  "observatory": {
    "subjectSelector": ["proxy-"],
    "probeURL": "http://www.google.com/generate_204",
    "probeInterval": "30s",
    "enableConcurrency": true
  },
  "routing": {
    "balancers": [
      { "tag": "balancer", "selector": ["proxy-"], "strategy": { "type": "leastPing" } }
    ]
  }
}

Примечания

  • Селектор работает по префиксу"proxy-" охватывает "proxy-jp", "proxy-us" и т. д. Пустая строка означает проверку всех исходящих (нужно редко).
  • Для более быстрой параллельной проверки, учитывающей циклы обмена HTTP/2, см. burstObservatory.

Исходный код: infra/conf/observatory.go:12-17 · v26.7.28 (5ca6f4b)

Core Tutorial от Argsment