21
2025
04
16:02:04

绝了!一款比 Netstat 好用 N 倍的网络工具,开源了

在当今数字化时代,网络服务的稳定性和可靠性至关重要。无论是大型企业还是小型团队,都需要确保其服务器和应用程序的健康状态,以避免因意外停机而造成的损失。正是在这样的背景下,dish 应运而生。

一、什么是dish

dish 是一款轻量级、基于命令行的监控服务,主要用于高效地检查套接字(socket)连接,实时发现连接是否成功建立、异常断开或处于僵死状态。

二、核心功能

  1. 轻量级一次性监控服务:

    dish 是一个简单、轻量级的工具,专注于一次性检查 HTTP 和 TCP 套接字的健康状态。

  2. 远程配置:

    dish 可以通过加载远程 API 提供的套接字列表来配置监控目标,支持从本地 JSON 文件或远程 RESTful JSON API 端点获取监控目标列表。

  3. 快速并发测试:

    dish 支持并发测试,能够快速执行检查任务,每个套接字的默认超时时间为 10 秒。

  4. 零依赖:

    dish 不依赖任何外部库,是一个独立的工具。

  5. 多种通知方式:

    • 将测试结果上传到远程 JSON API

    • 通过 Telegram 发送消息

    • 更新到 Pushgateway(用于 Prometheus 监控)

    • 推送到 Webhook URL

  6. 缓存机制:

    如果从远程 API 获取套接字列表,dish 可以将结果缓存到本地,避免频繁请求远程 API。即使远程 API 端点不可用,dish 也可以使用缓存的列表继续运行。

三、使用场景

  • 轻量级健康检查:用于检查 HTTP 和 TCP 套接字的健康状态。
  • 分布式监控:在不同的主机上部署独立的 dish 实例,从一个公共 API 获取配置,实现去中心化的监控。
  • 周期性检查:通过 cron 任务驱动,定期运行 dish 进行一次性检查,无需长时间运行的代理程序。

四、安装和使用

  • 安装:可以通过 go install 或 Homebrew 安装。
  • 使用:可以通过本地 JSON 文件或远程 JSON API 端点提供要检查的套接字列表,并通过各种标志(flags)配置通知方式和其他选项。


go install go.vxn.dev/dish/cmd/dish@latest

4.1 示例
待检查的 Socket 列表可以通过2种方式提供:
  1. 本地 JSON 文件:


dish /opt/dish/sockets.json

  1. 远程 JSON API:


dish http://restapi.example.com/dish/sockets/:instance

4.2 通知配置
  • Telegram 通知:


dish -telegramChatID "-123456789" \ -telegramBotToken "123:AAAbcD_ef" \ sockets.json

  • Pushgateway 更新:


dish -target https://pushgw.example.com/ \ https://api.example.com/dish/sockets

4.3 使用方法


dish [FLAGS] SOURCE

4.4 Flags


dish -h 

Usage of dish:  

 -cache     

     a bool, specifies whether to cache the socket list fetched from the remote API source  

 -cacheDir string      

     a string, specifies the directory used to cache the socket list fetched from the remote API source (default ".cache") 

 -cacheTTL uint     

     an int, time duration (in minutes) for which the cached list of sockets is valid (default 10)

 -hname string     

     a string, name of a custom additional header to be used when fetching and pushing results to the remote API (used mainly for auth purposes)   

 -hvalue string    

     a string, value of the custom additional header to be used when fetching and pushing results to the remote API (used mainly for auth purposes)

 -machineNotifySuccess    

     a bool, specifies whether successful checks with no failures should be reported to machine channels

 -name string    

     a string, dish instance name (default "generic-dish")

 -target string

     a string, result update path/URL to pushgateway, plaintext/byte output

 -telegramBotToken string    

     a string, Telegram bot private token

 -telegramChatID string    

     a string, Telegram chat/channel ID

 -textNotifySuccess    

     a bool, specifies whether successful checks with no failures should be reported to text channels 

 -timeout uint

     an int, timeout in seconds for http and tcp calls (default 10)

 -updateURL string

     a string, API endpoint URL for pushing results

 -verbose

     a bool, console stdout logging toggle

 -webhookURL string

     a string, URL of webhook endpoint 


五、总 结

dish 是一个简单、高效且灵活的监控工具,适用于需要快速检查套接字健康状态的场景,特别适合分布式环境和自动化监控任务。

Github: https://github.com/thevxn/dish




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://zblog.hqyman.cn/post/10619.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: