Provide a demo mode for all components that depend on an external dependency #11563
Labels
domain: setup
Anything related to setting up or installing Vector
domain: sinks
Anything related to the Vector's sinks
domain: sources
Anything related to the Vector's sources
domain: transforms
Anything related to Vector's transform components
needs: rfc
Needs an RFC before work can begin.
type: enhancement
A value-adding code change that enhances its existing functionality.
The ability to demo any Vector configuration without external dependencies would greatly reduce the friction of demoing for the purposes of education, sales, and development of tools that depend on Vector (i.e., dashboards, a UI, etc.).
Currently, we offer a
vector-demos
repository but this spins up a full environment with mock dependencies. It is great for integration testing, or demonstrating the installation onto platforms like Kubernetes, but it is not great for demonstrating very specific use cases (i.e., reducing cost of AWS VPC logs coming from AWS S3 and going to Splunk). Instead, Vector should offer "demo modes" for all of its components that depend on external dependencies.Example
Taking the example above (reducing cost of AWS VPC logs coming from AWS S3 and going to Splunk), we could provide the following configuration. Because the new
demo
mode more or less mocks I/O, it could be run locally, on any supported platform, without the need to provision any external services:aws_s3
source would emit fake logs that mimic reading AWS VPC logs from S3.remap
transform could demonstrate dropping extraneous attributes for cost cutting.splunk_hec
sink would simply drop the data it receives.Use cases
Open questions
Is it best to embed a
demo
option into each component?The thinking here was to require every source to provide some way of demoing, and make it easy to flip existing components into demo mode. You could also imagine a global
demo
option that does this across the board. The problem is that this gets into some strange issues:aws_s3.region
option).Should we include transforms that interface with an external service?
For example, the
ec2_metadata
transform could enrich events with fake data.The text was updated successfully, but these errors were encountered: