Hacker News 中文摘要

RSS订阅

Show HN: Sping——一款赏心悦目的HTTP/TCP延迟检测工具 -- Show HN: Sping – An HTTP/TCP latency tool that's easy on the eye

文章摘要

Sping是一款现代终端HTTP/TCP延迟监控工具,具备实时可视化功能,支持HTTP/TCP协议、阶段计时、异常检测和全面监控。其设计灵感来源于nvitop,旨在帮助诊断网络延迟问题。Sping易于通过pip安装,并能生成直观的截图,便于团队沟通。

文章总结

Sping 文档

最新版本:0.2.11

Sping 是一款现代化的终端 HTTP/TCP 延迟监控工具,具备实时可视化功能。它结合了 httping 的实用性和现代 CLI 设计,提供了丰富的终端用户界面、阶段计时和高级分析功能。

状态:功能完整的最小可行产品(MVP),支持 HTTP/TCP、阶段计时、异常值检测和全面的监控能力。

演示Sping 交互式演示 实时延迟监控,展示 HTTP 响应时间、异常值检测和实时统计信息。

背景: 作者经常使用 nvitop 来诊断 GPU/CPU 资源争用问题。nvitop 的两个优点是易于安装和生成有说服力的截图,这有助于与同事沟通。基于这些经验,作者开发了 Sping

目的:帮助观察和诊断第 4 层及以上的延迟问题(TCP/HTTP/HTTPS)。

优点: - 易于安装(通过 pip 安装,可在 PyPi 获取)。 - 生成有说服力的截图。

功能: - 🌐 HTTP & TCP 监控:支持 http://https://tcp:// 协议。 - 📊 实时可视化:终端中的交互式图表和实时统计信息。 - 🔍 阶段分解:DNS、连接、TLS、请求和响应计时。 - 🚨 异常值检测:使用中位数绝对偏差(MAD)自动检测异常值。 - ⚠️ 阈值警报:警告和严重阈值,并带有退出代码。 - 🌍 DNS 控制:IPv4/IPv6 选择和 DNS 解析缓存。 - 📈 高级统计:百分位数(p50, p90, p95, p99)、标准差。 - 💾 多种输出格式:交互式 UI、纯文本、JSON 和 JSON 导出。 - 🔐 认证:支持 Bearer 令牌和基本认证。 - 🎨 丰富的终端 UI:美观的图表、颜色编码的日志和响应式布局。 - 🌈 颜色主题:提供 8 种主题颜色方案(日落、海洋、森林、火山、银河、北极、霓虹、单色)。

安装bash pip install service-ping-sping 开发环境安装: bash pip install -e .[dev]

快速开始: ```bash

HTTP 监控,带交互式 UI

sping google.com

TCP 连接监控

sping tcp://google.com:80

HTTPS 自定义选项

sping https://api.example.com --interval 0.5 --count 20

JSON 输出,用于自动化

sping google.com --json --count 5

高级监控,带阈值

sping example.com --warn 100 --crit 500 --percentiles

尝试不同的颜色主题

sping example.com --palette ocean ```

使用示例: - HTTP/HTTPS 监控: ```bash # 基本 HTTP 监控(自动添加 http://) sping example.com

# HTTPS 自定义方法和请求体传输 sping https://api.example.com --method POST --body

# 仅 IPv4,带 DNS 缓存 sping google.com --ipv4 --resolve-once

# 带认证 sping api.example.com --auth "bearer:your-token" sping api.example.com --auth "user:password" ```

  • TCP 连接监控: ```bash

    测试 TCP 连接

    sping tcp://google.com:80 sping tcp://example.com:443

    监控数据库连接

    sping tcp://localhost:5432 --interval 0.1 ```

  • 高级功能: ```bash

    异常值检测和阈值

    sping example.com --warn 100 --crit 500 --count 100

    导出详细计时数据

    sping example.com --export-file results.json --count 50

    显示百分位数统计

    sping example.com --percentiles --count 100

    纯文本输出,用于脚本

    sping example.com --plain --count 5 ```

异常值检测: Sping 使用 中位数绝对偏差(MAD) 自动检测异常的延迟峰值。

命令行选项: - 核心选项: - -i, --interval FLOAT:探测间隔时间(默认:1.0 秒)。 - -c, --count INT:探测次数后退出。 - --timeout FLOAT:请求超时时间(默认:10.0 秒)。 - -X, --method TEXT:HTTP 方法(默认:HEAD)。

  • 协议 & DNS

    • --ipv4:强制使用 IPv4。
    • --ipv6:强制使用 IPv6。
    • --resolve-once:仅解析一次 DNS 并缓存。
  • HTTP 选项

    • --body:包含完整请求体传输时间。
    • --no-keepalive:禁用持久连接。
    • --user-agent TEXT:自定义 User-Agent 字符串。
    • --auth TEXT:认证(user:pass 或 bearer:token)。
    • --insecure:跳过 TLS 验证。
  • 监控 & 警报

    • --warn FLOAT:警告阈值(毫秒)。
    • --crit FLOAT:严重阈值(毫秒)。
    • --percentiles:在摘要中显示百分位数统计。
  • UI & 显示

    • --refresh-rate FLOAT:UI 更新频率(默认:4.0 Hz,越高越响应,越低 CPU 占用越少)。
    • --palette PALETTE:延迟可视化的颜色主题(默认:日落)。
    • --xterm-colors-only:强制使用基本终端颜色兼容性(适用于旧终端)。

输出格式: - 交互模式(默认):实时终端 UI,包含延迟图表、请求日志和统计面板。 - 纯文本模式(--plain:简单的文本输出。 - JSON 模式(--json:每行一个 JSON 对象。

阶段计时分解: Sping 提供每个连接阶段的详细计时,包括 DNS、连接、TLS、请求写入、TTFB、响应体读取和总时间。

退出代码: - 0:成功。 - 1:警告阈值超过(当指定 --warn 时)。 - 2:严重阈值超过(当指定 --crit 时)。

退出交互模式: 按 Ctrl+C 优雅退出并查看最终摘要。

系统要求: - Python 3.9+ - 推荐使用支持颜色的现代终端 - 支持 Linux、macOS 和 Windows

许可证: MIT - 详见 LICENSE.md

最新文档版本 0.2.11 特定文档从 PyPI 安装

评论总结

评论内容总结:

  1. 正面评价:多位用户对工具表示赞赏,认为其功能实用且用户友好。

    • "Very nice! We all really need a tool that IT can use to diagnose problems along the path."(“非常好!我们确实需要一个IT可以用来诊断路径问题的工具。”)
    • "I absolutely love this! What a great tool."(“我非常喜欢这个!多么棒的工具。”)
  2. 技术问题:有用户指出工具存在bug,并提供了具体的错误信息。

    • "Just fyi, looks like the shortened command defaults has a bug based on the docs"(“仅供参考,根据文档,缩短的命令默认值似乎有一个bug。”)
    • "Invalid value for '--palette': is not one of 'sunset', 'ocean', 'forest', 'volcano', 'galaxy', 'arctic', 'neon', 'monochrome'."(“'--palette'的无效值: 不是 'sunset', 'ocean', 'forest', 'volcano', 'galaxy', 'arctic', 'neon', 'monochrome' 之一。”)
  3. 功能建议:用户建议增加GitLab链接,并询问是否使用了LLM(大型语言模型)进行开发。

    • "I would add a link to the gitlab to the page also, clicking the LICENCE brings me to the source code but other than that there did not seem to be a link."(“我还会在页面上添加一个GitLab链接,点击LICENSE会带我进入源代码,但除此之外似乎没有链接。”)
    • "Out of curiosity, did you use LLM's to code this?"(“出于好奇,你是用LLM来编写这个代码的吗?”)
  4. 工具比较:有用户提到其他工具(如fping)的功能,并分享了相关脚本。

    • "My favorite ping tool is fping, mainly because I can do bash expansion with it eg fping mail{1..10} .. very useful and saves me from doing a 'for i' one-liner."(“我最喜欢的ping工具是fping,主要是因为我可以用它进行bash扩展,例如fping mail{1..10}..非常有用,省去了我写'for i'单行命令的麻烦。”)
    • "This idea is also very useful for host/dig DNS queries which I would also often previously do a one-liner for, but recently had a gpt script me a tool for it."(“这个想法对于host/dig DNS查询也非常有用,我以前也经常用单行命令来做,但最近让GPT为我编写了一个工具。”)

总结:评论中既有对工具的积极评价,也有对技术问题的指出和功能改进的建议,同时还有用户分享了其他工具的使用经验。