exec
Execute arbitrary commands
Things to note:
- By default, input data streams through the output process, i.e. works like a shell filter.
You cannot have
${field}
expansions of the command when streaming, so streaming is switched off. Then the command will be executed once for each input line. Withinput-field
you have to explicitly ask forstreaming: true
for reasons of backward compatibility. - With batched output you will have access to the fields of the first event in the batch
| Field Name | Description | Type | Default |
|------|----|---|---|
|[input-field](#input-field)| A field from where data is to be read, meaning JSON is assumed | field | - |
|[command](#command)| A shell command to be executed | string | - |
|[streaming](#streaming)| Run the command separately for each event | bool | true |
|[retry](#retry)| For operations that could potentially fail | - | - |
|[batch-out](#batch-out)| Some outputs support batching the output events, by maximum size, timeout, or end of document | - | - |
#### input-field
A field from where data is to be read, meaning JSON is assumed
Otherwise the whole event is sent
**Type:** field
**Example**
_input_:
```json
{"text":"one","number":1}
action:
exec:
input-field: text
command: cat
output:
one
command
A shell command to be executed
If streaming
is set to false (or input-field by default) then there can be field expansions
Type: string
Example
input:
{"text":"one","number":1}
action:
exec:
command: cat
output:
{"text":"one","number":1}
streaming
Run the command separately for each event
Normally, the command runs continuously and events are passed through
Type: bool
Example: streaming must be explicit if input-field
is defined
input:
{"msg":"hello dolly"}
{"msg":"we are happy"}
action:
exec:
input-field: msg
streaming: true
command: tr 'h' 'H'
output:
Hello dolly
we are Happy
Example: streaming is implicit if there are field expansions
input:
{"text":"one","number":1}
action:
exec:
command: echo "${text}-${number}"
output:
one-1
retry
For operations that could potentially fail
Field Name | Description | Type | Default |
---|---|---|---|
count | How many attempts to make before declaring failure | integer | - |
pause | How long to pause before re-trying | duration | - |
forever | keep trying until success is declared | bool | false |
count
How many attempts to make before declaring failure
Type: integer
Example
action:
exec:
command: echo 'one two'
retry:
count: 1
output:
{"_raw":"one two"}
pause
How long to pause before re-trying
Accepts human-friendly formats, like 1m (for 1 minute) and 4h (for 4 hours)
Type: duration
Example
action:
exec:
command: echo 'one two'
retry:
count: 6
pause: 10s
output:
{"_raw":"one two"}
forever
keep trying until success is declared
Accepts human-friendly formats, like 1m (for 1 minute) and 4h (for 4 hours)
Type: bool
Example
action:
exec:
command: echo 'one two'
retry:
forever: true
output:
{"_raw":"one two"}
batch-out
Some outputs support batching the output events, by maximum size, timeout, or end of document
Field Name | Description | Type | Default |
---|---|---|---|
batch | maximum number of events in an output batch. If 'document' send on end of document | - | - |
timeout | interval after which the batch is sent, to keep throughput going | - | 100ms |
header | put a header line before the batch | - | - |
footer | put a header line after the last line of the batch | - | - |
batch
maximum number of events in an output batch. If 'document' send on end of document
timeout
interval after which the batch is sent, to keep throughput going
header
put a header line before the batch
footer
put a header line after the last line of the batch