10981098 </ span >
10991099 </ a >
11001100
1101+ < nav class ="md-nav " aria-label ="Prometheus Metrics ">
1102+ < ul class ="md-nav__list ">
1103+
1104+ < li class ="md-nav__item ">
1105+ < a href ="#dc-latency-probes " class ="md-nav__link ">
1106+ < span class ="md-ellipsis ">
1107+
1108+ DC Latency Probes
1109+
1110+ </ span >
1111+ </ a >
1112+
1113+ </ li >
1114+
1115+ </ ul >
1116+ </ nav >
1117+
11011118</ li >
11021119
11031120 < li class ="md-nav__item ">
15371554 </ span >
15381555 </ a >
15391556
1557+ < nav class ="md-nav " aria-label ="Prometheus Metrics ">
1558+ < ul class ="md-nav__list ">
1559+
1560+ < li class ="md-nav__item ">
1561+ < a href ="#dc-latency-probes " class ="md-nav__link ">
1562+ < span class ="md-ellipsis ">
1563+
1564+ DC Latency Probes
1565+
1566+ </ span >
1567+ </ a >
1568+
1569+ </ li >
1570+
1571+ </ ul >
1572+ </ nav >
1573+
15401574</ li >
15411575
15421576 < li class ="md-nav__item ">
@@ -1596,6 +1630,40 @@ <h2 id="prometheus-metrics">Prometheus Metrics<a class="headerlink" href="#prome
15961630</ code > </ pre > </ div >
15971631< p > Returns Prometheus exposition format on the same stats port. Includes per-secret metrics when labels are configured.</ p >
15981632< p > Available metrics include connection counts, per-secret connections, rejection counts, and IP ACL rejections.</ p >
1633+ < h3 id ="dc-latency-probes "> DC Latency Probes< a class ="headerlink " href ="#dc-latency-probes " title ="Permanent link "> ¶</ a > </ h3 >
1634+ < p > When enabled, teleproxy periodically probes all 5 Telegram DCs with a TCP handshake and exposes the results as a Prometheus histogram:</ p >
1635+ < div class ="highlight "> < pre > < span > </ span > < code > < a id ="__codelineno-3-1 " name ="__codelineno-3-1 " href ="#__codelineno-3-1 "> </ a > < span class ="c1 "> # Enable with 30-second probe interval</ span >
1636+ < a id ="__codelineno-3-2 " name ="__codelineno-3-2 " href ="#__codelineno-3-2 "> </ a > ./teleproxy< span class ="w "> </ span > ...< span class ="w "> </ span > --dc-probe-interval< span class ="w "> </ span > < span class ="m "> 30</ span >
1637+ </ code > </ pre > </ div >
1638+ < p > Metrics exposed:</ p >
1639+ < table >
1640+ < thead >
1641+ < tr >
1642+ < th > Metric</ th >
1643+ < th > Type</ th >
1644+ < th > Description</ th >
1645+ </ tr >
1646+ </ thead >
1647+ < tbody >
1648+ < tr >
1649+ < td > < code > teleproxy_dc_latency_seconds</ code > </ td >
1650+ < td > histogram</ td >
1651+ < td > TCP handshake RTT per DC (labels: < code > dc="1"</ code > ..< code > dc="5"</ code > )</ td >
1652+ </ tr >
1653+ < tr >
1654+ < td > < code > teleproxy_dc_probe_failures_total</ code > </ td >
1655+ < td > counter</ td >
1656+ < td > Failed probe attempts per DC</ td >
1657+ </ tr >
1658+ < tr >
1659+ < td > < code > teleproxy_dc_latency_last_seconds</ code > </ td >
1660+ < td > gauge</ td >
1661+ < td > Most recent probe latency per DC</ td >
1662+ </ tr >
1663+ </ tbody >
1664+ </ table >
1665+ < p > The text < code > /stats</ code > endpoint includes matching fields: < code > dc_probe_interval</ code > , < code > dcN_probe_latency_last</ code > , < code > dcN_probe_latency_avg</ code > , < code > dcN_probe_count</ code > , < code > dcN_probe_failures</ code > .</ p >
1666+ < p > Disabled by default. Set < code > dc_probe_interval</ code > in the TOML config or use the < code > DC_PROBE_INTERVAL</ code > environment variable in Docker.</ p >
15991667< h2 id ="grafana-dashboard "> Grafana Dashboard< a class ="headerlink " href ="#grafana-dashboard " title ="Permanent link "> ¶</ a > </ h2 >
16001668< p > Import the < a href ="https://github.com/teleproxy/teleproxy/blob/main/dashboards/teleproxy.json "> bundled dashboard</ a > into Grafana:</ p >
16011669< ol >
@@ -1606,7 +1674,7 @@ <h2 id="grafana-dashboard">Grafana Dashboard<a class="headerlink" href="#grafana
16061674< p > The dashboard covers connections, per-secret usage, rejection rates, DC connectivity, and resource utilization.</ p >
16071675< h2 id ="health-checks "> Health Checks< a class ="headerlink " href ="#health-checks " title ="Permanent link "> ¶</ a > </ h2 >
16081676< p > Docker containers include built-in health monitoring via the stats endpoint. Check with:</ p >
1609- < div class ="highlight "> < pre > < span > </ span > < code > < a id ="__codelineno-3 -1 " name ="__codelineno-3 -1 " href ="#__codelineno-3 -1 "> </ a > docker< span class ="w "> </ span > ps< span class ="w "> </ span > < span class ="c1 "> # STATUS column shows health</ span >
1677+ < div class ="highlight "> < pre > < span > </ span > < code > < a id ="__codelineno-4 -1 " name ="__codelineno-4 -1 " href ="#__codelineno-4 -1 "> </ a > docker< span class ="w "> </ span > ps< span class ="w "> </ span > < span class ="c1 "> # STATUS column shows health</ span >
16101678</ code > </ pre > </ div >
16111679
16121680
0 commit comments