在当今数字化时代,网络服务的稳定性和可靠性至关重要。无论是大型企业还是小型团队,都需要确保其服务器和应用程序的健康状态,以避免因意外停机而造成的损失。正是在这样的背景下,dish 应运而生。
一、什么是dish
dish 是一款轻量级、基于命令行的监控服务,主要用于高效地检查套接字(socket)连接,实时发现连接是否成功建立、异常断开或处于僵死状态。
二、核心功能
轻量级一次性监控服务:
dish 是一个简单、轻量级的工具,专注于一次性检查 HTTP 和 TCP 套接字的健康状态。
远程配置:
dish 可以通过加载远程 API 提供的套接字列表来配置监控目标,支持从本地 JSON 文件或远程 RESTful JSON API 端点获取监控目标列表。
快速并发测试:
dish 支持并发测试,能够快速执行检查任务,每个套接字的默认超时时间为 10 秒。
零依赖:
dish 不依赖任何外部库,是一个独立的工具。
多种通知方式:
将测试结果上传到远程 JSON API
通过 Telegram 发送消息
更新到 Pushgateway(用于 Prometheus 监控)
推送到 Webhook URL
缓存机制:
如果从远程 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种方式提供:
本地 JSON 文件:
dish /opt/dish/sockets.json
远程 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
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://zblog.hqyman.cn/post/10619.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~