{% extends 'base.html' %} {% block content %}

Nginx Monitor Live

{{ nginx_settings.source_display }}

{% if nginx_settings.last_fetch_at %}Last: {{ nginx_settings.last_fetch_at|timesince }} ago{% else %}No ingestion yet{% endif %} ·
{% for rkey, rlabel in all_ranges %} {{ rlabel|slice:"5:" }} {% endfor %}
{% csrf_token %}
{% csrf_token %}
New Alert Profile Settings
{% for msg in messages %}
{{ msg }}
{% endfor %}
{% with s=stats %}
Requests
{{ s.total }}
Errors
{{ s.errors }}
Unique IPs
{{ s.unique_ips }}
Avg Response
{{ s.avg_resp_ms }} ms
{% endwith %}
{{ range_label }}
Status codes — {{ range_label }}
Top Paths — {{ range_label }}
Traffic by Region — {{ range_label }}
Top IPs — {{ range_label }}
{% for ip in top_ips %} {% empty %} {% endfor %}
IP Location Reqs Errors
{% if ip.city or ip.country %}{{ ip.city }}{% if ip.city and ip.country %}, {% endif %}{{ ip.country }}{% else %}—{% endif %} {{ ip.count }} {{ ip.errors }}
No data yet
Top Services — {{ range_label }}
{% for svc in top_services %} {% empty %} {% endfor %}
Service Requests
{% if svc.service %}{% else %}—{% endif %} {{ svc.count }}
No data yet
{% if profiles %}
Alert Profiles
+ New
{% for p in profiles %}
{{ p.name }} window {{ p.alert_window_seconds }}s • max {{ p.alert_max_requests }} req • {{ p.alert_max_error_rate|floatformat:0 }}% err rate
{% csrf_token %}
Edit Delete
{% endfor %}
{% endif %}
Threat Alerts {% if active_alerts %}{{ active_alerts }}{% endif %}
{% include 'nginxmon/_alerts.html' %}
Live Access Log
Auto-refreshes every 5s • last 60 entries
{% include 'nginxmon/_live_logs.html' %}
Time IP Method Path Status

Banned IPs

{{ banned_ips|length }}
{% if banned_ips %}
{% for ban in banned_ips %} {% endfor %}
IP Source Reason Requests
{{ ban.get_ban_source_display }} {{ ban.reason }} {{ ban.request_count }} {% if ban.is_unbanned %} Unbanned {% else %}
{% csrf_token %}
{% endif %}
{% else %}
No IPs banned yet.
{% endif %}
{% endblock %}