Configure Pulse on Kubernetes to monitor a standalone NiFi cluster
Configure Pulse on Kubernetes to monitor a standalone Apache NiFi cluster.
Note
This is supported from Pulse 4.1.2 onwards.
Prerequisites
Before you begin, ensure that:
- Pulse Manager is accessible and you have administrator credentials for API access.
- Pulse is installed and configured on Kubernetes.
- The Pulse database node is configured and accessible.
- Container registry credentials are configured as a Kubernetes secret.
- The
certificate file is available.elastic-certificates.p12 - The standalone NiFi cluster and NiFi Registry are accessible from Pulse Manager.
- Host mappings are configured for the Pulse and NiFi nodes.
Note
Replace the sample credentials, URLs, hostnames, IP addresses, and file paths in this procedure with values from your environment. Do not store unencrypted credentials in source control.
Create the NiFi Cluster Configuration
Create a file named with the following configuration:nifi_inputs.json
{
"standAloneDistroType": "Nifi",
"standAloneComponents": "Nifi",
"isEdgeNode": false,
"clusterType": "Stand-Alone",
"clusterName": "ad-nifi",
"clusterDisplayName": "ad-nifi",
"clusterOriginalName": "ad-nifi",
"isKerberosEnabled": false,
"isParcelBasedDeployment": false,
"SSHKeyAlgo": "RSA",
"httpsEnabledInCluster": false,
"sshUser": "root",
"zkJMXPort": "9999",
"enableLogSearch": true,
"zkEnabled": false,
"nifiZKEnabled": true,
"nifiRegistryInstalled": true,
"nifiRegistryURL": "http://odp901.acceldata.dvl:18080,http://odp902.acceldata.dvl:18080,http://odp903.acceldata.dvl:18080"
}
If NiFi uses embedded ZooKeeper, set to nifiZKEnabled and skip the ZooKeeper host upload step.false
Create the NiFi Hosts File
Create a file named to specify the NiFi endpoints and credentials:nifihosts.yml
hosts:
- https://odp901.acceldata.dvl:8443
- https://odp902.acceldata.dvl:8443
- https://odp903.acceldata.dvl:8443
auth:
username: admin
password: <ENCRYPTED_PASSWORD>
Encrypt the NiFi Password
Use Pulse Manager to encrypt the NiFi user password:
curl -X POST \
-u "pulse:<PULSE_API_PASSWORD>" \
-H 'Content-Type: application/json' \
--data '{"encrypt":"<NIFI_PASSWORD>"}' \
http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/admin/encrypt
Copy the encrypted password returned by the command and specify it as the value in auth.password.nifihosts.yml
Upload the Host Configuration
If NiFi uses an external ZooKeeper, upload the ZooKeeper hosts file:
curl -X PUT \
-u "pulse:<PULSE_API_PASSWORD>" \
-F "zkhosts=@/root/nifizookeeper" \
http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/upload/zkhosts/ad-nifi
Upload the NiFi hosts file:
curl -X PUT \
-u "pulse:<PULSE_API_PASSWORD>" \
-F "nifihosts=@/root/nifihosts.yml" \
http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/upload/nifihosts/ad-nifi
Replace:
with your cluster name.ad-nifiwith the path to your ZooKeeper hosts file./root/nifizookeeperwith the path to your NiFi hosts file./root/nifihosts.yml
Initialize Pulse Manager
Initialize Pulse Manager with the required version, container registry, and retention settings:
curl --request POST \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/init \
-u "pulse:<PULSE_API_PASSWORD>" \
--header 'Content-Type: application/json' \
--data '{
"pulse_version": "testBuild",
"registry_url": "191579300362.dkr.ecr.us-east-1.amazonaws.com/acceldata",
"hdfs_retention_days": 31,
"mongo_retention_days": 32,
"logstore_retention": 32,
"metrics_retention": 32,
"registry_secret": "adreg-docker-secret"
}'
Ensure that the Kubernetes secret exists in the Pulse namespace and contains valid container registry credentials.adreg-docker-secret
Upload the Elastic Certificate
Upload the certificate for secure Elastic connectivity:elastic-certificates.p12
curl --request PUT \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/upload/certs/es \
-u "pulse:<PULSE_API_PASSWORD>" \
--header 'Content-Type: multipart/form-data' \
--form es-certs.p12=@elastic-certificates.p12
Configure the NiFi Cluster
Configure the NiFi cluster using the file:nifi_inputs.json
curl --request POST \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/config/cluster \
-u "pulse:<PULSE_API_PASSWORD>" \
--header 'Content-Type: application/json' \
--data @nifi_inputs.json
Deploy the Database Components
Deploy the Pulse database components:
curl --request PUT \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/deploy/db \
-u "pulse:<PULSE_API_PASSWORD>"
Push the database configuration to the NiFi cluster:
curl --request PUT \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/dbpush/ad-nifi \
-u "pulse:<PULSE_API_PASSWORD>" \
--header 'Content-Type: application/json' \
--data '{}'
Replace with your cluster name.ad-nifi
Deploy Pulse Core Services
Deploy the Pulse core services and specify the required host mappings:
curl --request PUT \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/deploy/core \
-u "pulse:<PULSE_API_PASSWORD>" \
--header 'Content-Type: application/json' \
--data '{
"extra_hosts": {
"10.100.10.99": "odppulse901.acceldata.dvl",
"10.100.10.169": "odp901.acceldata.dvl",
"10.100.10.170": "odp902.acceldata.dvl",
"10.100.10.172": "odp903.acceldata.dvl"
}
}'
Replace the sample IP addresses and FQDNs with the values for your environment.
Important
Ensure that the IP address-to-FQDN mappings are correct. Incorrect mappings can cause connectivity failures or TLS hostname mismatches.
Configure Log Collection
Configure the Pulse log collector to collect NiFi and system logs.
In the log collector configuration, such as , add the required log locations:vars.yml
log_locations:
kern:
- path: /var/log/kern.log
type: DATESTAMP
nifi:
- path: /root/nifi-setup/nifi-2.7.2.3.3.6.4-1/logs/nifi-app.log,/root/nifi-setup/nifi-2.7.2.3.3.6.4-1/logs/nifi-user.log,/root/nifi-setup/nifi-2.7.2.3.3.6.4-1/logs/nifi-bootstrap.log,/root/nifi-setup/nifi-registry-2.7.2.3.3.6.4-1/logs/nifi-registry-app.log,/root/nifi-setup/nifi-registry-2.7.2.3.3.6.4-1/logs/nifi-registry-bootstrap.log,/root/nifi-setup/nifi-registry-2.7.2.3.3.6.4-1/logs/nifi-registry-event.log
type: DEFAULT
syslog:
- path: /var/log/syslog,/var/log/messages
type: DATESTAMP
zookeeper:
- path: /zookeeper.log
type: DEFAULT
Update the NiFi version directories and log paths to match your installation.
Reconfigure the Cluster
Apply the updated configuration to the cluster:
curl --request POST \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/reconfig/cluster/ad-nifi \
-u "pulse:<PULSE_API_PASSWORD>" \
--header 'Content-Type: application/json' \
--data '{
"forcePull": true
}'
Replace with your cluster name.ad-nifi
Set to forcePull when you want Kubernetes to pull the required container images again during reconfiguration.true
Validate the Configuration
After you configure the cluster, verify the following:
- Pulse Manager API requests complete successfully.
- The database, core, and collector pods are running.
- NiFi metrics and flows are available in the Pulse UI.
- NiFi and system logs are available in Log Search.
- NiFi Registry versioned flows are accessible.
- NiFi Registry credentials are accepted.
Troubleshoot the Configuration
If the NiFi integration does not work as expected:
- Verify the configuration file paths and cluster name.
- Verify connectivity between Pulse Manager and the NiFi cluster.
- Verify the NiFi credentials. If required, encrypt the password again and update
.nifihosts.yml - Verify the host mappings, Kubernetes DNS configuration, and node connectivity.
- Verify that the container registry secret exists and contains valid credentials.
- Verify the log paths and file permissions.
- Verify that the log collector pods can access the configured NiFi log locations.
- If NiFi uses embedded ZooKeeper, ensure that
is set tonifiZKEnabledand skip the ZooKeeper host upload step.false
Appendix: Command Reference
Use the following commands as a quick reference after you complete the configuration described in this guide.
1. Encrypt the NiFi Password
curl -X POST \
-u "pulse:<PULSE_API_PASSWORD>" \
-H 'Content-Type: application/json' \
--data '{"encrypt":"<PLAINTEXT_NIFI_PASSWORD>"}' \
http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/admin/encrypt
Update with the encrypted password returned by the command.nifihosts.yml
2. Upload the ZooKeeper Hosts
If NiFi uses an external ZooKeeper, run:
curl -X PUT \
-u "pulse:<PULSE_API_PASSWORD>" \
-F "zkhosts=@/root/nifizookeeper" \
http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/upload/zkhosts/ad-nifi
Skip this step if NiFi uses embedded ZooKeeper.
3. Upload the NiFi Registry Hosts
curl --request PUT \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/upload/nifiregistryhosts/ad-nifi \
-u "pulse:<PULSE_API_PASSWORD>" \
--header 'Content-Type: multipart/form-data' \
--form nifiregistryhosts=@/root/nifihosts.yml
4. Initialize Pulse Manager
curl --request POST \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/init \
-u "pulse:<PULSE_API_PASSWORD>" \
--header 'Content-Type: application/json' \
--data '{
"pulse_version": "testBuild-vips",
"registry_url": "191579300362.dkr.ecr.us-east-1.amazonaws.com/acceldata",
"hdfs_retention_days": 31,
"mongo_retention_days": 32,
"logstore_retention": 32,
"metrics_retention": 32,
"registry_secret": "adreg-docker-secret"
}'
5. Upload the Elastic Certificate
curl --request PUT \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/upload/certs/es \
-u "pulse:<PULSE_API_PASSWORD>" \
--header 'Content-Type: multipart/form-data' \
--form es-certs.p12=@elastic-certificates.p12
6. Configure the NiFi Cluster
curl --request POST \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/config/cluster \
-u "pulse:<PULSE_API_PASSWORD>" \
--header 'Content-Type: application/json' \
--data @nifi_inputs.json
7. Deploy the Database Components
curl --request PUT \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/deploy/db \
-u "pulse:<PULSE_API_PASSWORD>"
Push the database configuration:
curl --request PUT \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/dbpush/ad-nifi \
-u "pulse:<PULSE_API_PASSWORD>" \
--header 'Content-Type: application/json' \
--data '{}'
8. Deploy Pulse Core Services
curl --request PUT \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/deploy/core \
-u "pulse:<PULSE_API_PASSWORD>" \
--header 'Content-Type: application/json' \
--data '{
"extra_hosts": {
"<IP Address 1>": "odppulse901.acceldata.dvl",
"<IP Address 2>": "odp901.acceldata.dvl",
"<IP Address 3>": "odp902.acceldata.dvl",
"<IP Address 4>": "odp903.acceldata.dvl"
}
}'
9. Reconfigure the Cluster
After you update the required log paths, reconfigure the cluster:
curl --request POST \
--url http://odp702.acceldata.dvl:30730/manager/api/v1/mserver/reconfig/cluster/ad-nifi \
-u "pulse:<PULSE_API_PASSWORD>" \
--header 'Content-Type: application/json' \
--data '{
"forcePull": true
}'
Note
Replace the sample cluster name, credentials, URLs, hostnames, IP addresses, registry information, and file paths with the values for your environment.

Have a suggestion?