{% extends "django_observatory/base.html" %}{% load observatory %}
{% block title %}{{ req.method }} {{ req.path }}{% endblock %}{% block heading %}{{ req.method }} {{ req.path }}{% endblock %}
{% block sub %}Requests / {{ req.request_id }}{% endblock %}
{% block tools %}Open trace{% endblock %}
{% block content %}
Status
{{ req.status_code }}
Duration
{{ req.duration_ms|ms }}
SQL queries
{{ req.db_count }}
{{ req.db_ms|ms }}{% if req.slow_queries %} · {{ req.slow_queries }} slow{% endif %}
External calls
{{ req.ext_count }}
{{ req.ext_ms|ms }}
User
{{ req.username|default:"anonymous" }}
{{ req.ip_address }}
{% if why %}{{ why.question }}
Inference · {{ why.confidence }} confidencePrimary suspected cause: {{ why.suspect }}
Observed evidence{% for f in why.facts %}- {{ f }}
{% endfor %}
{% endif %}
Latency breakdown
{% for b in breakdown %}
{{ b.label }}
{{ b.text }} · {{ b.pct|floatformat:0 }}%
{% endfor %}
Timeline
{% include "django_observatory/_waterfall.html" %}
{% if exceptions %}{% endif %}
{% if externals %}External calls
| Service | Call | Status | Duration | Outcome |
{% for e in externals %}| {{ e.service }} | {{ e.method }} {{ e.host }}{{ e.path }} | {% if e.status_code %}{{ e.status_code }}{% else %}–{% endif %} | {{ e.duration_ms|ms }} |
{% if e.timeout %}TIMEOUT{% elif e.error %}{{ e.exc_type|default:"ERROR" }}{% else %}OK{% endif %} |
{% endfor %}
{% endif %}
{% if queries %}SQL ({{ queries|length }} captured of {{ req.db_count }})
| Duration | Database | Statement | |
{% for q in queries %}| {{ q.duration_ms|ms }} | {{ q.alias }} | {{ q.sql|truncatechars:400 }} |
{% if q.is_slow %}SLOW{% endif %}{% if not q.success %}FAILED{% endif %} all |
{% endfor %}
{% endif %}
{% if logs %}{% endif %}
{% if security or audits %}Security & audit
{% for s in security %}| {{ s.event }} | {{ s.username }} | {{ s.resource }} | {{ s.reason }} |
{% endfor %}
{% for a in audits %}| AUDIT {{ a.action }} | {{ a.username }} | {{ a.object_type }} #{{ a.object_id }} | {{ a.result }} |
{% endfor %}
{% endif %}
Relationships
{{ graph|json_script:"g-req" }}
Overview
- Time
- Route
- {{ req.route|default:"(unmatched)" }}
- View
- {{ req.view_module }}.{{ req.view_name }}
- Trace ID
- {{ req.trace_id }}
- Response
- {{ req.content_type|default:"–" }}{% if req.response_size != None %} · {{ req.response_size|filesizeformat }}{% endif %}
- User agent
- {{ req.user_agent|default:"–" }}
- Referrer
- {{ req.referrer|default:"–" }}
- Deployment
- {{ req.service }} · {{ req.environment }}{% if req.release %} · {{ req.release }}{% endif %}
{% if req.query_params %}- Query
{{ req.query_params|pretty }} {% endif %}
{% if req.metadata %}- Metadata
{{ req.metadata|pretty }} {% endif %}
Request headers (sensitive values redacted)
{% for k, v in req.headers.items %}- {{ k }}
- {{ v }}
{% empty %}- Header capture is disabled.
{% endfor %}
{% endblock %}