设备
{{ maintenanceReport.summary.devices }}
健康
{{ maintenanceReport.summary.healthy_devices }}
问题
{{ maintenanceReport.summary.issues.total }}
隧道
{{ maintenanceReport.summary.tunnels }}
路由
{{ maintenanceReport.summary.routes }}
真实网段冲突
{{ maintenanceReport.summary.hard_subnet_overlaps }}
脚本 / 计划
{{ maintenanceReport.summary.scripts }}/{{ maintenanceReport.summary.schedulers }}
DDNS 自动化
{{ maintenanceReport.summary.automation ? maintenanceReport.summary.automation.ddns_devices : 0 }}
拓扑 {{ maintenanceReport.summary.topology_nodes }} 个节点 / {{ maintenanceReport.summary.topology_edges }} 条连接;
地址段 {{ maintenanceReport.summary.subnets }} 个;
DDNS 自动化 {{ maintenanceReport.summary.automation ? maintenanceReport.summary.automation.ddns_devices : 0 }} 台;
异常计划 {{ maintenanceReport.summary.automation ? maintenanceReport.summary.automation.broken_schedulers : 0 }};
高权限脚本 {{ maintenanceReport.summary.automation ? maintenanceReport.summary.automation.high_privilege_scripts : 0 }};
严重 {{ maintenanceReport.summary.issues.critical }},警告 {{ maintenanceReport.summary.issues.warning }},提示 {{ maintenanceReport.summary.issues.info }}。
服务器备份
备份文件
{{ backupStatus.count || 0 }}
备份占用
{{ formatBytes(backupStatus.total_size) }}
保留上限
{{ backupStatus.limits ? backupStatus.limits.max_files : 0 }}
磁盘剩余
{{ backupStatus.disk ? formatBytes(backupStatus.disk.free) : '-' }}
目录 {{ backupStatus.backup_dir }};
最多 {{ backupStatus.limits.max_files }} 个 / {{ backupStatus.limits.max_age_days }} 天 / {{ formatBytes(backupStatus.limits.max_total_size) }}。
| 文件 |
大小 |
时间 |
| {{ item.name }} |
{{ formatBytes(item.size) }} |
{{ fmt(item.mtime) }} |
维护问题
| 级别 |
类别 |
设备 |
问题 |
建议 |
| {{ severityLabel(issue.severity) }} |
{{ issue.category }} |
{{ issue.device_name || '-' }} |
{{ issue.title }}
{{ issue.detail }}
|
{{ issue.recommendation }} |
暂无维护问题
设备健康
| 设备 |
区域 |
公网 |
心跳 |
配置 |
配置对象 |
| {{ device.identity }} |
{{ device.region || '-' }} |
{{ publicIpText(device) }} |
{{ healthLabel(device.health) }}
{{ fmt(device.last_seen_at) }} · {{ ageLabel(device.last_seen_age_seconds) }}
|
{{ healthLabel(device.config_health) }}
{{ device.latest_config_status || '-' }} · {{ fmt(device.config_collected_at || device.latest_config_at) }}
|
隧道 {{ device.counts.tunnels }} / 路由 {{ device.counts.routes }} / 地址 {{ device.counts.addresses }} /
脚本 {{ device.counts.scripts }} / 计划 {{ device.counts.schedulers }}
{{ device.automation ? device.automation.summary : '' }}
|
暂无设备
自动化与 DDNS 分析
| 设备 |
状态 |
DDNS |
脚本/计划 |
关注项 |
建议 |
| {{ device.identity }} |
{{ healthLabel(device.automation ? device.automation.status : 'info') }} |
controller
{{ (device.automation.ddns.providers || []).join(', ') || 'local' }}
未识别
中控 {{ device.automation && device.automation.ddns.controller_hostname ? device.automation.ddns.controller_hostname : '-' }}
脚本 {{ automationDdnsHostnames(device) || '-' }}
|
{{ device.automation ? device.automation.counts.scripts : 0 }} /
{{ device.automation ? device.automation.counts.schedulers : 0 }}
|
异常计划 {{ device.automation ? device.automation.counts.broken_schedulers : 0 }} /
孤立脚本 {{ device.automation ? device.automation.counts.orphan_scripts : 0 }} /
高权限 {{ device.automation ? device.automation.counts.high_privilege_scripts : 0 }}
|
{{ device.automation ? device.automation.recommendation : '-' }} |
暂无自动化分析
自动化优化建议
| 级别 |
设备 |
对象 |
问题 |
建议 |
| {{ severityLabel(item.severity) }} |
{{ item.device_name || '-' }} |
{{ automationObjectLabel(item.object_type) }}
{{ item.object_name || '-' }}
|
{{ item.title }}
{{ item.detail }}
|
{{ item.recommendation }} |
暂无自动化优化建议
管理服务
| 设备 |
服务 |
端口 |
允许地址 |
状态 |
风险 |
| {{ service.device_name }} |
{{ service.name }} |
{{ service.port || '-' }} |
{{ service.address || '0.0.0.0/0' }} |
{{ service.disabled ? 'disabled' : 'enabled' }} |
{{ severityLabel(service.risk) }} |
暂无服务清单
脚本与计划任务
| 设备 |
脚本 |
类型 |
策略 |
调用 |
源 |
状态 |
| {{ script.device_name }} |
{{ script.name || '-' }} |
{{ automationKindLabel(script.automation_kind) }}
{{ script.ddns_provider }}
{{ script.ddns_hostnames.join(', ') }}
{{ endpointRefreshText(script) }}
|
{{ script.policy || '-' }} |
{{ script.scheduler_count || 0 }}
{{ (script.referenced_by || []).join(', ') }}
|
{{ script.source_present ? '有' : '无' }}
{{ script.source_hash || '-' }} · {{ script.source_size || 0 }}B
|
{{ script.disabled ? 'disabled' : healthLabel(script.status || 'ok') }} |
暂无脚本
| 设备 |
计划任务 |
类型 |
间隔 |
目标 |
状态 |
| {{ scheduler.device_name }} |
{{ scheduler.name || '-' }} |
{{ automationKindLabel(scheduler.automation_kind) }}
{{ scheduler.ddns_provider }}
{{ scheduler.ddns_hostnames.join(', ') }}
{{ endpointRefreshText(scheduler) }}
|
{{ scheduler.interval || '-' }} |
{{ scheduler.target_script || scheduler.on_event || '-' }}
{{ automationExecutionLabel(scheduler.execution_type) }}
|
{{ scheduler.disabled ? 'disabled' : healthLabel(scheduler.status || 'ok') }} |
暂无计划任务
隧道清单
| 来源 |
目标 |
协议 |
名称 |
双端地址 |
承载路由 |
| {{ tunnel.source }} |
{{ tunnel.target }} 未纳管 |
{{ tunnel.protocol }} |
{{ tunnel.name || '-' }} |
{{ tunnel.local_address || '-' }} → {{ tunnel.remote_address || '-' }} |
{{ route.dst_address }}
-
|
暂无隧道