Logisland Components
In this guide we will present you how the logisland plugins architecture and how to manage them
1. What’s a plugin?
A logisland plugin is anything can bring a functionality to logisland.
It can be:
-
A processor
-
A controller service
-
A connector
2. How a plugin is packaged
A plugin is a jar in the logisland lib folder containing a special manifest giving some information about:
-
Exported components
-
Versions
-
Classloading rules
As well a plugin jar contains every additional dependency is required to make it work with logisland, that ensures the portability with a single file.
3. How about naming?
When talking about a plugin we talk about an artifact.
Logisland uses the same maven naming convention (groupId, artifactId, version) to locate a plugin. This ensure a component to be unique and versioned.
4. Getting started
Everything about plugins is managed through the components.sh client utility (in the bin folder along with logisland.sh command).
Let’s see the main actions you can do with
4.1. Listing all components
Simply use the -l option.
bin/components.sh -l
to get the iinstalled component list
Listing details for 1 installed modules.
Artifact: com.hurence.logisland:logisland-processor-common:1.0.0
Name: Common processors bundle
Version: 1.0.0
Components provided:
com.hurence.logisland.processor.AddFields
com.hurence.logisland.processor.ApplyRegexp
com.hurence.logisland.processor.ConvertFieldsType
com.hurence.logisland.processor.DebugStream
com.hurence.logisland.processor.EvaluateJsonPath
com.hurence.logisland.processor.FilterRecords
com.hurence.logisland.processor.FlatMap
com.hurence.logisland.processor.GenerateRandomRecord
com.hurence.logisland.processor.ModifyId
com.hurence.logisland.processor.NormalizeFields
com.hurence.logisland.processor.ParseProperties
com.hurence.logisland.processor.RemoveFields
com.hurence.logisland.processor.SelectDistinctRecords
com.hurence.logisland.processor.SendMail
com.hurence.logisland.processor.SplitField
com.hurence.logisland.processor.SplitText
com.hurence.logisland.processor.SplitTextMultiline
com.hurence.logisland.processor.SplitTextWithProperties
com.hurence.logisland.processor.alerting.CheckAlerts
com.hurence.logisland.processor.alerting.CheckThresholds
com.hurence.logisland.processor.alerting.ComputeTags
com.hurence.logisland.processor.datastore.BulkPut
com.hurence.logisland.processor.datastore.EnrichRecords
com.hurence.logisland.processor.datastore.MultiGet
This above is the logisland common processor modules bundled by default in the distribution.
As we can see the command line tell us some nice information:
-
The file name
-
The version
-
The components it provides
4.2. Installing a component
You can install two things of components:
-
A logisland plugin
-
A kafka connect source or sink (more information on `connectors section <connectors.html>`_)
The generic syntax for both is:
bin/components.sh -i <plugin_artifact>
For instance, if we want to install elasticsearch 5.4 controller service we are going to install the related module called com.hurence.logisland:logisland-service-elasticsearch_5_4_0-client:<logisland_version>
bin/components.sh -i com.hurence.logisland:logisland-service-elasticsearch_5_4_0-client:1.0.0
Downloading dependencies. Please hold on...
Found logisland plugin Elasticsearch 5.4.0 Service Plugin version 1.1.2
It will provide:
com.hurence.logisland.service.elasticsearch.Elasticsearch_6_6_2_ClientService
Install done!
4.3. Removing a component
Just delete the jar on the lib folder or use the components.sh with the -r option.
bin/components.sh -i com.hurence.logisland:logisland-service-elasticsearch_5_4_0-client:1.0.0
5. Which module contains my component?
You can easily know with module you require to install in case you need a specific component.
The `component documentation <components.html>`_ contains a Module section for each component. It will tell you the artifact you should install.
6. How about the distribution ?
Logisland uses `apache ivy <http://ant.apache.org/ivy/>`_ to download the plugins. This allows you to choose the right repository (e.g. a common nexus or an enterprise artifactory) in order to manage and control the dependencies.
You can fine tune this by editing (at your own risks) the ivy.xml file on the conf directory.