logstash/docs/static/plugin-manager.asciidoc
Ry Biesemeyer 6943df5570
plugin manager: add --level=[major|minor|patch] (default: minor) (#16899)
* plugin manager: add `--level=[major|minor|patch]` (default: `minor`)

* docs: plugin manager update `--level` behavior

* Update docs/static/plugin-manager.asciidoc

Co-authored-by: João Duarte <jsvd@users.noreply.github.com>

* docs: plugin update major as subheading

* docs: intention-first in major plugin updates

* Update docs/static/plugin-manager.asciidoc

Co-authored-by: Karen Metts <35154725+karenzone@users.noreply.github.com>

---------

Co-authored-by: João Duarte <jsvd@users.noreply.github.com>
Co-authored-by: Karen Metts <35154725+karenzone@users.noreply.github.com>
2025-01-28 08:33:37 -08:00

179 lines
6.1 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[[working-with-plugins]]
== Working with plugins
[IMPORTANT]
.macOS Gatekeeper warnings
====
Apple's rollout of stricter notarization requirements affected the notarization
of the {version} {ls} artifacts. If macOS Catalina displays a dialog when you
first run {ls}, you need to take an action to allow it to run.
To prevent Gatekeeper checks on the {ls} files, run the following command on the
downloaded `.tar.gz` archive or the directory to which was extracted:
[source,sh]
----
xattr -d -r com.apple.quarantine <archive-or-directory>
----
For example, if the `.tar.gz` file was extracted to the default
logstash-{version} directory, the command is:
[source,sh,subs="attributes"]
----
xattr -d -r com.apple.quarantine logstash-{version}
----
Alternatively, you can add a security override if a Gatekeeper popup appears by
following the instructions in the _How to open an app that hasnt been notarized
or is from an unidentified developer_ section of
https://support.apple.com/en-us/HT202491[Safely open apps on your Mac].
====
Logstash has a rich collection of input, filter, codec, and output plugins.
Check out the https://www.elastic.co/support/matrix#matrix_logstash_plugins[Elastic Support Matrix]
to see which plugins are supported at various levels.
Plugins are available in self-contained packages called gems and hosted on
https://rubygems.org/[RubyGems.org]. Use the plugin manager
script--`bin/logstash-plugin`--to manage plugins:
* <<listing-plugins>>
* <<installing-plugins>>
* <<updating-plugins>>
* <<removing-plugins>>
* <<installing-local-plugins>>
* <<installing-local-plugins-path>>
[discrete]
[[pointer-to-offline]]
=== No internet connection?
If you don't have an internet connection, check out <<offline-plugins>> for
information on <<building-offline-packs,building>>,
<<installing-offline-packs,installing>>, and <<updating-offline-packs,updating>>
offline plugin packs.
[discrete]
[[http-proxy]]
==== Proxy configuration
Most plugin manager commands require access to the internet to reach https://rubygems.org[RubyGems.org].
If your organization is behind a firewall, you can set these environments variables to configure Logstash to use your proxy.
[source, shell]
----------------------------------
export http_proxy=http://localhost:3128
export https_proxy=http://localhost:3128
----------------------------------
[discrete]
[[listing-plugins]]
=== Listing plugins
Logstash release packages bundle common plugins. To list the plugins currently
available in your deployment:
[source,shell]
----------------------------------
bin/logstash-plugin list <1>
bin/logstash-plugin list --verbose <2>
bin/logstash-plugin list '*namefragment*' <3>
bin/logstash-plugin list --group output <4>
----------------------------------
<1> Lists all installed plugins
<2> Lists installed plugins with version information
<3> Lists all installed plugins containing a namefragment
<4> Lists all installed plugins for a particular group (input, filter, codec, output)
[discrete]
[[installing-plugins]]
=== Adding plugins to your deployment
When you have access to internet, you can retrieve plugins hosted on the
https://rubygems.org/[RubyGems.org]public repository and install them on top of
your Logstash installation.
[source,shell]
----------------------------------
bin/logstash-plugin install logstash-input-github
----------------------------------
After a plugin is successfully installed, you can use it in your configuration file.
[discrete]
[[updating-plugins]]
=== Updating plugins
Plugins have their own release cycles and are often released independently of Logstashs core release cycle.
Using the update subcommand you can get the latest version of the plugin.
[source,shell]
----------------------------------
bin/logstash-plugin update <1>
bin/logstash-plugin update logstash-input-github <2>
----------------------------------
<1> updates all installed plugins
<2> updates only the plugin you specify
[discrete]
[[updating-major]]
==== Major version plugin updates
To avoid introducing breaking changes, the plugin manager updates only plugins for which newer _minor_ or _patch_ versions exist by default.
If you wish to also include breaking changes, specify `--level=major`.
[source,shell]
----------------------------------
bin/logstash-plugin update --level=major <1>
bin/logstash-plugin update --level=major logstash-input-github <2>
----------------------------------
<1> updates all installed plugins to latest, including major versions with breaking changes
<2> updates only the plugin you specify to latest, including major versions with breaking changes
[discrete]
[[removing-plugins]]
=== Removing plugins
If you need to remove plugins from your Logstash installation:
[source,shell]
----------------------------------
bin/logstash-plugin remove logstash-input-github
----------------------------------
[discrete]
[[installing-local-plugins]]
==== Advanced: Adding a locally built plugin
In some cases, you may want to install plugins which are not yet released and
not hosted on RubyGems.org. Logstash provides you the option to install a
locally built plugin which is packaged as a ruby gem. Using a file location:
[source,shell]
----------------------------------
bin/logstash-plugin install /path/to/logstash-output-kafka-1.0.0.gem
----------------------------------
[discrete]
[[installing-local-plugins-path]]
==== Advanced: Using `--path.plugins`
Using the Logstash `--path.plugins` flag, you can load a plugin source code located on your file system. Typically this is used by
developers who are iterating on a custom plugin and want to test it before creating a ruby gem.
The path needs to be in a specific directory hierarchy: `PATH/logstash/TYPE/NAME.rb`, where TYPE is 'inputs' 'filters', 'outputs' or 'codecs' and NAME is the name of the plugin.
[source,shell]
----------------------------------
# supposing the code is in /opt/shared/lib/logstash/inputs/my-custom-plugin-code.rb
bin/logstash --path.plugins /opt/shared/lib
----------------------------------
include::cross-plugin-concepts.asciidoc[]
include::plugin-generator.asciidoc[]
include::offline-plugins.asciidoc[]
include::private-gem-repo.asciidoc[]
include::event-api.asciidoc[]