[ https://issues.apache.org/jira/browse/NIFI-5767?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16672870#comment-16672870 ]
ASF GitHub Bot commented on NIFI-5767: -------------------------------------- Github user pvillard31 commented on a diff in the pull request: https://github.com/apache/nifi/pull/3124#discussion_r230325510 --- Diff: nifi-docs/src/main/asciidoc/toolkit-guide.adoc --- @@ -0,0 +1,1257 @@ +// +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// += Apache NiFi Toolkit Guide +Apache NiFi Team <d...@nifi.apache.org> +:homepage: http://nifi.apache.org +:linkattrs: + +== Overview +The NiFi Toolkit contains several command line utilities to setup and support NiFi in standalone and clustered environments. The utilities include: + +* CLI -- The `cli` tool enables administrators to interact with NiFi and NiFi Registry instances to automate tasks such as deploying versioned flows and managing process groups and cluster nodes. +* Encrypt Config -- The `encrypt-config` tool encrypts the sensitive keys in the _nifi.properties_ file to facilitate the setup of a secure NiFi instance. +* File Manager -- The `file-manager` tool enables administrators to backup, install or restore a NiFi installation from backup. +* Flow Analyzer -- The `flow-analyzer` tool produces a report that helps administrators understand the max amount of data which can be stored in backpressure for a given flow. +* Node Manager -- The `node-manager` tool enables administrators to perform status checks on nodes as well as the ability to connect, disconnect, or remove nodes from the cluster. +* Notify -- The `notify` tool enables administrators to send bulletins to the NiFi UI. +* S2S -- The `s2s` tool enables administrators to send data into or out of NiFi flows over site-to-site. +* TLS Toolkit -- The `tls-toolkit` utility generates the required keystores, truststore, and relevant configuration files to facilitate the setup of a secure NiFi instance. +* ZooKeeper Migrator -- The `zk-migrator` tool enables administrators to: +** move ZooKeeper information from one ZooKeeper cluster to another +** migrate ZooKeeper node ownership + +The utilities are executed with scripts found in the `bin` folder of your NiFi Toolkit installation. + +NOTE: The NiFi Toolkit is downloaded separately from NiFi (see the link:https://nifi.apache.org/download.html[Apache NiFi downloads page^]). + +=== Prerequisites for Running in a Secure Environment +For secured nodes and clusters, two policies should be configured in advance: + +* Access the controller – A user that will have access to these utilities should be authorized in NiFi by creating an “access the controller” policy (`/controller`) with both view and modify rights +* Proxy user request – If not previously set, node’s identity (the DN value of the node’s certificate) should be authorized to proxy requests on behalf of a user + +When executing either the Notify or Node Manager tools in a secured environment the `proxyDN` flag option should be used in order to properly identify the user that was authorized to execute these commands. In non-secure environments, or if running the status operation on the Node Manager tool, the flag is ignored. + +== NiFi CLI +This tool offers a CLI focused on interacting with NiFi and NiFi Registry in order to automate tasks, such as deploying flows from a NIFi Registy to a NiFi instance or managing process groups and cluster nodes. + +=== Usage +The CLI toolkit can be executed in standalone mode to execute a single command, or interactive mode to enter an interactive shell. + +To execute a single command: + + ./bin/cli.sh <command> <args> + +To launch the interactive shell: + + ./bin/cli.sh + +To show help: + + cli.sh -h + +The following are available options: + + demo quick-import + nifi current-user + nifi cluster-summary + nifi connect-node + nifi delete-node + nifi disconnect-node + nifi get-root-id + nifi get-node + nifi get-nodes + nifi offload-node + nifi list-reg-clients + nifi create-reg-client + nifi update-reg-client + nifi get-reg-client-id + nifi pg-import + nifi pg-start + nifi pg-stop + nifi pg-get-vars + nifi pg-set-var + nifi pg-get-version + nifi pg-change-version + nifi pg-get-all-versions + nifi pg-list + nifi pg-status + nifi pg-get-services + nifi pg-enable-services + nifi pg-disable-services + registry current-user + registry list-buckets + registry create-bucket + registry delete-bucket + registry list-flows + registry create-flow + registry delete-flow + registry list-flow-versions + registry export-flow-version + registry import-flow-version + registry sync-flow-versions + registry transfer-flow-version + session keys + session show + session get + session set + session remove + session clear + exit + help + +=== Property/Argument Handling +Most commands will require specifying a baseUrl for the NiFi or NiFi Registry instance. + +An example command to list the buckets in a NiFi Registry instance would be the following: + + ./bin/cli.sh registry list-buckets -u http://localhost:18080 + +In order to avoid specifying the URL (and possibly other optional arguments for TLS) on every command, you can define a properties file containing the repetitive arguments. + +An example properties file for a local NiFi Registry instance would look like the following: + +``` + baseUrl=http://localhost:18080 + keystore= + keystoreType= + keystorePasswd= + keyPasswd= + truststore= + truststoreType= + truststorePasswd= + proxiedEntity= +``` + +This properties file can then be used on a command by specifying `-p`: + + ./bin/cli.sh registry list-buckets -p /path/to/local-nifi-registry.properties + +You could then maintain a properties file for each environment you plan to interact with, such as Dev, QA, and Prod. + +In addition to specifying a properties file on each command, you can setup a default properties file to be used in the event that no properties file is specified. + +The default properties file is specified using the `session` concept, which persists to the users home directory in a file called _.nifi-cli.config_. + +An example of setting the default property files for NiFi would be the following: + + ./bin/cli.sh session set nifi.props /path/to/local-nifi.properties + +An example for NiFi Registry would be the following: + + ./bin/cli.sh session set nifi.reg.props /path/to/local-nifi-registry.properties + +This will write the above properties into the _.nifi-cli.config_ in the user's home directory and will allow commands to be executed without specifying a URL or properties file: + + ./bin/cli.sh registry list-buckets + +The above command will now use the `baseUrl` from _local-nifi-registry.properties_. + +The order of resolving an argument is the following: + +* A direct argument overrides anything in a properties file or session +* A properties file argument (`-p`) overrides the session +* The session is used when nothing else is specified + +=== Security Configuration +If NiFi and NiFi Registry are secured, then commands executed from the CLI will need to make a TLS connection and authenticate as a user with permissions to perform the desired action. + +Currently the CLI supports authenticating with a client certificate and an optional proxied-entity. A common scenario would be running the CLI from one of the nodes where NiFi or NiFi Registry is installed, which allows the CLI to use the same keystore and truststore as the NiFi/NiFi Registry instance. + +The security configuration can be specified per-command, or in one of the properties files described in the previous section. + +The examples below are for NiFi Registry, but the same concept applies for NiFi commands. + +==== Example - Secure NiFi Registry without Proxied-Entity +Assuming we have a keystore containing the certificate for "CN=user1, OU=NIFI", an example properties file would be the following: + +``` + baseUrl=https://localhost:18443 + keystore=/path/to/keystore.jks + keystoreType=JKS + keystorePasswd=changeme + keyPasswd=changeme + truststore=/path/to/truststore.jks + truststoreType=JKS + truststorePasswd=changeme +``` + +In this example, commands will be executed as "CN=user1, OU=NIFI". This user would need to be a user in NiFi Registry, and commands accessing buckets would be restricted to buckets this user has access to. + +==== Example - Secure NiFi Registry with Proxied-Entity +Assuming we have access to the keystore of NiFi Registry itself, and that NiFi Registry is also configured to allow Kerberos or LDAP authentication, an example properties file would be the following: + +``` + baseUrl=https://localhost:18443 + keystore=/path/to/keystore.jks + keystoreType=JKS + keystorePasswd=changeme + keyPasswd=changeme + truststore=/path/to/truststore.jks + truststoreType=JKS + truststorePasswd=changeme + proxiedEntity=us...@nifi.com +``` + +In this example, the certificate in _keystore.jks_ would be for the NiFi Registry server, for example "CN=localhost, OU=NIFI". This identity would need to be defined as a user in NiFi Registry and given permissions to 'Proxy'. + +"CN=localhost, OU=NIFI" would be proxying commands to be executed as us...@nifi.com. + +=== Interactive Usage +In interactive mode the tab key can be used to perform auto-completion. + +For example, typing tab at an empty prompt should display possible commands for the first argument: + + #> + demo exit help nifi registry session + +Typing "nifi " and then a tab will show the sub-commands for NiFi: + + #> nifi + cluster-summary get-nodes pg-enable-services pg-set-var + connect-node get-reg-client-id pg-get-all-versions pg-start + create-reg-client get-root-id pg-get-services pg-status + current-user list-reg-clients pg-get-vars pg-stop + delete-node offload-node pg-get-version update-reg-client + disconnect-node pg-change-version pg-import + get-node pg-disable-services pg-list + +Arguments that represent a path to a file, such as `-p` or when setting a properties file in the session, will auto-complete the path being typed: + + #> session set nifi.props /tmp/ + dir1/ dir2/ dir3/ + +=== Output +Most commands support the ability to specify an `--outputType` argument, or `-ot` for short. + +Currently the output type may be simple or json. + +The default output type in interactive mode is simple, and the default output type in standalone mode is json. + +Example of simple output for `list-buckets`: + + #> registry list-buckets -ot simple + My Bucket - 3c7b7467-0012-4d8f-a918-6aa42b6b9d39 + +Example of json output for `list-buckets`: + + #> registry list-buckets -ot json + [ { + "identifier" : "3c7b7467-0012-4d8f-a918-6aa42b6b9d39", + "name" : "My Bucket", + "createdTimestamp" : 1516718733854, + "permissions" : { + "canRead" : true, + "canWrite" : true, + "canDelete" : true + }, + "link" : { + "params" : { + "rel" : "self" + }, + "href" : "buckets/3c7b7467-0012-4d8f-a918-6aa42b6b9d39" + } + } ] + +=== Back-Referencing +When using the interactive CLI, a common scenario will be using an id from a previous result as the input to the next command. Back-referencing provides a shortcut for referencing a result from the previous command via a positional reference. + +NOTE: Not every command produces back-references. To determine if a command supports back-referencing, check the usage. + + #> registry list-buckets help + Lists the buckets that the current user has access to. + PRODUCES BACK-REFERENCES + +A common scenario for utilizing back-references would be the following: + +1. User starts by exploring the available buckets in a registry instance + + #> registry list-buckets + # Name Id Description + - ------------ ------------------------------------ ----------- + 1 My Bucket 3c7b7467-0012-4d8f-a918-6aa42b6b9d39 (empty) + 2 Other Bucket 175fb557-43a2-4abb-871f-81a354f47bc2 (empty) + +2. User then views the flows in one of the buckets using a back-reference to the bucket id from the previous result in position 1 + + #> registry list-flows -b &1 + Using a positional back-reference for 'My Bucket' + # Name Id Description + - ------- ------------------------------------ ---------------- + 1 My Flow 06acb207-d2f1-447f-85ed-9b8672fe6d30 This is my flow. + +3. User then views the version of the flow using a back-reference to the flow id from the previous result in position 1 + + #> registry list-flow-versions -f &1 + Using a positional back-reference for 'My Flow' + Ver Date Author Message + --- -------------------------- ------------------------ ------------------------------------- + 1 Tue, Jan 23 2018 09:48 EST anonymous This is the first version of my flow. + +4. User deploys version 1 of the flow using back-references to the bucket and flow id from step 2 + + #> nifi pg-import -b &1 -f &1 -fv 1 + Using a positional back-reference for 'My Bucket' + Using a positional back-reference for 'My Flow' + 9bd157d4-0161-1000-b946-c1f9b1832efd + +The reason step 4 was able to reference the results from step 2, is because the `list-flow-versions` command in step 3 does not produce back-references, so the results from step 2 are still available. + +=== Adding Commands +To add a NiFi command, create a new class that extends `AbstractNiFiCommand`: + +``` +public class MyCommand extends AbstractNiFiCommand { + + public MyCommand() { + super("my-command"); + } + + @Override + protected void doExecute(NiFiClient client, Properties properties) + throws NiFiClientException, IOException, MissingOptionException, CommandException { + // TODO implement + } + + @Override + public String getDescription() { + return "This is my new command"; + } +} +``` + +Add the new command to `NiFiCommandGroup`: + +``` +commands.add(new MyCommand()); +``` + +To add a NiFi Registry command, perform the same steps, but extend from `AbstractNiFiRegistryCommand`, and add the command to `NiFiRegistryCommandGroup`. + +== Encrypt-Config Tool +The `encrypt-config` command line tool (invoked as `./bin/encrypt-config.sh` or `bin\encrypt-config.bat`) reads from a _nifi.properties_ file with plaintext sensitive configuration values, prompts for a master password or raw hexadecimal key, and encrypts each value. It replaces the plain values with the protected value in the same file, or writes to a new _nifi.properties_ file if specified. + +The default encryption algorithm utilized is AES/GCM 128/256-bit. 128-bit is used if the JCE Unlimited Strength Cryptographic Jurisdiction Policy files are not installed, and 256-bit is used if they are installed. + +=== Usage +To show help: + + encrypt-config.sh -h + +The following are available options: + + * `-h`,`--help` Prints this usage message + * `-v`,`--verbose` Sets verbose mode (default false) + * `-n`,`--niFiProperties <arg>` The _nifi.properties_ file containing unprotected config values (will be overwritten) + * `-l`,`--loginIdentityProviders <arg>` The _login-identity-providers.xml_ file containing unprotected config values (will be overwritten) + * `-a`,`--authorizers <arg>` The _authorizers.xml_ file containing unprotected config values (will be overwritten) + * `-f`,`--flowXml <arg>` The _flow.xml.gz_ file currently protected with old password (will be overwritten) + * `-b`,`--bootstrapConf <arg>` The _bootstrap.conf_ file to persist master key + * `-o`,`--outputNiFiProperties <arg>` The destination _nifi.properties_ file containing protected config values (will not modify input _nifi.properties_) + * `-i`,`--outputLoginIdentityProviders <arg>` The destination _login-identity-providers.xml_ file containing protected config values (will not modify input _login-identity-providers.xml_) + * `-u`,`--outputAuthorizers <arg>` The destination _authorizers.xml_ file containing protected config values (will not modify input _authorizers.xml_) + * `-g`,`--outputFlowXml <arg>` The destination _flow.xml.gz_ file containing protected config values (will not modify input _flow.xml.gz_) + * `-k`,`--key <arg>` The raw hexadecimal key to use to encrypt the sensitive properties + * `-e`,`--oldKey <arg>` The old raw hexadecimal key to use during key migration + * `-p`,`--password <arg>` The password from which to derive the key to use to encrypt the sensitive properties + * `-w`,`--oldPassword <arg>` The old password from which to derive the key during migration + * `-r`,`--useRawKey` If provided, the secure console will prompt for the raw key value in hexadecimal form + * `-m`,`--migrate` If provided, the _nifi.properties_ and/or _login-identity-providers.xml_ sensitive properties will be re-encrypted with a new key + * `-x`,`--encryptFlowXmlOnly` If provided, the properties in _flow.xml.gz_ will be re-encrypted with a new key but the _nifi.properties_ and/or _login-identity-providers.xml_ files will not be modified + * `-s`,`--propsKey <arg>` The password or key to use to encrypt the sensitive processor properties in _flow.xml.gz_ + * `-A`,`--newFlowAlgorithm <arg>` The algorithm to use to encrypt the sensitive processor properties in _flow.xml.gz_ + * `-P`,`--newFlowProvider <arg>` The security provider to use to encrypt the sensitive processor properties in _flow.xml.gz_ + +As an example of how the tool works, assume that you have installed the tool on a machine supporting 256-bit encryption and with the following existing values in the _nifi.properties_ file: + +``` +# security properties # +nifi.sensitive.props.key=thisIsABadSensitiveKeyPassword +nifi.sensitive.props.algorithm=PBEWITHMD5AND256BITAES-CBC-OPENSSL +nifi.sensitive.props.provider=BC +nifi.sensitive.props.additional.keys= + +nifi.security.keystore=/path/to/keystore.jks +nifi.security.keystoreType=JKS +nifi.security.keystorePasswd=thisIsABadKeystorePassword +nifi.security.keyPasswd=thisIsABadKeyPassword +nifi.security.truststore= +nifi.security.truststoreType= +nifi.security.truststorePasswd= +``` + +Enter the following arguments when using the tool: + +---- +encrypt-config.sh +-b bootstrap.conf +-k 0123456789ABCDEFFEDCBA98765432100123456789ABCDEFFEDCBA9876543210 +-n nifi.properties +---- + +As a result, the _nifi.properties_ file is overwritten with protected properties and sibling encryption identifiers (`aes/gcm/256`, the currently supported algorithm): + +``` +# security properties # +nifi.sensitive.props.key=n2z+tTTbHuZ4V4V2||uWhdasyDXD4ZG2lMAes/vqh6u4vaz4xgL4aEbF4Y/dXevqk3ulRcOwf1vc4RDQ== +nifi.sensitive.props.key.protected=aes/gcm/256 +nifi.sensitive.props.algorithm=PBEWITHMD5AND256BITAES-CBC-OPENSSL +nifi.sensitive.props.provider=BC +nifi.sensitive.props.additional.keys= + +nifi.security.keystore=/path/to/keystore.jks +nifi.security.keystoreType=JKS +nifi.security.keystorePasswd=oBjT92hIGRElIGOh||MZ6uYuWNBrOA6usq/Jt3DaD2e4otNirZDytac/w/KFe0HOkrJR03vcbo +nifi.security.keystorePasswd.protected=aes/gcm/256 +nifi.security.keyPasswd=ac/BaE35SL/esLiJ||+ULRvRLYdIDA2VqpE0eQXDEMjaLBMG2kbKOdOwBk/hGebDKlVg== +nifi.security.keyPasswd.protected=aes/gcm/256 +nifi.security.truststore= +nifi.security.truststoreType= +nifi.security.truststorePasswd= +``` + +Additionally, the _bootstrap.conf_ file is updated with the encryption key as follows: + +``` +# Master key in hexadecimal format for encrypted sensitive configuration values +nifi.bootstrap.sensitive.key=0123456789ABCDEFFEDCBA98765432100123456789ABCDEFFEDCBA9876543210 +``` + +Sensitive configuration values are encrypted by the tool by default, however you can encrypt any additional properties, if desired. To encrypt additional properties, specify them as comma-separated values in the `nifi.sensitive.props.additional.keys` property. + +If the _nifi.properties_ file already has valid protected values, those property values are not modified by the tool. + +When applied to _login-identity-providers.xml_ and _authorizers.xml_, the property elements are updated with an `encryption` attribute: + +Example of protected _login-identity-providers.xml_: + +``` + <!-- LDAP Provider --> + <provider> + <identifier>ldap-provider</identifier> + <class>org.apache.nifi.ldap.LdapProvider</class> + <property name="Authentication Strategy">START_TLS</property> + <property name="Manager DN">someuser</property> + <property name="Manager Password" encryption="aes/gcm/128">q4r7WIgN0MaxdAKM||SGgdCTPGSFEcuH4RraMYEdeyVbOx93abdWTVSWvh1w+klA</property> + <property name="TLS - Keystore"></property> + <property name="TLS - Keystore Password" encryption="aes/gcm/128">Uah59TWX+Ru5GY5p||B44RT/LJtC08QWA5ehQf01JxIpf0qSJUzug25UwkF5a50g</property> + <property name="TLS - Keystore Type"></property> + ... + </provider> +``` + +Example of protected _authorizers.xml_: + +``` + <!-- LDAP User Group Provider --> + <userGroupProvider> + <identifier>ldap-user-group-provider</identifier> + <class>org.apache.nifi.ldap.tenants.LdapUserGroupProvider</class> + <property name="Authentication Strategy">START_TLS</property> + <property name="Manager DN">someuser</property> + <property name="Manager Password" encryption="aes/gcm/128">q4r7WIgN0MaxdAKM||SGgdCTPGSFEcuH4RraMYEdeyVbOx93abdWTVSWvh1w+klA</property> + <property name="TLS - Keystore"></property> + <property name="TLS - Keystore Password" encryption="aes/gcm/128">Uah59TWX+Ru5GY5p||B44RT/LJtC08QWA5ehQf01JxIpf0qSJUzug25UwkF5a50g</property> + <property name="TLS - Keystore Type"></property> + ... + </userGroupProvider> +``` + +== File Manager +The File Manager utility (invoked as `./bin/file-manager.sh` or `bin\file-manager.bat`) allows system administrators to take a backup of an existing NiFi installation, install a new version of NiFi in a designated location (while migrating any previous configuration settings) or restore an installation from a previous backup. File Manager supports NiFi version 1.0.0 and higher. + +=== Usage +To show help: + + file-manager.sh -h + +The following are available options: + +* `-b`,`--backupDir <arg>` Backup NiFi Directory (used with backup or restore operation) +* `-c`,`--nifiCurrentDir <arg>` Current NiFi Installation Directory (used optionally with install or restore operation) +* `-d`,`--nifiInstallDir <arg>` NiFi Installation Directory (used with install or restore operation) +* `-h`,`--help` Print help info (optional) +* `-i`,`--installFile <arg>` NiFi Install File (used with install operation) +* `-m`,`--moveRepositories` Allow repositories to be moved to new/restored nifi directory from existing installation, if available (used optionally with install or restore operation) +* `-o`,`--operation <arg>` File operation (install | backup | restore) +* `-r`,`--nifiRollbackDir <arg>` NiFi Installation Directory (used with install or restore operation) +* `-t`,`--bootstrapConf <arg>` Current NiFi Bootstrap Configuration File (used optionally) +* `-v`,`--verbose` Verbose messaging (optional) +* `-x`,`--overwriteConfigs` Overwrite existing configuration directory with upgrade changes (used optionally with install or restore operation) + +Example usage on Linux: + + # backup NiFi installation + # option -t may be provided to ensure backup of external boostrap.conf file + ./file-manager.sh + -o backup + –b /tmp/nifi_bak + –c /usr/nifi_old + -v + + # install NiFi using compressed tar file into /usr/nifi directory (should install as /usr/nifi/nifi-1.3.0). + # migrate existing configurations with location determined by external bootstrap.conf and move over repositories from nifi_old + # options -t and -c should both be provided if migration of configurations, state and repositories are required + ./file-manager.sh + -o install + –i nifi-1.3.0.tar.gz + –d /usr/nifi + –c /usr/nifi/nifi_old + -t /usr/nifi/old_conf/bootstrap.conf + -v + -m + + # restore NiFi installation from backup directory and move back repositories + # option -t may be provided to ensure bootstrap.conf is restored to the file path provided, otherwise it is placed in the + # default directory under the rollback path (e.g. /usr/nifi_old/conf) + ./file-manager.sh + -o restore + –b /tmp/nifi_bak + –r /usr/nifi_old + –c /usr/nifi + -m + -v + +=== Expected Behavior + +==== Backup +During the backup operation a backup directory is created in a designated location for an existing NiFi installation. Backups will capture all critical files (including any internal or external configurations, libraries, scripts and documents) however it excludes backing up repositories and logs due to potential size. If configuration/library files are external from the existing installation folder the backup operation will capture those as well. + +==== Install +During the install operation File Manager will perform installation using the designated NiFi binary file (either tar.gz or zip file) to create a new installation or migrate an existing nifi installation to a new one. Installation can optionally move repositories (if located within the configuration folder of the current installation) to the new installation as well as migrate configuration files to the newer installation. + +==== Restore +The restore operation allows an existing installation to revert back to a previous installation. Using an existing backup directory (created from the backup operation) the FileManager utility will restore libraries, scripts and documents as well as revert to previous configurations. + +NOTE: If repositories were changed due to the installation of a newer version of NiFi these may no longer be compatible during restore. In that scenario exclude the `-m` option to ensure new repositories will be created or, if repositories live outside of the NiFi directory, remove them so they can be recreated on startup after restore. + +== Flow Analyzer +The `flow-analyzer` tool (invoked as `./bin/flow-analyzer.sh` or `bin\flow-analyzer.bat`) analyzes the _flow.xml.gz_ file and reports: + +* Total Bytes Utilized by the System +* Min/Max Back Pressure Size +* Average Back Pressure Size +* Min/Max Flowfile Queue Size +* Average Flowfile Queue Size + +=== Usage +To execute the `flow-analyzer` tool: + + flow-analyzer.sh <path to flow.xml.gz> + +Example: + + $ ./flow-analyzer.sh /Users/nifiuser/nifi-1.8.0/conf/flow.xml.gz + Using flow=/Users/nifiuser/nifi-1.8.0/conf/flow.xml.gz + Total Bytes Utilized by System=1518 GB + Max Back Pressure Size=1 GB + Min Back Pressure Size=1 GB + Average Back Pressure Size=2.504950495 GB + Max Flowfile Queue Size=10000 + Min Flowfile Queue Size=10000 + Avg Flowfile Queue Size=10000.000000000 + +== Node Manager +Node manager (invoked as `./bin/node-manager.sh` or `bin\node-manager.bat`) supports connecting, disconnecting and removing a node when in a cluster (an error message displays if the node is not part of a cluster) as well as obtaining the status of a node. When nodes are disconnected from a cluster and need to be connected or removed, a list of urls of connected nodes should be provided to send the required command to the active cluster. Node Manager supports NiFi version 1.0.0 and higher. + +=== Usage +To show help: + + node-manager.sh -h + +The following are available options: + +* `-b`,`--bootstrapConf <arg>` Existing Bootstrap Configuration file (required) +* `-d`,`--nifiInstallDir <arg>` NiFi Root Folder (required) +* `-h`,`--help` Help Text (optional) +* `-o`, `--operation <arg>` Operations supported: status, connect (cluster), disconnect (cluster), remove (cluster) +* `-p`,`--proxyDN <arg>` Proxy or User DN (required for secured nodes doing connect, disconnect and remove operations) +* `-u`,`--clusterUrls <arg>` Comma delimited list of active urls for cluster (optional). Not required for disconnecting a node yet will be needed when connecting or removing from a cluster +* `-v`,`--verbose` Verbose messaging (optional) + + +To connect, disconnect, or remove a node from a cluster: + + node-manager.sh -d {$NIFI_HOME} –b { nifi bootstrap file path} + -o {remove|disconnect|connect|status} [-u {url list}] [-p {proxy name}] [-v] --- End diff -- Not related to the PR itself but wondering if it'd make sense to add 'offload' operation (cc @jtstorck) even though it's available in the CLI. > Documentation of the NiFi Toolkit > --------------------------------- > > Key: NIFI-5767 > URL: https://issues.apache.org/jira/browse/NIFI-5767 > Project: Apache NiFi > Issue Type: Improvement > Components: Documentation & Website > Reporter: Pierre Villard > Assignee: Andrew Lim > Priority: Major > > The NiFi toolkit should have its own documentation in a dedicated page, > probably just under "Admin guide". > The documentation should have a paragraph about each tool: > * CLI - > https://github.com/apache/nifi/blob/master/nifi-toolkit/nifi-toolkit-cli/README.md > * Configuration encryption - > https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#encrypt-config_tool > * File manager - > https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#file-manager > * Flow analyzer > * Node manager - > https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#node-manager > * Notify > * S2S > * TLS Toolkit - > https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#tls_generation_toolkit > * ZooKeeper migrator - > https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#zookeeper_migrator -- This message was sent by Atlassian JIRA (v7.6.3#76005)