1
0
mirror of https://github.com/XTLS/Xray-docs-next.git synced 2025-08-27 22:05:48 +00:00
Xray-docs-next/docs/ru/config/metrics.md
2024-12-13 22:29:39 +03:00

288 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Метрики
Данное руководство описывает более простой и эффективный способ настройки экспорта статистических данных для Marzban. Использование метрик позволяет администраторам системы отслеживать производительность и состояние сети, а также быстро выявлять и решать возникающие проблемы.
## Связанные настройки
### Добавление входящего подключения `metrics`
Для настройки экспорта метрик необходимо добавить входящее подключение `metrics` в раздел `inbounds` конфигурационного файла. Это подключение будет слушать на локальном интерфейсе и порту, что обеспечит безопасность доступа к метрикам.
```json
"inbounds": [
{
"listen": "127.0.0.1",
"port": 11111,
"protocol": "dokodemo-door",
"settings": {
"address": "127.0.0.1"
},
"tag": "metrics_in"
}
]
```
### Добавление правила маршрутизации
Для правильной маршрутизации трафика, поступающего на входящее подключение `metrics`, необходимо добавить правило маршрутизации в раздел `routing`. Это правило направит трафик, поступающий на тег `metrics_in`, на тег `metrics_out`.
```json
"routing": {
"rules": [
{
"type": "field",
"inboundTag": [
"metrics_in"
],
"outboundTag": "metrics_out"
}
]
}
```
### Добавление метрик в основные настройки
Для активации метрик необходимо добавить раздел `metrics` в основные настройки конфигурационного файла. Это позволит системе собирать и экспортировать метрики.
```json
"metrics": {
"tag": "metrics_out"
}
```
## Использование
### pprof
Для профилирования и просмотра запущенных горутин можно использовать встроенный инструмент `pprof`. Откройте браузер и перейдите по адресу `http://127.0.0.1:11111/debug/pprof/` или используйте утилиту `go tool pprof` для более детального анализа.
### expvars
Для просмотра текущих метрик и состояния системы можно использовать экспортные переменные (`expvars`). Откройте браузер и перейдите по адресу `http://127.0.0.1:11111/debug/vars`.
Экспортируемые переменные включают:
- `stats` — статистика по входящим, исходящим подключениям и пользователям.
- `observatory` — результаты мониторинга.
Пример данных, полученных с помощью [luci-app-xray](https://github.com/yichya/luci-app-xray):
<details><summary>Показать</summary><br>
```json
{
"observatory": {
"tcp_outbound": {
"alive": true,
"delay": 782,
"outbound_tag": "tcp_outbound",
"last_seen_time": 1648477189,
"last_try_time": 1648477189
},
"udp_outbound": {
"alive": true,
"delay": 779,
"outbound_tag": "udp_outbound",
"last_seen_time": 1648477191,
"last_try_time": 1648477191
}
},
"stats": {
"inbound": {
"api": {
"downlink": 0,
"uplink": 0
},
"dns_server_inbound_5300": {
"downlink": 14286,
"uplink": 5857
},
"http_inbound": {
"downlink": 74460,
"uplink": 10231
},
"https_inbound": {
"downlink": 0,
"uplink": 0
},
"metrics": {
"downlink": 6327,
"uplink": 1347
},
"socks_inbound": {
"downlink": 19925615,
"uplink": 5512
},
"tproxy_tcp_inbound": {
"downlink": 4739161,
"uplink": 1568869
},
"tproxy_udp_inbound": {
"downlink": 0,
"uplink": 2608142
}
},
"outbound": {
"blackhole_outbound": {
"downlink": 0,
"uplink": 0
},
"direct": {
"downlink": 97714548,
"uplink": 3234617
},
"dns_server_outbound": {
"downlink": 7116,
"uplink": 2229
},
"manual_tproxy_outbound_tcp_1": {
"downlink": 0,
"uplink": 0
},
"manual_tproxy_outbound_udp_1": {
"downlink": 0,
"uplink": 0
},
"tcp_outbound": {
"downlink": 23873238,
"uplink": 1049595
},
"udp_outbound": {
"downlink": 639282,
"uplink": 74634
}
},
"user": {}
}
}
```
</details>
### Визуализация данных с помощью Netdata
Для лучшей визуализации данных и мониторинга можно использовать систему мониторинга [Netdata](https://github.com/netdata/netdata) с плагином python.d. Netdata предоставляет интерактивные графики, которые облегчают анализ и отслеживание метрик.
1. Отредактируйте соответствующий файл конфигурации Netdata:
```sh
sudo /etc/netdata/edit-config python.d/go_expvar.conf
```
2. Используйте следующий файл конфигурации в качестве примера:
<details><summary>Показать</summary><br>
```
xray:
name: 'xray'
update_every: 2
url: 'http://127.0.0.1:11111/debug/vars'
collect_memstats: false
extra_charts:
- id: 'inbounds'
options:
name: 'inbounds'
title: 'Xray System Inbounds'
units: bytes
family: xray
context: xray.inbounds
chart_type: line
lines:
- expvar_key: stats.inbound.tproxy_tcp_inbound.downlink
id: 'tcp.downlink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.inbound.tproxy_udp_inbound.downlink
id: 'udp.downlink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.inbound.http_inbound.downlink
id: 'http.downlink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.inbound.https_inbound.downlink
id: 'https.downlink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.inbound.socks_inbound.downlink
id: 'socks.downlink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.inbound.tproxy_tcp_inbound.uplink
id: 'tcp.uplink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.inbound.tproxy_udp_inbound.uplink
id: 'udp.uplink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.inbound.http_inbound.uplink
id: 'http.uplink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.inbound.https_inbound.uplink
id: 'https.uplink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.inbound.socks_inbound.uplink
id: 'socks.uplink'
algorithm: incremental
expvar_type: int
- id: 'outbounds'
options:
name: 'outbounds'
title: 'Xray System Outbounds'
units: bytes
family: xray
context: xray.outbounds
chart_type: line
lines:
- expvar_key: stats.outbound.tcp_outbound.downlink
id: 'tcp.downlink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.outbound.udp_outbound.downlink
id: 'udp.downlink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.outbound.direct.downlink
id: 'direct.downlink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.outbound.tcp_outbound.uplink
id: 'tcp.uplink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.outbound.udp_outbound.uplink
id: 'udp.uplink'
algorithm: incremental
expvar_type: int
- expvar_key: stats.outbound.direct.uplink
id: 'direct.uplink'
algorithm: incremental
expvar_type: int
- id: 'observatory'
options:
name: 'observatory'
title: 'Xray Observatory Metrics'
units: milliseconds
family: xray
context: xray.observatory
chart_type: line
lines:
- expvar_key: observatory.tcp_outbound.delay
id: tcp
expvar_type: int
- expvar_key: observatory.udp_outbound.delay
id: udp
expvar_type: int
```
</details>
Таким образом вы получите красивый график, подобный этому:
![160428235-2988bf69-5d6c-41ec-8267-1bd512508aa8](https://github.com/chika0801/Xray-docs-next/assets/88967758/455e88ce-ced2-4593-a9fa-425bb293215b)
### Дополнительные сведения
Возможно, что для некоторых сценариев лучше использовать пустой объект `stats` в конфигурационном файле, чем добавлять `metrics`. Это может упростить конфигурацию и сделать ее более безопасной, так как пустой объект `stats` не требует отдельного входящего подключения и правила маршрутизации.