HostStat 是一个轻量级的主机状态采集工具,用于获取服务器的基础信息、网络状态以及磁盘与 IO 性能指标,适用于主机监控、运维巡检和基础设施可观测性场景。
- 系统指标采集:实时采集 CPU、内存、磁盘、网络和 I/O 等关键系统指标
- 安全 API 访问:通过 token 验证机制确保 API 接口的安全访问
- 轻量级设计:低资源占用,适合在各种服务器环境中部署
- 嵌入式资源:静态资源(HTML、favicon.ico)嵌入到可执行文件中,简化部署
- 模板渲染:使用 Go 的 html/template 进行页面渲染
- Go 语言:高性能后端开发语言
- 标准库:使用 Go 标准库实现 HTTP 服务、模板渲染、JSON 处理等功能
- 嵌入式资源:使用 embed 包将静态资源嵌入到可执行文件中
- 安全机制:基于 HTTP-only Cookie 和请求头验证的安全机制
go install cnb.cool/zhiqiangwang/go-hoststat@main
hoststat-go
服务将在 :8080 端口启动。
- URL:
/base
- Method:
GET
- Description: 获取系统基础信息
- Response: JSON 格式的系统基础信息
- URL:
/current
- Method:
GET
- Description: 获取系统当前运行状态
- Response: JSON 格式的系统当前状态信息
- URL:
/top/cpu/ps
- Method:
GET
- Description: 获取 CPU 使用率最高的进程
- Response: JSON 格式的进程列表
- URL:
/top/mem/ps
- Method:
GET
- Description: 获取内存使用率最高的进程
- Response: JSON 格式的进程列表
- 生成: 当访问主页时,服务会生成包含请求头信息的 token 并设置为 HTTP-only Cookie
- 验证: API 接口通过验证请求中的 token 来确保访问安全
- 机制: token 包含请求头的 JSON 序列化数据,并使用 base64 编码
所有 API 接口都通过 SecureMiddleware 进行保护,确保只有携带有效 token 的请求才能访问。
- 在
handles/hander.go 中添加新的处理函数
- 在
main.go 中注册新的路由,并应用 SecureMiddleware
在 handles/hander.go 中实现新的指标采集函数,并在相应的处理函数中调用。
当前版本主要通过代码中的常量和变量进行配置,包括:
- 服务端口:
:8080
- Token 有效期: 24 小时
- Cookie 配置: HTTP-only、SameSite=Strict、Secure=false