{% extends "layout.twig" %} {% block content %}

{{ server.name }} {% if server.group_name %} {{ server.group_name }} {% endif %}

Редактировать Назад к списку
Период отображения
Последняя метрика
{% if server.last_seen %} {{ server.last_seen|date('d.m.Y H:i:s') }} {% else %} Нет данных {% endif %}
Аптайм
{% if uptimeText %} {{ uptimeText }} {% else %} Нет данных {% endif %}
{% if latestUptime and latestUptime.created_at %}
{{ latestUptime.created_at|date('d.m.Y H:i:s') }}
{% endif %}
Выбранный период
{{ totalMinutes }} мин
{{ period }}{% if zoom %}, zoom: {{ zoom }}{% endif %}
{% if not displayMetrics or displayMetrics is empty %}
Метрики для отображения не выбраны. Настройте их в редактировании сервера.
{% else %} {% if simpleMetricCharts is empty and networkCharts is empty and temperatureChart.datasets is empty and diskCharts is empty %}
Нет данных для выбранных метрик за указанный период.
{% endif %} {% for chart in simpleMetricCharts %}
{{ chart.title }}
{{ chart.lastValue }}{{ chart.unit }}
{{ chart.lastTime }}
{% endfor %} {% for chart in networkCharts %}
{{ chart.title }}
{% endfor %}
Температуры
{% if temperatureChart.datasets is not empty %}
{% else %}
Температурные датчики не выбраны или по ним нет данных.
{% endif %}
{% if diskCharts is not empty %} {% for disk in diskCharts %}
{{ disk.title }}
{{ disk.percent }}%
{% if disk.totalGb %}
Всего: {{ disk.totalGb }} ГБ
Занято: {{ disk.usedGb }} ГБ | Свободно: {{ disk.freeGb }} ГБ
{% endif %}
{{ disk.updatedAt }}
{% endfor %} {% elseif displayMetrics|filter(v => v starts with 'disk_used_')|length > 0 %}
Данные по дискам выбраны, но за этот период не найдены.
{% endif %}
{% endif %}

Сервисы сервера {% if allServices is defined %} (найдено: {{ allServices|length }}) {% endif %}


{% if allServices is defined and allServices|length > 0 %} {% set runningServices = allServices|filter(s => s.status == 'running')|sort((a, b) => a.service_name|lower > b.service_name|lower) %} {% set stoppedServices = allServices|filter(s => s.status == 'stopped')|sort((a, b) => a.service_name|lower > b.service_name|lower) %} {% set unknownServices = allServices|filter(s => s.status != 'running' and s.status != 'stopped')|sort((a, b) => a.service_name|lower > b.service_name|lower) %} {% for service in runningServices %}
running
Load: {{ service.load_state|default('-') }} | Active: {{ service.active_state|default('-') }}
{% endfor %} {% for service in stoppedServices %}
stopped
Load: {{ service.load_state|default('-') }} | Active: {{ service.active_state|default('-') }}
{% endfor %} {% for service in unknownServices %}
unknown
Load: {{ service.load_state|default('-') }} | Active: {{ service.active_state|default('-') }}
{% endfor %} {% else %}
Агент не отправил список сервисов или не установлен
{% endif %}

Настройка порогов

0 = алерт сразу при превышении, >0 = алерт только если превышено дольше указанного времени. Оставьте поле пустым для отключения порога.

{% for metricType in allMetricTypes %} {% set metricUnit = '%' %} {% set metricLabel = metricType.name %} {% if metricType.name starts with 'temp_' %} {% set metricUnit = '°C' %} {% set metricLabel = 'Температура ' ~ (metricType.name|replace({'temp_': '', '_': ' '}))|title %} {% elseif metricType.name == 'cpu_load' %} {% set metricLabel = 'Загрузка CPU' %} {% elseif metricType.name == 'ram_used' %} {% set metricLabel = 'Использование RAM' %} {% elseif metricType.name starts with 'disk_used_' %} {% set iface = metricType.name|replace({'disk_used_': ''}) %} {% if iface == 'root' %}{% set metricLabel = 'Диск (корень /)' %} {% elseif iface == 'home' %}{% set metricLabel = 'Диск (/home)' %} {% elseif iface == 'boot' %}{% set metricLabel = 'Диск (/boot)' %} {% elseif iface == 'mnt_data' %}{% set metricLabel = 'Диск (/mnt/data)' %} {% else %}{% set metricLabel = 'Диск (/' ~ (iface|replace({'_': '/'})) ~ ')' %} {% endif %} {% elseif metricType.name starts with 'net_in_' %} {% set iface = metricType.name|replace({'net_in_': ''}) %} {% set metricLabel = 'Сеть входящая (' ~ iface ~ ')' %} {% elseif metricType.name starts with 'net_out_' %} {% set iface = metricType.name|replace({'net_out_': ''}) %} {% set metricLabel = 'Сеть исходящая (' ~ iface ~ ')' %} {% endif %}
{{ metricLabel }} ({{ metricUnit }})
{{ metricUnit }}
{{ metricUnit }}
мин
{% endfor %}
{% endblock %}