Show HN: rtcollector - A modular, RedisTimeSeries-native observability agent

1 month ago 1

rtcollector

A modular, RedisTimeSeries-native observability agent.
Designed for developers, tinkerers, and infrastructure teams who want full control over metrics collection, without the bloat.


rtcollector is a lightweight, plugin-based agent for collecting system and application metrics, and pushing them to RedisTimeSeries.

It works like Telegraf, but is designed specifically for the Redis Stack ecosystem.

Think of it as your Redis-native observability layer: simple, fast, hackable.


Because most modern observability agents:

  • Are too bloated or overkill for smaller projects or edge deployments
  • Assume you're using Prometheus, InfluxDB, or Elastic
  • Lack good support for RedisTimeSeries as a first-class output
  • Why not?

rtcollector was born out of the need for:

✅ Something modular
✅ Configurable with a YAML file
✅ Built with RedisStack in mind
✅ Small enough to embed anywhere (VMs, Docker, homelabs, edge devices)


  • ⏱️ Collect metrics at configurable intervals
  • 📦 Modular input plugins (Linux CPU, Mem, Disk, etc.)
  • 🚀 Push metrics to RedisTimeSeries (via TS.ADD)
  • ⚙️ Fully YAML-configurable. No code changes needed to enable/disable plugins
  • 📚 Built with Python and easy to extend
  • 💻 Support for MacOS and Linux
  • 🏷️ Label-based key creation with per-host and per-core tags
  • 🐞 Debug logging and one-shot execution support
  • 🐳 Docker metrics via container stats and engine info
  • 🕒 Per-plugin timing with slow detection and warning indicators

Plugin Status Notes
linux_cpu per-core and total CPU usage
linux_mem free/used/available RAM
linux_disk disk usage by mount
linux_net bytes in/out, packet errors
linux_io read/write bytes and ops
macos_cpu per-core and total CPU usage
macos_mem memory usage via vm_stat
macos_disk disk usage via df
macos_io I/O stats via iostat
macos_net net stats via netstat
docker_stats container CPU, memory, and network stats; Docker Swarm toggle via config; added logging improvements and plugin execution duration tracking
mysql 🧪 basic server stats via SHOW STATUS
postgres 🧪 connections, xact commits
redis 🧪 INFO command + optional latency info

Plugin Notes
redistimeseries ✅ Default and most stable output; supports automatic key creation with retention policies and labels; supports dynamic hostname tagging and duplicate policy handling
(Planned) stdout for testing/debugging locally
(Planned) clickhouse push metrics to cold storage / analytics engine
(Planned) mqtt / http_post to integrate with IoT or alerting systems

  • Plugin-based architecture
  • YAML-based config loader
  • Add default input suite (system, docker, databases)
  • Add CLI (rtcollector run --config config.yaml)
  • Debug and once mode
  • macOS support
  • Docker Support
  • Add plugin schema validation + logging
  • RedisJSON/RediSearch support for logs
  • Redis Streams support for realtime events
  • Grafana dashboard templates for RedisTimeSeries

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

  • DevOps engineers running Redis Stack
  • Homelab enthusiasts
  • IoT builders using RedisTimeSeries
  • Anyone who wants a custom, no-bloat collector for metrics

This project is just getting started, contributions, ideas, and PRs are more than welcome!

To get started:

  1. Fork this repo
  2. Clone your fork
  3. Create a branch (git checkout -b my-feature)
  4. Commit your changes (git commit -am 'Add feature')
  5. Push to the branch (git push origin my-feature)
  6. Open a pull request

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

You are free to use, modify, and distribute this code , as long as you open source any changes and make your source code available if you deploy a modified version as a network service.

Read Entire Article