Show HN: rtcollector - A modular, RedisTimeSeries-native observability agent
Show HN: rtcollector - 一款模块化、RedisTimeSeries 原生的可观测性 Agent
跳转至内容
xe-nvdk
/ rtcollector Public
一个模块化、RedisTimeSeries 原生的可观测性 agent。专为希望完全控制指标收集,又不想臃肿的开发者、爱好者和基础设施团队设计。
License
AGPL-3.0 license 0 stars 0 forks Branches Tags Activity
xe-nvdk/rtcollector
代码
文件夹和文件
名称 | 名称 | 最后提交信息 | 最后提交日期 ---|---|---|--- core | core | | inputs | inputs | | outputs | outputs | | utils | utils | | .gitignore | .gitignore | | LICENSE | LICENSE | | README.md | README.md | | config.yml | config.yml | | dashboard.json | dashboard.json | | main.py | main.py | | pyvenv.cfg | pyvenv.cfg | | requirements.txt | requirements.txt | |
最新提交
历史
rtcollector
一个模块化的,RedisTimeSeries-native 的可观测性 agent。为开发者,极客和基础设施团队设计,他们想要完全控制指标收集,而又不想有膨胀。
🧠 什么是 rtcollector
?
rtcollector
是一个轻量级的,基于插件的 agent,用于收集系统和应用程序指标,并将它们推送到 RedisTimeSeries。
它像 Telegraf 一样工作,但专门为 Redis Stack 生态系统设计。
把它想象成你的 Redis 原生可观测性层:简单、快速、可hack。
🤔 为什么存在?
因为大多数现代可观测性 agent:
- 对于较小的项目或边缘部署来说,过于臃肿或杀鸡用牛刀
- 假设您正在使用 Prometheus, InfluxDB, 或 Elastic
- 缺乏对 RedisTimeSeries 作为一流输出的良好支持
为什么不呢?
rtcollector
诞生于以下需求:
✅ 模块化 ✅ 可以用 YAML 文件配置 ✅ 考虑到 RedisStack 构建 ✅ 足够小,可以嵌入到任何地方(VM,Docker,homelabs,边缘设备)
✅ 今天它可以做什么?
- ⏱️ 以可配置的时间间隔收集指标
- 📦 模块化的输入插件 (Linux CPU, Mem, Disk, 等)
- 🚀 将指标推送到 RedisTimeSeries (通过
TS.ADD
) - ⚙️ 完全 YAML 可配置。无需代码更改即可启用/禁用插件
- 📚 使用 Python 构建,易于扩展
- 💻 支持 MacOS 和 Linux
- 🏷️ 基于标签的 key 创建,带有每个主机和每个核心的标签
- 🐞 调试日志记录和单次执行支持
- 🐳 通过容器统计信息和引擎信息获取 Docker 指标
- 🕒 每个插件的计时,具有慢检测和警告指示器
🔌 Inputs (WIP)
插件 | 状态 | 说明
---|---|---
linux_cpu
| ✅ | 每个核心和总 CPU 使用率
linux_mem
| ✅ | 可用/已用/可用 RAM
linux_disk
| ✅ | 按挂载点的磁盘使用量
linux_net
| ✅ | 传入/传出字节数,数据包错误
linux_io
| ✅ | 读取/写入字节数和操作数
macos_cpu
| ✅ | 每个核心和总 CPU 使用率
macos_mem
| ✅ | 通过 vm_stat
获取内存使用情况
macos_disk
| ✅ | 通过 df
获取磁盘使用情况
macos_io
| ✅ | 通过 iostat
获取 I/O 统计信息
macos_net
| ✅ | 通过 netstat
获取网络统计信息
docker_stats
| ✅ | 容器 CPU,内存和网络统计信息;通过配置切换 Docker Swarm;添加了日志记录改进和插件执行持续时间跟踪
mysql
| 🧪 | 通过 SHOW STATUS
获取基本服务器统计信息
postgres
| 🧪 | 连接数,xact 提交数
redis
| 🧪 | INFO
命令 + 可选延迟信息
📤 Outputs
插件 | 说明
---|---
redistimeseries
| ✅ 默认和最稳定的输出;支持使用保留策略和标签自动创建 key;支持动态主机名标记和重复策略处理
(计划中) stdout
| 用于本地测试/调试
(计划中) clickhouse
| 将指标推送到冷存储/分析引擎
(计划中) mqtt
/ http_post
| 与 IoT 或警报系统集成
🚀 Roadmap
- 基于插件的架构
- 基于 YAML 的配置加载器
- 添加默认输入套件 (系统,docker,数据库)
- 添加 CLI (
rtcollector run --config config.yaml
) - 调试和单次模式
- macOS 支持
- Docker 支持
- 添加插件模式验证 + 日志记录
- RedisJSON/RediSearch 支持日志
- Redis Streams 支持实时事件
- 用于 RedisTimeSeries 的 Grafana 仪表板模板
📦 示例 config.yaml
interval: 5
hostname: atila
retention: 86400000
debug: true
once: false
inputs:
- linux_cpu
- linux_mem
- docker:
endpoint: "unix:///var/run/docker.sock"
gather_services: false
outputs:
- redistimeseries:
host: localhost
port: 6379
👥 适用于谁?
- 运行 Redis Stack 的 DevOps 工程师
- Homelab 爱好者
- 使用 RedisTimeSeries 的 IoT 构建者
- 任何想要自定义,无膨胀的指标收集器的人
❤️ 贡献
这个项目才刚刚开始,欢迎贡献,想法和 PR!
开始:
- Fork 这个 repo
- Clone 你的 fork
- 创建一个分支 (
git checkout -b my-feature
) - 提交你的更改 (
git commit -am 'Add feature'
) - 推送到分支 (
git push origin my-feature
) - 打开一个 pull request
📜 License
此项目根据 GNU Affero General Public License v3.0 (AGPL-3.0) 授权。
您可以自由使用、修改和分发此代码,只要您开源任何更改,并在将修改后的版本部署为网络服务时提供源代码。
关于
一个模块化,RedisTimeSeries-native 的可观测性 agent。专为希望完全控制指标收集,又不想臃肿的开发者、爱好者和基础设施团队设计。
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published