Skip to content

framecy/Ping-Monitor

Repository files navigation

PingMonitor

PingMonitor Icon

macOS 菜单栏网络延迟监控工具
多主机监控 · Tailscale 集成 · 服务快捷方式 · 实时统计 · 桌面小组件

Platform SwiftUI License Version

🚀 Official Site: ping.diswant.space


✨ 功能一览

🖥 侧边栏导航

原生 macOS NavigationSplitView 侧边栏,配合 SF Symbols 图标,快速切换六大模块:监控、统计、网速、追踪、主机管理、服务快捷、历史日志。

📡 多主机监控

  • 同时监控多个网络地址,自适应网格布局
  • 实时连续 Ping 模式,可配置 3/5/10/30 秒间隔
  • 绿(<50ms)/ 橙(<100ms)/ 红(>100ms)三色延迟状态
  • 每张主机卡片内嵌 迷你趋势图,一眼掌握近期波动
  • 呼吸灯动画状态指示 + 悬浮放大交互效果

📊 数据统计

  • 概览卡片 — 请求数、成功率、丢包率、发送/接收流量、运行时长
  • 延迟趋势图 — 实时刷新曲线,支持 Bézier 平滑与区域填充
  • 详细指标 — 单主机或全部主机的最小/最大/平均延迟
  • 环形统计图 — 全新精致设计的环状统计图表,直观展示请求成功/失败/超时占比与数量
  • 排行榜 — 实时对齐网格布局显现延迟最低/最高的主机

📈 状态栏扩展与网速监控

  • 可选网速显示 — 在系统菜单栏直接显示上行/下行实时网速(支持自动单位计算 KB/s、MB/s)
  • 高自由定制 — 支持调整占用总宽度、选择显隐地球图标、并支持 6-18 字号及粗细的完美垂直居中布局
  • 网速详情页 — 提供 1s–10s 多档刷新率,自动前置有流量的活跃网卡
  • 流量统计与图表 — 全新加入昨日/今日累积流量统计,并配合 30分钟/1小时/24小时/7天 的交互式历史趋势折线图

🔍 主机详情视图

点击任意主机卡片即可进入详情页:

  • 实时图表 — 独立的高刷新率延迟曲线
  • 扩展统计 — 抖动值 (Jitter)、标准差
  • 丢包分析 — 详细的成功/失败计数与百分比
  • 流量监控 — 该主机的实时上传/下载流量统计
  • 专项历史日志 — 在详情页中直接展示当前主机的专项操作与 Ping 延迟日志,支持一键导出 .txt 到本地目录

🛣 路由追踪 (Traceroute)

  • 可视化追踪 — 输入目标地址,直观展示每一跳的 IP、延迟与丢包率
  • MTR 模式 — 持续追踪模式,像 MTR 工具一样实时更新每一跳的统计数据
  • 地图追踪 — 自动获取当前公网 IP 位置作为起点(Hop 0),在地图上完整绘制从本地到目标的每一跳地理路径
  • 快速复制 — 一键复制追踪结果到剪贴板

🏷 自定义显示规则

为每个主机设置延迟阈值规则,满足条件时在状态栏和卡片上显示自定义标签:

<50ms  → 直连       # 延迟低于 50ms 显示「直连」
>100ms → 转发       # 延迟高于 100ms 显示「转发」

🌍 多语言支持 (Localization)

  • 中英切换 — 完整的界面汉化与英文支持
  • 动态切换 — 顶部菜单栏一键切换语言,即时生效
  • 持久化 — 自动记忆语言偏好设置

🔔 智能通知

  • 延迟超过阈值或连接失败时自动推送
  • 支持 系统通知Bark 远程推送 两种方式

📋 全局审计与日志系统

  • 分级日志(Debug / Info / Warning / Error),彩色圆点指示器,快速区分日志级别
  • 操作审计日志 — 追踪设置变更(语言、间隔、通知类型)及主机增删改查
  • 按级别与主机名筛选功能,支持导出全局日志为文本文件

🧩 桌面小组件

三款尺寸(小 / 中 / 大),渐变背景设计,实时显示延迟状态:

尺寸 显示内容
延迟数值 + 状态图标 + 主机地址
延迟数值 + 主机名 + 运行状态
完整面板:图标 + 延迟 + 主机 + 状态 + 更新时间

🔗 Tailscale 集成

  • 自动节点发现 — 自动检测 Tailscale CLI,一键读取私有网络中所有设备
  • 智能导入 — 将 Tailscale 节点导入为监控主机,支持单台或批量导入
  • 状态面板 — 实时显示 Tailscale 连接状态、本机 IP、网络节点在线情况

🚀 统一服务快捷与网速监控

  • 实时网速监控 — 上传/下载速度追踪,支持按应用/网卡分类(60秒动态折线图)
  • 多接口数据统计 — 一键切换全部网卡与单张网卡,显示包量与错误率
  • 服务快捷面板 — 统一管理所有主机的 Web/SSH 服务跳转
  • SSH 密码与密钥认证 — 支持自定义端口与自动登录模式
  • 开机自启动 — 保留数据设置并在应用重启时自动恢复运行状态

🚀 服务快捷方式

  • 为每个主机配置多个 Web / SSH / 自定义 服务快捷入口
  • 点击即可在浏览器打开 Web 服务或在终端中发起 SSH 连接
  • 全局 服务面板 汇总展示所有主机的快捷方式
  • 16 种 SF Symbols 图标可选,支持右键删除

⚙️ 更多特性

  • 卡片式设置页 — 全新 ModernCardScrollView 相结合的卡片分组设计设置面板,逻辑清晰明了
  • 智能 Dock 图标 — 主窗口关闭时自动隐藏 Dock 图标,纯净驻留菜单栏
  • 状态栏显示策略 — 平均延迟 / 最差主机 / 最快主机 / 首个主机
  • 主机预设库 — 内置常用 DNS 和服务器,快速添加
  • 自定义 Ping 命令 — 使用 {host} 占位符自定义命令
  • 开机自启动 — 基于 ServiceManagement 框架
  • 菜单栏图标 — 等宽数字字体,运行时实时更新延迟数值

🛠 技术栈

组件 技术
UI 框架 SwiftUI 6.0
最低系统 macOS 14.0+
架构模式 MVVM
数据存储 File-based Data Sharing (JSON)
小组件 WidgetKit
自启动 ServiceManagement
多语言 Localization (Dynamic)
构建工具 XcodeGen

📁 项目结构

PingMonitor/
├── PingMonitor/
│   ├── PingMonitorApp.swift      # 应用入口、数据模型、ViewModel
│   ├── MainView.swift            # 主视图与标签页
│   ├── DashboardView.swift       # 统计仪表盘(3D 饼图、趋势卡片)
│   ├── SidebarView.swift         # 自定义侧边栏导航
│   ├── EditableHostCard.swift    # 主机卡片组件
│   ├── Components.swift          # 通用 UI 组件
│   ├── Theme.swift               # 设计系统(颜色、字体、布局)
│   ├── LanguageManager.swift     # 中英多语言管理
│   ├── Info.plist
│   ├── PingMonitor.entitlements
│   └── Assets.xcassets/          # 应用图标
├── PingMonitorWidget/
│   ├── PingMonitorWidget.swift   # 桌面小组件(小/中/大)
│   └── Info.plist
├── project.yml                   # XcodeGen 工程配置
└── build.sh                      # 自动化打包脚本

🚀 编译与安装

环境要求

  • macOS 14.0+
  • Xcode 16+
  • XcodeGen:brew install xcodegen

一键打包

chmod +x build.sh
./build.sh

打包输出至 ~/Desktop/PingMonitor-v{version}.dmg,默认自动递增版本号。

如需关闭自动版本递增,编辑 build.sh

AUTO_VERSION=false

安装

  1. 双击打开 DMG 文件
  2. 将 PingMonitor 拖入 Applications 文件夹
  3. 首次打开时允许系统安全提示

📖 使用指南

添加监控主机

  1. 进入「主机管理」→ 点击「添加」
  2. 输入名称和地址(IP 或域名)
  3. 可选:自定义 ping 命令,用 {host} 作为地址占位符
  4. 或从预设库快速添加常用主机

查看统计

  1. 切换至「统计」页面
  2. 顶部概览卡片显示整体数据
  3. 选择「全部主机」或单个主机查看延迟趋势图和详细指标

配置状态栏

进入「设置」→「状态栏显示」,选择延迟显示策略和是否显示规则标签。

切换语言

点击顶部菜单栏右上角的语言切换按钮(中/EN),界面即时更新。

配置通知

进入「设置」→「通知」,选择系统通知或填写 Bark URL 进行远程推送。


📋 版本历史

版本 构建 更新内容
v2.1.1 R6 小组件终极修复:严格适配 macOS 沙盒强制规范与本地开发者实体证书深度签名,打通主应用/小组件的双向 App Group 数据通讯,彻底解决了组件画廊找不到应用的问题;性能与UI进阶:默认拉长探测间隔至10秒护航内存与系统负载,全面修复了主机规则编辑器不堪入目的排版错位,监控大盘服务快捷键重构为流式网格完整展示;图表引擎全面换装渐变底色填充色块及阶梯式警示色调(百兆内长绿,100-300橙,三百红)
v2.1.1 R2 UI 布局深度修复:彻底解决了显示规则编辑器的组件对齐问题,新增「显示文本」固定标签;默认值校正:修复了添加主机时规则列表为空的 Bug,现在默认自动填充(<50ms Direct, >100ms Relay)
v2.1.1 R1 交互与功能增强:实现监控主机拖拽排序;新增 Tailscale 快捷命令面板与 Exit Node 状态标识;适配完整的浅色/深色模式设计系统
v2.1.0 r38 网络监控优化:重构 netstat 解析逻辑,支持动态列偏移检测,修复了 VPN/Tailscale 接口下 Errors 计数异常的问题;同步更新官方落地页地址
v2.1.0 r35 项目规范化:建立正式 CHANGELOG.md;升级 build.sh 自动打包变更日志到 DMG;同步所有文档版本号
v2.1.0 r34 文档补全:更新 README.md 版本历史与路由追踪功能描述
v2.1.0 r33 可视化增强:Traceroute 地图新增「当前位置」(Hop 0) 起点显示,支持从本地出发逐级渲染跳点,实现完整的点对点路径追踪
v2.1.0 r32 身份认证与参数修复:采用单次提权的 Bash 容器封装 MTR 循环,彻底消除每秒弹出的 osascript 授权窗口;移除 -n 参数恢复主机名解析能力;校正 Traceroute 返回按钮的靠左边距对齐
v2.1.0 r31 UI 修复与状态反馈:修正 EditableHostCard 成功连接逻辑(<50ms 恢复绿色显示);解决 TracerouteView 中返回按钮在特定情况下的显示异常
v2.1.0 r30 核心功能修复:完美解决 Traceroute 需要 Root 权限执行的问题;布局与视觉整齐度提升:状态栏支持缩窄至 50 宽度,设置页所有表单严格左右对齐,日志页时间戳与级别绝对定宽对齐;便捷性增强:监控页顶部常驻快捷访问面板 ServiceShortcutsRibbon图表美化升级:网速页实时折线图采用 ECharts 风格的平滑贝塞尔曲线及炫光渐变引擎
v2.1.0 r23 状态栏稳定性升级:引入固定宽度与符号左对齐布局,彻底修复网速抖动;并清理了 Git 仓库日志文件
v2.1.0 r19 全新状态栏监控:支持图标开关、多级间距与字体高度定制、网速流量仪表盘全集成;SSH 安全连接:基于 expect 脚本绕过 AppleScript 授权限制直接进行密钥/密码认证;数据聚合:图表升级并修复了网格组件对齐;重构了界面排版引擎
v2.0.55 r64 SSH 快捷方式增强:支持配置用户名/端口/密钥路径,实时命令预览;NAT 检测:集成 tailscale netcheck,显示 NAT 类型/UDP/IPv4/IPv6/全局 IP/DERP 区域延迟图表;小组件修复:重构 WidgetDataManager 三级回退策略,禁用小组件沙箱确保数据同步
v2.0.54 r63 Tailscale 集成:自动发现私有网络节点并一键导入监控;服务快捷方式:为每个主机配置 Web/SSH/自定义快捷入口,全局服务面板汇总展示;新增侧边栏模块:Tailscale 面板与服务面板;完善中英文本地化
v2.0.53 r62 UI 全面优化:统计仪表盘引入极具质感的 3D 立体饼图,并运用严格风格的 Grid 网格布局重置了延迟排行榜;设置页重构:全面采用 ModernCard 与原生列表结合的卡片式分组设计;审计与日志增强:新增针对应用设置修改的操作审计跟踪,并在主机详情页提供了支持一键导出的单主机专项历史日志功能
v2.0.51 r60 小组件深度优化:重构 WidgetDataManager 实现可靠数据同步,修复“无数据”显示;本地化增强:全面支持中英文动态切换,覆盖小组件设置与系统菜单;可视化升级:优化 Dashboard 布局与趋势图平滑度;路由追踪改进:增强 Traceroute/MTR 稳定性
v2.0.40 r41 UI 全面升级:3D 环形统计图、实时内存监控、Dashboard 布局优化;本地化完善:补全所有翻译 key、日志级别本地化;侧边栏显示 macOS 用户名
v2.0.34 r35 多语言支持:完整的中文/英文界面,支持动态切换;UI 细节优化与 Bug 修复
v2.0.29 r30 修复自定义命令中空格导致解析错误的问题
v2.0.28 r29 移除 DMG 文件名中的构建号后缀
v2.0.27 r28 UI 细节优化:统一主机卡片高度,优化状态栏宽度自适应
v2.0.26 r27 修复 macOS 15.7+ 小组件背景色崩溃问题,完善打包脚本
v2.0.25 r26 UI 全面重构:侧边栏导航、Bézier 曲线图表、渐变卡片、迷你趋势图、小组件重新设计
v2.0.24 r25 美化卡片、悬浮效果、延迟图表、应用图标
v2.0.22 r23 响应式网格布局、聚合统计、延迟图表
v2.0.20 r21 连续 ping 模式、数据统计

📄 开源协议

MIT License

🙏 致谢

  • XcodeGen — 项目工程生成工具
  • Apple SwiftUI / WidgetKit / ServiceManagement 框架

About

Network. Nuanced. macOS 菜单栏网络延迟监控工具,支持多主机监控、实时统计、可视化图表和智能通知。

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors