| <!DOCTYPE html> |
| <html lang="en"> |
| <!-- |
| 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. |
| --> |
| <head> |
| <meta charset="utf-8" /> |
| <title>QuerySplunkIndexingStatus</title> |
| <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" /> |
| </head> |
| |
| <body> |
| <h2>QuerySplunkIndexingStatus</h2> |
| |
| <p> |
| This processor is responsible for polling Splunk server and determine if a Splunk event is acknowledged at the time of |
| execution. For more details about the HEC Index Acknowledgement please see |
| <a href="https://docs.splunk.com/Documentation/Splunk/LATEST/Data/AboutHECIDXAck">this documentation.</a> |
| </p> |
| |
| <h3>Prerequisites</h3> |
| |
| <p> |
| In order to work properly, the incoming flow files need to have the attributes "splunk.acknowledgement.id" and |
| "splunk.responded.at" filled properly. The flow file attribute "splunk.acknowledgement.id" should continue the "ackId" |
| contained by the response of the Splunk from the original put call. The flow file attribute "splunk.responded.at" |
| should contain the Unix Epoch the put call was answered by Splunk. It is suggested to use PutSplunkHTTP processor to execute |
| the put call and set these attributes. |
| </p> |
| |
| <h3>Unacknowledged and undetermined cases</h3> |
| |
| <p> |
| Splunk serves information only about successful acknowledgement. In every other case it will return a value of false. This |
| includes unsuccessful or ongoing indexing and unknown acknowledgement identifiers. In order to avoid infinite tries, |
| QuerySplunkIndexingStatus gives user the possibility to set a "Maximum waiting time". Results with value of false from Splunk |
| within the specified waiting time will be handled as "undetermined" and are transferred to the "undetermined" relationship. |
| Flow files outside of this time range will be queried as well and be transferred to either "acknowledged" or "unacknowledged" |
| relationship determined by the Splunk response. |
| In order to determine if the indexing of a given event is within the waiting time, the Unix Epoch of the original |
| Splunk response is stored in the attribute "splunk.responded.at". Setting "Maximum waiting time" too low might |
| result some false negative result as in case under higher load, Splunk server might index slower than it is expected. |
| </p> |
| |
| <p> |
| Undetermined cases are normal in healthy environment as it is possible that NiFi asks for indexing status before Splunk |
| finishes and acknowledges it. These cases are safe to retry and it is suggested to loop "undetermined" relationship |
| back to the processor for later try. Flow files transferred into the "Undetermined" relationship are penalized. |
| </p> |
| |
| <h3>Performance</h3> |
| |
| <p> |
| Please keep Splunk channel limitations in mind: there are multiple configuration parameters in Splunk which might have direct |
| effect on the performance and behaviour of the QuerySplunkIndexingStatus processor. For example "max_number_of_acked_requests_pending_query" |
| and "max_number_of_acked_requests_pending_query_per_ack_channel" might limit the amount of ackIDs, the Splunk stores. |
| </p> |
| |
| <p> |
| Also, it is suggested to execute the query in batches. The "Maximum Query Size" property might be used for fine tune |
| the maximum number of events the processor will query about in one API request. This serves as an upper limit for the |
| batch but the processor might execute the query with less number of undetermined events. |
| </p> |
| |
| </body> |
| </html> |