Skip to content

Conversation

@xe-nvdk
Copy link

@xe-nvdk xe-nvdk commented Oct 22, 2025

Summary

Adds Arc output plugin - a high-performance time-series database output using MessagePack binary protocol.

Features

  • MessagePack binary protocol (3-5x faster than line protocol)
  • Columnar data format for direct Arrow/Parquet writes
  • Multi-database support for environment/tenant isolation
  • Gzip compression (reduces bandwidth by ~10x)
  • Batch processing with configurable sizes
  • Comprehensive error handling and logging

Testing

All tests passing (9/9):

  • Connection handling
  • Write operations (single/batch)
  • API key authentication
  • Error scenarios
  • MessagePack encoding
  • Configuration validation

Documentation

  • Comprehensive README with examples
  • Configuration guide for basic/high-performance/multi-database setups
  • Troubleshooting section
  • Performance tuning guide

xe-nvdk and others added 9 commits October 6, 2025 18:42
… writes

Adds Arc output plugin - a high-performance time-series database output using MessagePack binary protocol.

- MessagePack binary protocol (3-5x faster than line protocol)
- Columnar data format for direct Arrow/Parquet writes
- Multi-database support for environment/tenant isolation
- Gzip compression (reduces bandwidth by ~10x)
- Batch processing with configurable sizes
- Comprehensive error handling and logging

- Columnar format: 2.66x faster than row format
- Throughput: 2.42M records/sec
- Optimized for high-volume IoT and observability workloads

All tests passing (9/9):
- Connection handling
- Write operations (single/batch)
- API key authentication
- Error scenarios
- MessagePack encoding
- Configuration validation

- Comprehensive README with examples
- Configuration guide for basic/high-performance/multi-database setups
- Troubleshooting section
- Performance tuning guide
@telegraf-tiger
Copy link
Contributor

Thanks so much for the pull request!
🤝 ✒️ Just a reminder that the CLA has not yet been signed, and we'll need it before merging. Please sign the CLA when you get a chance, then post a comment here saying !signed-cla

@xe-nvdk
Copy link
Author

xe-nvdk commented Oct 22, 2025

Hey team. I hope that everybody is doing good over there. Happy to contribute with an output plugin. Open to make modifications in the case that I missed something. By the way: !signed-cla

Have a great days, folks.
Ignacio

@xe-nvdk
Copy link
Author

xe-nvdk commented Oct 22, 2025

!signed-cla

@xe-nvdk xe-nvdk changed the title Adds Arc output plugin - a high-performance time-series database output using MessagePack binary protocol. feat(outputs): add arc output plugin for high-performance time-series writes Oct 22, 2025
@telegraf-tiger telegraf-tiger bot added the feat Improvement on an existing feature such as adding a new setting/mode to an existing plugin label Oct 22, 2025
Added github.com/vmihailenco/tagparser with BSD 2-Clause License
Entries added in alphabetical order between vjeantet/grok and vmware/govmomi
Verification
✅ make check-deps now passes successfully across all 18 target platforms (darwin, freebsd, linux, windows on various architectures) All Telegraf CI checks should now pass:
✅ Markdown linting (README.md)
✅ Go code linting (arc.go, arc_test.go)
✅ Dependency license documentation (LICENSE_OF_DEPENDENCIES.md)
Modified files ready for commit:
plugins/outputs/arc/README.md - All markdown linting issues fixed
docs/LICENSE_OF_DEPENDENCIES.md - Added msgpack and tagparser licenses
@telegraf-tiger
Copy link
Contributor

@Hipska
Copy link
Contributor

Hipska commented Oct 24, 2025

Maybe I'm missing something, but can't you already use outputs.http with data_format = "msgpack"?

@xe-nvdk
Copy link
Author

xe-nvdk commented Oct 24, 2025

Maybe I'm missing something, but can't you already use outputs.http with data_format = "msgpack"?

Yes, it can be used, but the best performance comes from our columnar format. The implementation you're referring to sends row-based data, which introduces conversion overhead when we transform rows to columns.

The output send directly the data in columnar format.

Let me know if you have additional questions.

Thank you
Ignacio

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feat Improvement on an existing feature such as adding a new setting/mode to an existing plugin

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants