redactor
This commit is contained in:
@@ -1,111 +1,91 @@
|
||||
{% extends "base.html" %}
|
||||
{% set active_page = "" %}
|
||||
{% block title %}HAProxy • Statistics{% endblock %}
|
||||
{% block head %}
|
||||
{% endblock %}
|
||||
{% block breadcrumb %}<nav aria-label="breadcrumb" class="mb-3"><ol class="breadcrumb mb-0"><li class="breadcrumb-item"><a href="{{ url_for('main.index') }}"><i class="bi bi-house"></i></a></li><li class="breadcrumb-item active" aria-current="page">Statystyki</li></ol></nav>{% endblock %}
|
||||
{% block content %}
|
||||
<!-- Main Content -->
|
||||
<div class="container">
|
||||
<h1>
|
||||
<i class="fas fa-chart-line"></i> HAProxy Statistics
|
||||
</h1>
|
||||
|
||||
{% if stats %}
|
||||
<!-- Summary Cards -->
|
||||
<div class="row mb-4">
|
||||
<div class="col-md-3">
|
||||
<div class="card text-white bg-info summary-card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Total Frontends</h5>
|
||||
<h2>{{ stats|length }}</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card text-white bg-success summary-card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Total Connections</h5>
|
||||
<h2>{{ stats|map(attribute='conn_tot')|sum }}</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card text-white bg-warning summary-card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">4xx Errors</h5>
|
||||
<h2>{{ stats|map(attribute='4xx_errors')|sum }}</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card text-white bg-danger summary-card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">5xx Errors</h5>
|
||||
<h2>{{ stats|map(attribute='5xx_errors')|sum }}</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Statistics Table -->
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><i class="fas fa-code"></i> Frontend Name</th>
|
||||
<th><i class="fas fa-server"></i> Server Name</th>
|
||||
<th class="text-center">4xx Errors</th>
|
||||
<th class="text-center">5xx Errors</th>
|
||||
<th class="text-right">Bytes In (MB)</th>
|
||||
<th class="text-right">Bytes Out (MB)</th>
|
||||
<th class="text-center">Total Connections</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for stat in stats %}
|
||||
<tr>
|
||||
<td>
|
||||
<span class="badge bg-info">{{ stat.frontend_name }}</span>
|
||||
</td>
|
||||
<td>
|
||||
<span class="badge bg-secondary">{{ stat.server_name }}</span>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{% if stat['4xx_errors'] > 0 %}
|
||||
<span class="badge bg-warning">{{ stat['4xx_errors'] }}</span>
|
||||
{% else %}
|
||||
<span class="badge bg-success">{{ stat['4xx_errors'] }}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{% if stat['5xx_errors'] > 0 %}
|
||||
<span class="badge bg-danger">{{ stat['5xx_errors'] }}</span>
|
||||
{% else %}
|
||||
<span class="badge bg-success">{{ stat['5xx_errors'] }}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="text-right">{{ "%.2f"|format(stat.bytes_in_mb) }}</td>
|
||||
<td class="text-right">{{ "%.2f"|format(stat.bytes_out_mb) }}</td>
|
||||
<td class="text-center">
|
||||
<strong>{{ stat.conn_tot }}</strong>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="alert alert-info no-data">
|
||||
<i class="fas fa-info-circle"></i> No statistics available
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="vstack gap-3">
|
||||
{% if stats %}
|
||||
<div class="row g-3">
|
||||
<div class="col-md-3">
|
||||
<div class="card text-white bg-info">
|
||||
<div class="card-body">
|
||||
<h6 class="card-title">Frontendy</h6>
|
||||
<div class="fs-3 fw-bold">{{ stats|length }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card text-white bg-success">
|
||||
<div class="card-body">
|
||||
<h6 class="card-title">Połączenia</h6>
|
||||
<div class="fs-3 fw-bold">{{ stats|map(attribute='conn_tot')|sum }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card text-white bg-warning">
|
||||
<div class="card-body">
|
||||
<h6 class="card-title">Błędy 4xx</h6>
|
||||
<div class="fs-3 fw-bold">{{ stats|map(attribute='4xx_errors')|sum }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="card text-white bg-danger">
|
||||
<div class="card-body">
|
||||
<h6 class="card-title">Błędy 5xx</h6>
|
||||
<div class="fs-3 fw-bold">{{ stats|map(attribute='5xx_errors')|sum }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<p>© 2025 HAProxy Configurator. All rights reserved.</p>
|
||||
</footer>
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover align-middle">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><i class="fas fa-code"></i> Frontend</th>
|
||||
<th><i class="fas fa-server"></i> Serwer</th>
|
||||
<th class="text-center">4xx</th>
|
||||
<th class="text-center">5xx</th>
|
||||
<th class="text-end">Bytes In (MB)</th>
|
||||
<th class="text-end">Bytes Out (MB)</th>
|
||||
<th class="text-center">Connections</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for stat in stats %}
|
||||
<tr>
|
||||
<td><span class="badge bg-info">{{ stat.frontend_name }}</span></td>
|
||||
<td><span class="badge bg-secondary">{{ stat.server_name }}</span></td>
|
||||
<td class="text-center">
|
||||
{% if stat['4xx_errors'] > 0 %}
|
||||
<span class="badge bg-warning">{{ stat['4xx_errors'] }}</span>
|
||||
{% else %}
|
||||
<span class="badge bg-success">{{ stat['4xx_errors'] }}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{% if stat['5xx_errors'] > 0 %}
|
||||
<span class="badge bg-danger">{{ stat['5xx_errors'] }}</span>
|
||||
{% else %}
|
||||
<span class="badge bg-success">{{ stat['5xx_errors'] }}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="text-end">{{ "%.2f"|format(stat.bytes_in_mb) }}</td>
|
||||
<td class="text-end">{{ "%.2f"|format(stat.bytes_out_mb) }}</td>
|
||||
<td class="text-center"><strong>{{ stat.conn_tot }}</strong></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="alert alert-info"><i class="bi bi-info-circle me-1"></i>Brak statystyk.</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block scripts %}
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user