Device Simulation
Synopsis
A simulated device produces its own records instead of collecting them. Nothing needs to exist behind it: no bucket, no cluster, no queue, no host sending syslog. You turn simulation on, choose what the records should look like, and the device starts producing them.
The records it produces are ordinary device data. They pass through the device's pre-processing pipeline, follow its routes, reach its targets, and appear in live capture and in the device's throughput figures exactly as collected records would. That is what makes simulation useful: a pipeline can be built and tested, a target proved end to end, and a Director demonstrated, before the real source is available — or when it can never be reached from where you are working.
Simulation is configured per device. It appears as a simulation block.
Simulation stands in for the records a device type produces, not for the way it collects them. See Modes below, and read it before you take a green simulated device as evidence that its configuration works.
Modes
mode, and it defaults to standalone.
| Option | Value | The device's collector |
|---|---|---|
standalone | Never starts | |
inject | Starts as usual |
Standalone
In standalone mode the device's own collector is replaced. It is never started, so no port is bound, no credentials are checked, and no connection to the source is attempted. The device reports itself Connected on the strength of the generator alone, with the detail <type> device is running in simulation mode (<sample>) for <device name>.
The consequence is worth stating plainly, because a green device invites the opposite reading:
- A simulated
awss3device never contacts Amazon S3. It does not authenticate, list a bucket, fetch an object or decode one. A simulated device that reports Connected is not evidence that its bucket name, its region, its credentials or its object format are correct. - The same holds for every type. A simulated
syslogdevice binds no port, so nothing can send to it; a simulatedmssqldevice runs no query; a simulatedkafkadevice joins no consumer group.
Simulation therefore exercises everything downstream of collection — parsing in your pipeline, field mapping, routing, target delivery — and nothing of the device type's own protocol or decoding. To test the collection itself, turn simulation off and let the real collector run.
Alongside Live Data
In inject mode the device's collector starts exactly as it normally would — it binds, authenticates, and connects — and the generator runs beside it, adding records to whatever arrives. Connection state is still reported by the real collector, so a credential problem still shows up as one.
The two stop together. Stopping or restarting the device stops both the collector and the generator.
Use this mode to raise the volume on a quiet source, to add a record shape the source is not currently producing, or to test a pipeline branch that live traffic rarely reaches.
Supported Device Types
59 device types support simulation. That is every type in the catalog apart from four, and the four are excluded for the same reason: there are no incoming records for the generator to stand in for.
| Excluded type | Reason |
|---|---|
windows, linux, windows_cluster | Agent devices. Their records come from the collectors running on the enrolled machine rather than from the Director, so there is nothing on the Director's side to stand in for. See Agents |
datagen | An outbound generator. It sends traffic to another device over syslog, TCP, UDP or HTTP and never ingests anything, so it has no incoming records to simulate |
You do not have to look the list up. The simulation on an unsupported type is refused with simulation: device type does not support simulation.
Replay device types support simulation as well, on the same terms as the streaming types they mirror — see Replay Devices.
Turning Simulation On
The status, enables the section. It is off by default, and everything below it appears only once it is on.
| Setting | Field | Default | Description |
|---|---|---|---|
status | false | Whether this device generates records | |
mode | standalone | standalone or inject. See Modes | |
sample | custom | The Library sample supplying the template, or custom to write your own | |
template | - | Your own template, one record per line. Required when sample is custom | |
placeholders | - | Typed slots the template fills in per record | |
rate | 10 | Records per second, from 0.01 to 100000 | |
order | sequential | sequential or random. How a multi-line template is walked | |
duration | 0 | Stop generating after this many seconds. 0 means no time limit. At most 2592000 (30 days) | |
max_events | 0 | Stop after this many records. 0 means no limit | |
source | - | What the records report as their source. Empty applies the type's default |
This field was labelled dataset until this release. A device saved from the web interface keeps working: the platform moves simulation.dataset to simulation.sample in the stored device properties once, and the configuration it generates for the device's Director carries sample from then on. Only a hand-written Director configuration file that still says dataset: has to be changed by hand, since the old key is no longer read.
Choosing What the Records Look Like
A Library Sample
The dropdown only ever lists samples that apply to this device type, which means a device type no sample has been scoped to is offered very little. Most of the built-in samples are scoped to syslog or S3 devices, so for anything else you will usually clone a built-in and widen it, or write a sample of your own. Samples are described under Library: Samples.
In the web interface a new device arrives at the section with a sample already selected for its type, so turning the toggle on and saving is enough to get records flowing. Change it, or switch to custom default in the table above is the value that applies when a simulation block leaves sample out altogether, as a hand-written Director configuration may — it is not what the wizard pre-selects for you.
A sample's placeholders are defaults, and you can narrow any of them without editing the sample. Choose
Your Own Template
Selecting {{name}}:
<134>{{ts}} fw-edge-01 vmfw: action=allow src={{src_ip}}:{{src_port}} dst=203.0.113.9:443 user={{username}}
<134>{{ts}} fw-edge-01 vmfw: action=deny src={{src_ip}}:{{src_port}} dst=203.0.113.9:22 user={{username}}
Declare ts, src_ip and src_port in the username needs no entry, because it is a placeholder type in its own right. The full set of types, their options and the timestamp formats are in Simulation Placeholders.
Leaving simulation: a custom sample needs a template. In the web interface the same omission is refused with A custom template cannot be empty.