Skip to content

Overhaul stats: UDP tracker core metrics don't match the corresponding UDP tracker server metrics #1439

@josecelano

Description

@josecelano

I've deployed the new metrics to the Torrust Demo tracker.

We are emitting metrics from the:

  • UDP Tracker Cerver
  • UDP Tracker Core

Some metrics should have the same value. For example, the number of announce requests received. However, they don't match:

UDP tracker Core

udp_tracker_core_connect_requests_received_total{server_binding_ip="0.0.0.0",server_binding_port="6868",server_binding_protocol="udp"} 1414

udp_tracker_core_announce_requests_received_total{server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 9855098
udp_tracker_core_connect_requests_received_total{server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 3085603
udp_tracker_core_scrape_requests_received_total{server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 377400

UDP Tracker Server

udp_tracker_server_requests_received_total{server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 66
udp_tracker_server_requests_banned_total{server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 1

udp_tracker_server_requests_accepted_total{kind="announce",server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 32
udp_tracker_server_requests_accepted_total{kind="connect",server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 19

udp_tracker_server_responses_sent_total{kind="",result="ok",server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 32
udp_tracker_server_responses_sent_total{kind="connect",result="ok",server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 19

udp_tracker_server_errors_total{server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 32
udp_tracker_server_performance_avg_connect_processing_time_ns{server_binding_ip="0.0.0.0",server_binding_port="6969",server_binding_protocol="udp"} 45029

Problems:

  • udp_tracker_server_requests_received_total is fixed and low compared with any of the "received" counters in the UDP tracker core.
  • The UDP tracker server is not generating metrics for the second tracker in port 6868.

Notes:

  • It's weird that the server does not track the request, but the requests reach the track core.

It could be related to a bug described here. However, that bug should only affect the counters for sent responses.

I haven't been able to reproduce it locally yet.

How to run a manual test in development

  1. Run the tracker
  2. Use the tracker client to make requests

For example:

cargo run -p torrust-tracker-client --bin http_tracker_client announce http://127.0.0.1:7070 443c7602b4fde83d1154d6d9da48808418b181b6 | jq
cargo run -p torrust-tracker-client --bin http_tracker_client scrape http://127.0.0.1:7070 443c7602b4fde83d1154d6d9da48808418b181b6 | jq
cargo run -p torrust-tracker-client --bin udp_tracker_client announce udp://127.0.0.1:6969 443c7602b4fde83d1154d6d9da48808418b181b6 | jq
cargo run -p torrust-tracker-client --bin udp_tracker_client scrape udp://127.0.0.1:6969 443c7602b4fde83d1154d6d9da48808418b181b6 | jq
  1. Load the metrics

JSON format:

curl "http://127.0.0.1:1212/api/v1/metrics?token=MyAccessToken&format=json" | jq

Prometheus format:

curl "http://127.0.0.1:1212/api/v1/metrics?token=MyAccessToken&format=prometheus" | sort

Metadata

Metadata

Assignees

Labels

BugIncorrect Behavior

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions