{% extends "django_observatory/base.html" %}{% load observatory %} {% block title %}Endpoints{% endblock %}{% block heading %}Endpoint performance{% endblock %} {% block sub %}Computed from every request (not affected by sampling). DB / external averages come from captured requests.{% endblock %} {% block tools %}{% include "django_observatory/_range.html" %}{% endblock %} {% block content %}
{% include "django_observatory/_chart.html" with title="Latency percentiles" id="p-lat" data=latency %} {% include "django_observatory/_chart.html" with title="Response time distribution" note="all requests" id="p-dist" data=distribution %}
{% include "django_observatory/_hbars.html" with title="Slowest endpoints" note="P95" bars=slowest mono=1 %} {% include "django_observatory/_hbars.html" with title="Where server time goes" note="requests × average duration" bars=time_share mono=1 %} {% include "django_observatory/_hbars.html" with title="Busiest endpoints" note="requests" bars=busiest mono=1 %} {% include "django_observatory/_hbars.html" with title="Highest error rate" note="HTTP 5xx" bars=failing mono=1 %}

All endpoints

{% for r in rows %} {% empty %}{% endfor %}
Route Requests{% if sort == 'count' %} ▼{% endif %} Errors{% if sort == 'errors' %} ▼{% endif %} Avg{% if sort == 'avg' %} ▼{% endif %} P50{% if sort == 'p50' %} ▼{% endif %} P95{% if sort == 'p95' %} ▼{% endif %} P99{% if sort == 'p99' %} ▼{% endif %} Max{% if sort == 'max' %} ▼{% endif %} Avg SQL{% if sort == 'db' %} ▼{% endif %} Avg external{% if sort == 'ext' %} ▼{% endif %}
{{ r.route }} {{ r.count }}{% if r.errors >= 5 %}{{ r.errors|floatformat:1 }}%{% else %}{{ r.errors|floatformat:1 }}%{% endif %} {{ r.avg|ms }}{{ r.p50|ms }}{{ r.p95|ms }}{{ r.p99|ms }}{{ r.max|ms }}{{ r.db|ms }}{{ r.ext|ms }}
No requests in this time range.
{% endblock %}