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

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

Редактировать Назад к списку
Информация о сервере
Название: {{ server.name }}
Адрес: {{ server.address|default('-') }}
Группа: {% if server.group_name %} {{ server.group_name }} {% else %} - {% endif %}
Описание: {{ server.description|default('-') }}
Последние метрики: {% if server.last_metrics_at %} {{ server.last_metrics_at|date('d.m.Y H:i:s') }} {% else %} Нет данных {% endif %}
Период:
💡 Колёсико мыши = зум, перетаскивание = выделение области, Shift+колёсико = панорама
{% for metricName, metricData in metrics %} {% if metricName!="top_cpu_proc" and metricName!="top_ram_proc" and metricName!="disk_used" and not (metricName starts with "disk_used_") and not (metricName starts with "disk_total_gb_") and metricName!="ram_total_gb" and not (metricName starts with "net_in_") and not (metricName starts with "net_out_") %}
{{ metricName|replace({'_': ' ', 'load': 'загрузка', 'used': 'использование'})|title }} {% if metricData[0].unit %}({{ metricData[0].unit }}){% endif %}
{% if metricData %}

{{ metricData[0].value|round(2) }}{{ metricData[0].unit|default('') }}

{{ metricData[0].created_at|date('d.m.Y H:i:s') }}

{% else %}

Нет данных за этот период

{% endif %}
{% endif %} {% endfor %} {% if metrics|length == 0 %}
Нет данных о метриках за выбранный период
{% endif %}
{% set net_interfaces = [] %} {% for metricName in metrics|keys %} {% if metricName starts with 'net_in_' %} {% set iface = metricName|replace({'net_in_': ''}) %} {% set net_interfaces = net_interfaces|merge([iface]) %} {% endif %} {% endfor %} {% for iface in net_interfaces %} {% if metrics['net_in_' ~ iface] is defined and metrics['net_out_' ~ iface] is defined %}
Сеть: {{ iface }}
{% endif %} {% endfor %}
{% for metricName, metricData in metrics %} {% if metricName starts with 'disk_used_' and metricName != 'disk_used' %}
{% if metricName == 'disk_used_root' %}/ (корень) {% elseif metricName == 'disk_used_home' %}/home {% elseif metricName == 'disk_used_boot' %}/boot {% elseif metricName == 'disk_used_mnt_data' %}/mnt/data {% else %}{{ metricName|replace({'disk_used_': '', '_': ' '})|title }} {% endif %}
{% set pct = metricData[0].value|round(1) %} {% set iface = metricName|replace({'disk_used_': ''}) %} {% set totalGB = metrics['disk_total_gb_' ~ iface][0].value|default(0) %} {% set usedGB = (pct / 100 * totalGB)|round(1) %} {% set freeGB = (totalGB - usedGB)|round(1) %}
Свободно: {{ freeGB }} ГБ Занято: {{ usedGB }} ГБ

{{ pct }}% из {{ totalGB }} ГБ

{{ metricData[0].created_at|date('d.m.Y H:i') }}

{% endif %} {% endfor %}

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


{% if allServices is defined and allServices|length > 0 %} {# Сортируем сервисы: сначала running, потом stopped, потом unknown, затем по имени #} {% 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 %}
{{ metricType.name|replace({'_': ' ', 'load': 'загрузка', 'used': 'использование'})|title }} {% if metricType.unit %}({{ metricType.unit }}){% endif %}
%
%
мин
{% endfor %}
{% endblock %}