Datagen source plugin
The Datagen source plugin generates simulated log data through Gofakeit (opens in a new tab). You can use this simulated data to test your pipeline configurations.
This plugin doesn't support the use of a descriptive metadata name in the Pipeline Builder interface.
Supported telemetry types
This plugin supports these telemetry types:
Logs | Metrics | Traces |
---|---|---|
Configuration parameters
Use the parameters in this section to configure your plugin. The Telemetry Pipeline web interface uses the values in the Name column to describe the parameters. Items in the Key column are the YAML keys to use in pipeline configuration files.
General
Name | Key | Description | Default |
---|---|---|---|
Template | template | Required. A JSON object that specifies how to generate log data. Accepted types: Apache common, Syslog rfc3164, or Syslog rfc5424. See Templates. | none |
none | rate | How often to generate logs, in seconds. | 1 |
Templates
Templates define the structure and content of your simulated log data. When you
configure the Datagen source plugin in a pipeline's YAML configuration file, use
the template
key to create a JSON object. For example:
pipeline:
inputs:
- name: datagen
template: |-
{
"host": "{{ IPv4Address }}",
"user": {
"user-identifier": "{{ Username }}",
"auth-user-id": "{{ UUID }}",
}
"method": "{{ HTTPMethod }}",
"request": "{{ URLPath }}",
"protocol": "{{ HTTPVersion }}",
"response-code": "{{ HTTPStatusCode }}",
"bytes": "{{ Number 0 30_000 }}"
}
When the Datagen plugin generates logs, each log matches the format of your template, but any included functions are replaced by simulated data. For best results, Chronosphere recommends creating a JSON object that uses custom strings for its keys and functions for its values.
Functions
The Datagen plugin uses functions to generate randomized values that follow a
consistent pattern. For example, {{ HTTPMethod }}
can output a string like
GET
, POST
, or PUT
, but not a string like GREEN
or SUNDAY
.
To invoke a function in a template, surround the name of that function with double curly braces.
Suggested functions
You can use any of the available Gofakeit functions (opens in a new tab) in a template. The following functions are best suited for generating realistic log data:
{{ HTTPMethod }}
: Returns an HTTP method, likeGET
.{{ HTTPStatusCode }}
: Returns an HTTP status code, like403
.{{ HTTPVersion }}
: Returns an HTTP protocol version, likeHTTP/1.1
.{{ IPv4Address }}
: Returns a random IPv4 address.{{ IPv6Address }}
: Returns a random IPv6 address.{{ Username }}
: Returns a random username, likeBailey1270
.{{ UUID }}
: Returns a string of numbers in UUID format.{{ Date }}
: Returns a random time in UTC format.{{ LogLevel syslog }}
: Returns a log type, likealert
.{{ Number 0 30_000 }}
: Returns a number between 0 and 30,000.{{ URLPath }}
: Returns a string that resembles a URL path, like/foo/bar
. This function is unique to Datagen and isn't included in Gofakeit.{{ URLScheme }}
: Returns eitherhttp
orhttps
. This function is unique to Datagen and isn't included in Gofakeit.
Example output
For a pipeline with the following template:
pipeline:
inputs:
- name: datagen
template: |-
{
"response-code": "{{ HTTPStatusCode }}",
"bytes": "{{ Number 0 30_000 }}"
"host": "{{ IPv4Address }}",
}
The Datagen source plugin generates simulated log data in the following format:
{"response-code"=>201.000000, "bytes"=>29600.000000, "host"=>"64.15.54.123"}
{"response-code"=>302.000000, "bytes"=>429.000000, "host"=>"214.221.240.201"}
{"response-code"=>205.000000, "bytes"=>3507.000000, "host"=>"27.79.197.250"}
{"response-code"=>504.000000, "bytes"=>758.000000, "host"=>"211.135.114.51"}
{"response-code"=>404.000000, "bytes"=>12190.000000, "host"=>"84.74.177.0"}