Logstash
The Logstash source receives logs forwarded from Logstash over TCP. Bindplane runs a TCP listener that accepts newline-delimited JSON events from a Logstash tcp output, parses the standard Logstash fields (@timestamp, host.name, log.file.path, message), and maps them onto the OpenTelemetry log record.
Supported Telemetry Types
Linux
✓
Windows
✓
macOS
✓
Prerequisites
A running Logstash instance with a
tcpoutput configured to send JSON-encoded events to the collector.The collector reachable from Logstash on the configured TCP port.
When TLS is enabled, a TLS certificate and private key available on the collector host.
Configuration

Logs
Listen Address
String
0.0.0.0
IP address to listen on.
Listen Port
Integer
2255
TCP port to listen on. Required.
Log Type
String
logstash
Value for the log_type attribute. Useful for filtering between many Logstash sources.
Advanced (TLS)
Enable TLS
Boolean
false
Whether or not to use TLS.
TLS Certificate File
String
Path to the TLS certificate to use for TLS-required connections. Applies when TLS is enabled.
TLS Private Key File
String
Path to the TLS private key to use for TLS-required connections. Applies when TLS is enabled.
Minimum TLS Version
Enum
1.2
Minimum TLS version to support. Valid values: 1.3, 1.2, 1.1, 1.0. 1.0 and 1.1 should not be considered secure. Applies when TLS is enabled.
Example Configuration
Standalone Source
With TLS enabled:
Configuring Logstash to forward to the collector
The Logstash source expects newline-delimited JSON events. On the Logstash side, configure a tcp output with the json_lines codec pointed at the collector's host and listen port:
<collector-host>is the address of the collector running the Logstash source.portmust match thelisten_portconfigured on the source (2255by default).The
json_linescodec is required so each event is delivered as a single JSON object per line.
The source parses the standard Logstash fields automatically: @timestamp is promoted to the log record timestamp, host.name becomes a resource attribute, log.file.path becomes a log record attribute, and the @timestamp, event.original, and @version fields are removed after parsing.
Configuration Tips
Distinguishing multiple Logstash sources
Set
log_typeto a distinct value per source so downstream pipelines can filter events by their origin. The value is written to thelog_typeattribute on every record.
Enabling TLS
Set
enable_tlstotrueand providetls_certificate_pathandtls_private_key_pathon the collector host.Configure a matching
ssl_enableblock on the Logstashtcpoutput so the two ends agree on TLS.Leave
tls_min_versionat1.2or higher; 1.0 and 1.1 are not considered secure.
Troubleshooting
Symptom: No logs arrive from Logstash. Solution: Confirm the Logstash tcp output host and port match the collector address and the source listen_port (2255 by default), and that the collector is reachable from Logstash on that port. Verify the output uses the json_lines codec.
Symptom: Logs arrive but the message body is a single unparsed JSON string instead of structured fields. Solution: The source parses JSON events. Make sure the Logstash tcp output uses the json_lines codec so each event is sent as one JSON object per line. Plain-text or line codecs will not parse correctly.
Symptom: The log record timestamp does not match event time. Solution: Ensure the events include an @timestamp field in the format %Y-%m-%dT%H:%M:%S.%fZ (the Logstash default). When @timestamp is absent, the receiver falls back to ingestion time.
Related Resources
Last updated
Was this helpful?