服务器在线
{{ overview.online }}/ {{ overview.total }} 台
离线 {{ overview.total - overview.online }} 台 · 更新于 {{ lastRefresh }}
活跃警告
{{ overview.warnings.length }}条
红 {{ warnCount[3] }} · 橙 {{ warnCount[2] }} · 黄 {{ warnCount[1] }}
今日总请求
{{ fmtNum(overview.totals.requests_today) }}次
今日流量 {{ fmtBytes(overview.totals.traffic_today) }}
当前总带宽
{{ fmtMbps(overview.totals.net_in + overview.totals.net_out) }}Mbps
入 {{ fmtMbps(overview.totals.net_in) }} · 出 {{ fmtMbps(overview.totals.net_out) }}
全局带宽趋势近 24 小时Mbps
警告列表活跃 {{ overview.warnings.length }} 条窗口 {{ overview.window_minutes }} 分钟
{{ lvlName(w) }}{{ w.title }}
{{ w.detail }}
{{ ago(w.last_active) }}
暂无警告 · 一切正常
服务器{{ overview.servers.length }} 台
| 状态 | 名称 | IP | CPU | 内存 | 磁盘 | 入 / 出带宽 | 站点 | 最后上报 |
|---|---|---|---|---|---|---|---|---|
| {{ s.name }}CPU 高磁盘高 | {{ s.ip }} | {{ s.status===1 ? fmtMbps(s.net_in)+' ↓ / '+fmtMbps(s.net_out)+' ↑' : '—' }} | {{ s.site_count }} | {{ ago(s.last_report) }} |
点击服务器行进入详情
阈值窗口 {{ overview.window_minutes }} 分钟
单 IP 超请求/流量阈值 → Agent 自动封禁
不检测单站点存活,网络通畅以 Agent 上报为准
← 返回总览
{{ srv.name }}
IP {{ srv.ip }}
系统 {{ srv.os || '—' }}
宝塔 {{ srv.bt_version || '—' }}
宝塔别名 {{ srv.bt_alias || '—' }}
Agent {{ srv.agent_version || '—' }}
备注 {{ srv.remark || '—' }}
远程命令 {{ srv.allow_shell?'已开启':'已关闭' }}
CPU 使用率
{{ num1(srv.cpu) }}%
负载 {{ srv.load1 ?? '—' }}
内存使用
{{ num1(srv.mem) }}%
{{ fmtBytes(srv.mem_total) }} 总量
磁盘使用
{{ num1(srv.disk) }}%
封禁中 {{ srvDetail.active_blocks }} 个 IP
当前带宽
{{ fmtMbps(srv.net_in) }}↓ Mbps
出站 {{ fmtMbps(srv.net_out) }} Mbps · {{ srv.site_count }} 个站点
CPU 与内存近 24 小时
网络吞吐近 24 小时Mbps
负载 (load 1m)近 24 小时
磁盘分区实时
{{ m.mount }}
{{ Math.round(m.used || 0) }} GB / {{ Math.round(m.total || 0) }} GB
暂无分区数据
本机站点Top 10 · 点击表头排序
| 站点{{ topSortIcon('domain') }} | 今日请求{{ topSortIcon('today_requests') }} | 今日流量{{ topSortIcon('today_traffic') }} | IP{{ topSortIcon('today_ip') }} | UV{{ topSortIcon('today_uv') }} | PV{{ topSortIcon('today_pv') }} |
|---|---|---|---|---|---|
| {{ st.domain }} | {{ fmtNum(st.today_requests) }} | {{ fmtBytes(st.today_traffic) }} | {{ st.today_ip == null ? '—' : fmtNum(st.today_ip) }} | {{ st.today_uv == null ? '—' : fmtNum(st.today_uv) }} | {{ st.today_pv == null ? '—' : fmtNum(st.today_pv) }} |
| 暂无站点数据 | |||||
最近远程命令审计
| 时间 | 命令 | 结果 | 耗时 |
|---|---|---|---|
| {{ fmtTime(c.created_at) }} | {{ c.cmd }} | {{ cmdStatusText(c) }} | {{ c.duration!=null ? c.duration+'s' : '—' }} |
| 暂无记录 | |||
← 返回站点列表
{{ site.domain }}
所属 {{ site.server_name }}
日志 {{ site.log_path || '—' }}
统计窗口 {{ siteWin.minutes }} 分钟
今日请求
{{ fmtNum(site.today_requests) }}次
当前窗口 {{ fmtNum(siteWin.requests) }} 次
今日流量
{{ fmtBytes(site.today_traffic,1) }}
窗口 {{ siteWin.traffic_mb }} / {{ siteWin.max_traffic_mb ?? '∞' }} MB
攻击事件
{{ siteAttacks.length }}起
近 10 条记录
关联封禁 IP
{{ activeSiteBlocks }}个
共 {{ siteBlocks.length }} 条记录
请求量与流量近 24 小时
封禁的访问 IP近 20 条
| IP | 窗口请求 | 窗口流量 | 状态 |
|---|---|---|---|
| {{ b.ip }} | {{ fmtNum(b.requests) }} | {{ fmtBytes(b.traffic) }} | {{ b.state ? '封禁中 · '+remain(b) : '已解封' }} |
| 暂无封禁记录 | |||
状态码分布近 24 小时
{{ fmtNum(siteCodes.total) }}24h 请求
2xx 成功{{ pct(siteCodes.c2) }}
3xx 重定向{{ pct(siteCodes.c3) }}
4xx 客户端{{ pct(siteCodes.c4) }}
5xx 服务端{{ pct(siteCodes.c5) }}
阈值状态全局默认 · 可覆盖
| 阈值项 | 窗口 | 当前值 | 状态 |
|---|---|---|---|
| 站点最大请求数 | {{ siteWin.minutes }} 分钟 | {{ fmtNum(siteWin.requests) }} / {{ fmtNum(siteWin.max_requests) }} | {{ thText(siteWin.requests, siteWin.max_requests) }} |
| 站点最大流量 | {{ siteWin.minutes }} 分钟 | {{ siteWin.traffic_mb }} / {{ siteWin.max_traffic_mb ?? '∞' }} MB | {{ thText(siteWin.traffic_mb, siteWin.max_traffic_mb) }} |
站点列表共 {{ sites.total }} 个
全部服务器
{{ s.name }}{{ s.ip }}
无匹配服务器
| 站点 | 所属服务器 | 今日请求{{ sortIcon('requests') }} | 今日流量{{ sortIcon('traffic') }} | IP{{ sortIcon('ip') }} | UV{{ sortIcon('uv') }} | PV{{ sortIcon('pv') }} | 最后上报 |
|---|---|---|---|---|---|---|---|
| {{ st.domain }} | {{ st.server_name }} 离线 | {{ fmtNum(st.today_requests) }} | {{ fmtBytes(st.today_traffic) }} | {{ st.today_ip == null ? '—' : fmtNum(st.today_ip) }} | {{ st.today_uv == null ? '—' : fmtNum(st.today_uv) }} | {{ st.today_pv == null ? '—' : fmtNum(st.today_pv) }} | {{ fmtTime(st.last_seen) }} |
{{ sites.page }} / {{ Math.ceil(sites.total/sites.limit) }}
目标服务器{{ onlineCount }} 台在线
已选 {{ picked.length }} 台
超时
Agent 轮询 2~5 秒,预计 5 秒内返回
提示:所有服务器的远程命令开关均未开启(服务器详情页可开启)
{{ r.server_name }}
{{ cmdStatusText(r) }}
{{ r.output || '等待 Agent 拉取命令…' }}
执行历史最近 {{ commands.length }} 条
| 时间 | 服务器 | 命令 | 结果 |
|---|---|---|---|
| {{ fmtTime(c.created_at) }} | {{ c.server_name }} | {{ c.cmd }} | {{ cmdStatusText(c) }} |
| 暂无记录 | |||
仅修改本站显示信息
名称 / IP / 备注只影响监控面板的显示与记录,不会修改远程服务器的任何配置。
| 状态 | 显示名称 | IP 地址 | 备注 | 最后上报 | 操作 |
|---|---|---|---|---|---|
| {{ s.status===1&&!s.offline?'在线':'离线' }} | {{ ago(s.last_report) }} |
服务器名称
IP(可选)
备注(可选)
接入令牌与一键安装
接入令牌
有效
wget -O install.sh '{{ installCmdHost }}/dl/install.sh' && sudo bash install.sh --token='{{ addedServer.token }}' --panel='{{ installCmdHost }}'
自动创建 systemd 服务;自动发现宝塔 /www/wwwlog 下的站点日志并统计。卸载:sudo bash /opt/smonitor/uninstall.sh
当前封禁中
{{ blockStats.active }}个 IP
分布在多台服务器
今日累计封禁
{{ blockStats.today }}次
到期自动解封
今日攻击事件
{{ blockStats.attacks_today }}起
请求洪峰 / 流量洪峰
被攻击站点
{{ blockStats.targets_today }}个
今日 · 均已定位来源 IP
封禁记录保留 30 天
| IP | 服务器 | 触发站点 | 触发原因 | 封禁时间 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| {{ b.ip }} | {{ b.server_name }} | {{ b.site_domain || '—' }} | {{ b.reason }} | {{ fmtTime(b.ts) }} | {{ b.state ? '封禁中 · '+remain(b) : '已解封' }} | |
| 暂无封禁记录 | ||||||
封禁由 Agent 在本机执行(iptables / nginx deny),面板下发规则并记录
到期由 Agent 自动解封;白名单 IP 永不封禁
告警阈值 · 全局默认
统计窗口
请求量 / 流量 / IP 阈值按此窗口聚合
窗口越长越不易误报,越短越灵敏
单站点最大请求数
站点级请求洪峰告警
次 / 窗口
单站点最大流量
入站 + 出站合计
MB / 窗口
CPU / 内存 / 磁盘
连续 2 个窗口超限才报警
% CPU
% 内存
% 磁盘
离线判定
Agent 上报周期 60 秒
超过3 个上报周期(约 3 分钟)未上报 → 判定离线 / 网络不通
阈值支持按服务器 / 按站点覆盖(API: POST /api/thresholds)
攻击防护 · 单 IP 自动封禁
单 IP 最大请求数
同一 IP 对同一站点
次 / 窗口
单 IP 最大流量
同一 IP 对同一站点(入 + 出)
MB / 窗口
封禁时长
到期由 Agent 自动解封
分钟后自动解封填 0 表示永久封禁(可手动解封)
封禁方式
Ubuntu / CentOS 通用
白名单 IP
永不封禁,逗号或换行分隔
办公网 / 监控机务必加入
规则随每次上报下发;面板离线时 Agent 仍按最后规则本地封禁
钉钉告警推送 · Webhook + 加签
启用钉钉推送
首页警告同时推送到钉钉群
Webhook 地址
加签密钥
安全设置「加签」的 secret
按 HMAC-SHA256 加签
通知级别
同一警告通知间隔
防止同一条信息刷屏
分钟
间隔内只推 1 次;超过间隔仍活跃则再推,恢复后重新计时
数据保留
分钟原始 → 小时汇总
原始
· 小时汇总
✓ 已提交,请到钉钉群查看
安全
修改登录密码
接入说明
1. 在「服务器管理」添加服务器 → 生成令牌与安装命令
2. 在目标服务器执行安装命令(systemd 常驻,默认 60s 上报)
3. 宝塔计划任务每 1 分钟执行:php {{ cronPath }}
4. 站点日志默认读取宝塔 /www/wwwlog/*.log,自动统计请求/流量/状态码与单 IP 阈值
2. 在目标服务器执行安装命令(systemd 常驻,默认 60s 上报)
3. 宝塔计划任务每 1 分钟执行:php {{ cronPath }}
4. 站点日志默认读取宝塔 /www/wwwlog/*.log,自动统计请求/流量/状态码与单 IP 阈值