VSCode Logstash Editor
Visual Studio Code extension that provides completion, documentation and auto-formatting for Logstash pipeline configuration files, logstash.yml, pipelines.yml, filebeat.yml and Elasticsearch index template json files.

Features
- Provides completion for Logstash pipeline configuration files (sections, plugins, options), depending current cursor position.
For example, if cursor is inside grok
filter, options for grok
filter are suggested.
- All completion data is generated based on official Logstash documentation
- Options for a plugin are sorted : first required options, then optional specific options, and finally optional common options
- When you preselect an item, a link to official documentation, a short description and an example (if available) are provided
- If you choose a completion item, a code snippet is automatically inserted with relevant content:
- for a plugin, inserted snippet is the plugin block and all its required options
- for an option, inserted snippet is based on option type (string, boolean, number, string_duration, array, hash) and option default value
- Provides completion for if statement
- Provides documentation when hover on a section, a plugin or an option
- Provides document formatting and document range formatting on a Logstash pipeline configuration file
- Provides completion for "logstash.yml" and "pipelines.yml" files
- Provides completion for Filebeat configuration files (version 8.14)
- Provides completion for Elasticsearch index template (and composable index template) json files
- Provides completion for Elasticsearch component template json files
- Provides a specific json schema for Elasticsearch index template 6.x, 7.x and 8.x
- Elasticsearch completion is based on elasticsearch-specification
- Provides "logstash.version" configuration setting to choose Logstash version (for completion)
- Provides "Set Logstash Version" command (shortcut: Ctrl+Shift+L) to change Logstash version setting
- Supported Logstash versions: 6.8, 7.17, 8.14 and latest
- Provides "logstash.enableDefaultVSCodeCompletion" setting to enable default VSCode completion when the extension does not have suggestions to provide
- Following file patterns are automatically associated to Logstash language:
*logstash.conf
*logstash.conf.j2
*logstash.conf.template
logstash-*.conf
- Following file patterns are automatically associated to Filebeat json schema:
filebeat.yml
filebeat-*.yml
filebeat.config.inputs.yml
filebeat.config.modules.yml
filebeat*/inputs.d/*.yml
filebeat*/modules.d/*.yml
- Following file patterns are automatically associated to Elasticsearch index template json schema:
*elasticsearch-template-es8x*.json
*elasticsearch-template-es7x*.json
*elasticsearch-template-es6x*.json
*index-template*.json
*/_index_templates/*.json
- Following file patterns are automatically associated to Elasticsearch component template json schema:
*component-template*.json
*/_component_templates/*.json
Syntax highlighting
This extension does not provide syntax highlighting for Logstash configuration files, because this feature is already provdided by Logstash Configuration Syntax / Language Support extension.
Both extensions complement each other perfectly.
Troubleshooting
- if completion does not work and your Visual Studio Code version is less than 1.52, upgrade your Visual Studio Code version.
- if you don't see documentation associated to completion suggestions, type "Ctrl + Space" once again or click on the ">" (or "i") button:

Advanced tip: choose Elasticsearch index template minor version
By default, with Logstash Editor extension, Elasticsearch index template version is based on file name. And only major versions are supported (6, 7 and 8).
If you want to have completion for one specific minor version, you can do it with 2 ways:
- you use "$schema" attribute in index template JSON file:
{
"$schema": "https://raw.githubusercontent.com/fbaligand/vscode-logstash-editor/es-<VERSION>/jsonschemas/elasticsearch-template-es7x.schema.json"
}
- in Visual Studio Code settings, you associate you index template file pattern with URL to JSON schema:
"json.schemas": [
{
"fileMatch": [
"/my-elasticsearch-index-template.json"
],
"url": "https://raw.githubusercontent.com/fbaligand/vscode-logstash-editor/es-<VERSION>/jsonschemas/elasticsearch-template-es7x.schema.json"
}
]
In both cases, you replace <VERSION>
with one of the supported versions: 6.8
, 7.17
or 8.14
Limitations
For now, only this format style is supported for completion in Logstash configuration files:
filter {
tcp {
port => 12345
}
}
This format style is not supported:
filter
{
tcp
{
port => 12345
}
}
Neither this one:
filter { tcp { port => 12345 } }