feat: Fix CPU tooltip, add uptime widget, exclude uptime from charts
- Fix CPU tooltip to show percentage value - Add uptime widget to server detail page (right column) - Exclude uptime metric from charts in two places
This commit is contained in:
parent
cb74973a90
commit
3fecc21565
|
|
@ -206,6 +206,7 @@ class ServerDetailController extends Model
|
||||||
FROM metric_names mn
|
FROM metric_names mn
|
||||||
JOIN server_metrics sm ON sm.metric_name_id = mn.id
|
JOIN server_metrics sm ON sm.metric_name_id = mn.id
|
||||||
WHERE sm.server_id = :id
|
WHERE sm.server_id = :id
|
||||||
|
AND mn.name != 'uptime'
|
||||||
AND (
|
AND (
|
||||||
mn.name IN ('cpu_load', 'ram_used')
|
mn.name IN ('cpu_load', 'ram_used')
|
||||||
OR mn.name LIKE 'disk_used_%'
|
OR mn.name LIKE 'disk_used_%'
|
||||||
|
|
@ -315,6 +316,7 @@ class ServerDetailController extends Model
|
||||||
FROM metric_names mn
|
FROM metric_names mn
|
||||||
JOIN server_metrics sm ON sm.metric_name_id = mn.id
|
JOIN server_metrics sm ON sm.metric_name_id = mn.id
|
||||||
WHERE sm.server_id = :id
|
WHERE sm.server_id = :id
|
||||||
|
AND mn.name != 'uptime'
|
||||||
AND (
|
AND (
|
||||||
mn.name IN ('cpu_load', 'ram_used')
|
mn.name IN ('cpu_load', 'ram_used')
|
||||||
OR mn.name LIKE 'disk_used_%'
|
OR mn.name LIKE 'disk_used_%'
|
||||||
|
|
|
||||||
|
|
@ -24,9 +24,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<!-- Информация о сервере -->
|
<!-- Информация о сервере и аптайм -->
|
||||||
<div class="row mb-4">
|
<div class="row mb-4">
|
||||||
<div class="col-md-6">
|
<div class="col-md-8">
|
||||||
<h5>Информация о сервере</h5>
|
<h5>Информация о сервере</h5>
|
||||||
<table class="table table-borderless">
|
<table class="table table-borderless">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -63,6 +63,37 @@
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-md-4">
|
||||||
|
<div class="card border-primary h-100">
|
||||||
|
<div class="card-header bg-primary text-white">
|
||||||
|
<h6 class="mb-0"><i class="fas fa-clock"></i> Время работы</h6>
|
||||||
|
</div>
|
||||||
|
<div class="card-body text-center d-flex flex-column justify-content-center">
|
||||||
|
{% if server.latest_metrics.uptime is defined %}
|
||||||
|
{% set uptime_sec = server.latest_metrics.uptime.value %}
|
||||||
|
<div class="mb-2">
|
||||||
|
{% if uptime_sec >= 86400 %}
|
||||||
|
<span class="badge bg-success fs-6 me-1">{{ (uptime_sec / 86400)|round(0, 'floor') }}д</span>
|
||||||
|
{% endif %}
|
||||||
|
{% if uptime_sec >= 3600 %}
|
||||||
|
<span class="badge bg-info fs-6 me-1">{{ ((uptime_sec % 86400) / 3600)|round(0, 'floor') }}ч</span>
|
||||||
|
{% endif %}
|
||||||
|
{% if uptime_sec >= 60 %}
|
||||||
|
<span class="badge bg-secondary fs-6">{{ ((uptime_sec % 3600) / 60)|round(0, 'floor') }}м</span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<small class="text-muted">
|
||||||
|
<i class="fas fa-play"></i> {{ server.created_at|date('d.m.Y H:i') }}
|
||||||
|
</small>
|
||||||
|
{% else %}
|
||||||
|
<div class="text-muted">
|
||||||
|
<i class="fas fa-clock fa-2x mb-2"></i>
|
||||||
|
<p class="mb-0">Нет данных</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Вкладки -->
|
<!-- Вкладки -->
|
||||||
|
|
@ -750,8 +781,8 @@ const chart{{ metricName|replace({'-': '_', '.': '_'}) }} = new Chart(ctx{{ metr
|
||||||
lines.push('Занято: ' + diskUsed + ' ГБ');
|
lines.push('Занято: ' + diskUsed + ' ГБ');
|
||||||
lines.push('Свободно: ' + diskFree + ' ГБ');
|
lines.push('Свободно: ' + diskFree + ' ГБ');
|
||||||
{% else %}
|
{% else %}
|
||||||
lines.push('Значение: ' + data{{ metricName }}[dataIndex]);
|
|
||||||
{% if metricName == 'cpu_load' %}
|
{% if metricName == 'cpu_load' %}
|
||||||
|
lines.push('CPU: ' + data{{ metricName }}[dataIndex] + '%');
|
||||||
if (data.top_cpu && data.top_cpu.length > 0) {
|
if (data.top_cpu && data.top_cpu.length > 0) {
|
||||||
lines.push('');
|
lines.push('');
|
||||||
lines.push('TOP CPU:');
|
lines.push('TOP CPU:');
|
||||||
|
|
@ -759,6 +790,8 @@ const chart{{ metricName|replace({'-': '_', '.': '_'}) }} = new Chart(ctx{{ metr
|
||||||
lines.push(' ' + ((proc.cmdline || '').trim() || proc.name) + ': ' + proc.value + '%');
|
lines.push(' ' + ((proc.cmdline || '').trim() || proc.name) + ': ' + proc.value + '%');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
{% else %}
|
||||||
|
lines.push('Значение: ' + data{{ metricName }}[dataIndex]);
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue