| | | 1 | | @model OzonOrdersWeb.Areas.Studio2.ViewModels.JobLogs.JobLogsServerDiagnosticsTabViewModel |
| | | 2 | | @{ |
| | 0 | 3 | | var s = Model.Snapshot; |
| | 0 | 4 | | static string Size(long bytes) => bytes <= 0 ? "—" : bytes switch |
| | 0 | 5 | | { |
| | 0 | 6 | | >= 1_073_741_824 => $"{bytes / 1_073_741_824d:N1} ГБ", |
| | 0 | 7 | | >= 1_048_576 => $"{bytes / 1_048_576d:N1} МБ", |
| | 0 | 8 | | _ => $"{bytes / 1024d:N1} КБ" |
| | 0 | 9 | | }; |
| | 0 | 10 | | static string Rate(long? bytes) => bytes.HasValue ? $"{Size(bytes.Value)}/с" : "Обновите ещё раз"; |
| | 0 | 11 | | var diskUsedPercent = s.DiskTotalBytes > 0 ? (s.DiskTotalBytes - s.DiskFreeBytes) * 100d / s.DiskTotalBytes : 0; |
| | | 12 | | } |
| | | 13 | | |
| | | 14 | | <div class="job-logs-panel card mb-3 server-diag-panel"> |
| | | 15 | | <div class="card-header py-3 d-flex justify-content-between align-items-center flex-wrap gap-2"> |
| | | 16 | | <div> |
| | | 17 | | <strong><i class="fas fa-server text-primary me-1"></i>Сервер и база данных</strong> |
| | | 18 | | <div class="small text-muted">Снимок состояния приложения и MariaDB без записи в базу</div> |
| | | 19 | | </div> |
| | | 20 | | <a class="btn btn-sm btn-outline-primary" href="/Studio2/JobLogs?tab=server"> |
| | | 21 | | <i class="fas fa-sync-alt me-1"></i>Обновить |
| | | 22 | | </a> |
| | | 23 | | </div> |
| | | 24 | | <div class="card-body"> |
| | 0 | 25 | | @if (!string.IsNullOrWhiteSpace(s.DatabaseError)) |
| | | 26 | | { |
| | | 27 | | <div class="alert alert-danger d-flex gap-2" role="alert"> |
| | | 28 | | <i class="fas fa-triangle-exclamation mt-1"></i> |
| | 0 | 29 | | <div><strong>MariaDB недоступна.</strong><br />@s.DatabaseError</div> |
| | | 30 | | </div> |
| | | 31 | | } |
| | | 32 | | |
| | | 33 | | <div class="job-logs-intro"> |
| | | 34 | | <i class="fas fa-circle-info"></i> |
| | 0 | 35 | | <div>Скорость чтения и записи MariaDB рассчитывается по разнице серверных счётчиков между двумя обновлениями |
| | | 36 | | </div> |
| | | 37 | | |
| | | 38 | | <h2 class="server-diag-section-title">Приложение и сервер</h2> |
| | | 39 | | <div class="row row-cols-1 row-cols-md-2 row-cols-xl-4 g-2 mb-4"> |
| | 0 | 40 | | <div class="col"><div class="server-diag-card h-100"><span>Статус</span><strong><span class="badge bg-succes |
| | 0 | 41 | | <div class="col"><div class="server-diag-card h-100"><span>Средняя загрузка CPU</span><strong>@s.ProcessCpuP |
| | 0 | 42 | | <div class="col"><div class="server-diag-card h-100"><span>Память приложения</span><strong>@Size(s.ProcessMe |
| | 0 | 43 | | <div class="col"><div class="server-diag-card h-100"><span>Диск приложения</span><strong>@Size(s.DiskFreeByt |
| | | 44 | | </div> |
| | | 45 | | |
| | | 46 | | <h2 class="server-diag-section-title">MariaDB</h2> |
| | | 47 | | <div class="row row-cols-1 row-cols-md-2 row-cols-xl-4 g-2"> |
| | 0 | 48 | | <div class="col"><div class="server-diag-card h-100"><span>Статус и ответ</span><strong><span class="badge @ |
| | 0 | 49 | | <div class="col"><div class="server-diag-card h-100"><span>Размер схемы</span><strong>@Size(s.DatabaseSizeBy |
| | 0 | 50 | | <div class="col"><div class="server-diag-card h-100"><span>Чтение / запись</span><strong>@Rate(s.DatabaseRea |
| | 0 | 51 | | <div class="col"><div class="server-diag-card h-100"><span>Подключения / нагрузка</span><strong>@s.DatabaseC |
| | 0 | 52 | | <div class="col"><div class="server-diag-card h-100"><span>Медленные запросы</span><strong>@s.DatabaseSlowQu |
| | 0 | 53 | | <div class="col"><div class="server-diag-card h-100 @(s.FailedJobsLast24Hours > 0 ? "server-diag-card-alert" |
| | | 54 | | </div> |
| | | 55 | | </div> |
| | | 56 | | </div> |