Observatory
Блок observatory измеряет задержку набора исходящих, периодически выполняя пробный HTTP-запрос через каждый из них. Результаты передаются стратегии балансировщика strategy: leastPing, чтобы всегда использовался самый быстрый доступный исходящий.
Параметры
| Поле | Тип | По умолчанию | Допустимые значения | Описание |
|---|---|---|---|---|
subjectSelector | []string | [] | <outbound tag prefix> | Теги исходящих для проверки. Каждая запись — префикс; проверяется любой исходящий, тег которого начинается с одной из перечисленных строк. |
probeURL | string | (required) | <URL> | URL, который наблюдатель запрашивает через каждый проверяемый исходящий. Задержка измеряется по этому запросу от начала до конца. |
probeInterval | duration.Duration | 10m | <duration> | Пауза между проверками одного и того же исходящего. Принимает строки длительности в стиле Go, например "30s", "5m". |
enableConcurrency | bool | false | true | 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)
