Configuración de NiFi Monitoring Splunk¶
Configuración¶
En esta etapa se detallarán los pasos necesarios para el correcto funcionamiento del aplicativo NiFi Monitoring Splunk
Hay dos vías de configuración que permiten el envío de eventos a Splunk y su elección dependerá de los mecanismos de autenticación que NIFI tenga habilitado.
-
Envío directo: Esta configuración establecerá NIFI como la vía principal para el envío de datos a Splunk por medio de un conjunto de procesadores y debe ser utilizada cuando NIFI no tenga activado métodos de autenticación.
-
Splunk Data Input NiFi: Splunk se encargará de realizar peticiones a las instancias de NIFI para rescatar la información del Monitoring API por medio de la habilitación y uso del Data Input NIFI. Esta configuración debe ser utilizada cuando NIFI cuente con autenticación basica.
[NOTA] Configura sólo una metodología, ambas en funcionamiento generarán información duplicada.
Envío Directo¶
1. Configuración de HTTP Event Collector (HEC) en Splunk¶
Se necesita la configuración de un recopilador de eventos HTTP (HEC). Esto permite enviar eventos desde las instancias de nifi a una implementación de Splunk a través de los protocolos HTTP y HTTPS.
Para configurar, en el menú de Splunk selecciona Settings > Data Inputs. En el listado de Local Inputs identifica HTTP Event Collector y agrega uno nuevo.
En el proceso de configuración deberás:
- Asignar un nombre para el data input,
- Establecer el sourcetype en automático,
- Seleccionar el App Context NIFI Monitoring y finalmente
- Seleccionar el Index donde se almacenarán los datos.
Se recomienda utilizar un Index dedicado para este monitoreo. Si no existe, deberás crearlo previo a esta configuración.
Al finalizar la configuración de este Event Collector se creará un Token Value, el cual es necesario para luego configurar el envío de datos desde NIFI.
Proceso de configuración:
2. Importar Flow Definition en NIFI¶
Descarga y utiliza el Flow Definition proporciado para la configuración de NiFi Monitoring a través de este link NifiMonitoring. También podrás encontrar este archivo dentro de la carpeta flow_definition del proyecto.
El archivo Flow Definition es la estructura de un grupo de procesos encargado de recolectar y ejecutar el envío de datos de NIFI al Splunk. Está en formato JSON el cual puede ser directamente importado.
Para importar el Flow Definition, arrastra una caja de process group al lienzo de nifi
En la ventana emergente, selecciona el ícono de importación, busca en tu equipo y selecciona el flow definition NiFiMonitoring.json para importar.
Una vez importado, haz clic en "add" para finalizar la importación del flow definition.
Finalmente, verás el grupo de procesadores y en su interior contiene la siguiente estructura:
- Monitoring API
- Monitoring Logs
- Monitoring ReportingTask
- SendHEC
3. Configuración de variables globales¶
Configura las variables globales ya que son indispensable para su funcionamiento. Para configurar los parámetros haz clic derecho sobre la caja NiFIMonitoring > Variables.
Se desplegará una ventana emergente donde tendrás que configurar los siguientes parámetros:
- nifi_api_url: Corresponde a la ruta del API Rest de NIFI, (Ej: http://127.0.0.1:8080/nifi-api/)
- nifi_path: Corresponde a la ruta de instalación en el servidor nifi (en caso de cluster debe estar instalado en la misma ruta en cada nodo). (Ej: /home/nifi/nifi-1.10.0/)
- process_groups_list: Listado de ID de grupos de procesos que se necesitan monitorear, separados por salto de linea.
- processors_list: Listado de ID de procesadores que se necesitan monitorear, separados por salto de linea.
- splunk_hec: Es la dirección del servidor splunk donde se configuró el data input HTTP Event Collector. (Ej: http://
:8088/) - splunk_hec_token: Token obtenido al configurar HTTP Event Collector.
4. Configuración de componentes¶
Posterior a la configuración de las variables es necesario crear los siguientes componentes. Para configurar accede a Nifi Settings desde el menú > controller Settings
Se desplegará una ventana emergente como la siguiente:
En la pestaña Reporting Task Controller Services, agrega el controller service JsonRecordSetWriter, el cual permitirá parsear los resultados obtenidos desde el servicio Reporting Task para su posterior indexación en splunk. Para añadir, click en el botón (+)
Se desplegará la ventana para agregar el controller. Filtra la lista de opciones con el elemento que se agregará, selecciónalo y añádelo a la configuración.
Una vez agregado, deberás habilitar su funcionamiento haciendo clic sobre el ícono de rayo (ϟ) y en la ventana emergente confirmar. Esto habilitará el controller y deberás tener una configuración como la siguiente.
En esta misma ventana, en la pestaña Reporting Task se deberá configurar los siguientes reportes.
- MonitorDiskUsage
- SitetoSiteBulletinReportingTask
- SitetoSiteMetricsReportingTask
Agregue y busque los reporting task requeridos de la misma manera que el paso anterior, haciendo clic en el ícono (+). Una vez agregados podrá tener una vista como la siguiente.
Configura los reporting task con la siguiente información:
- MonitorDiskUsage: Sistema de reporte interno que genera eventos a medida que se supera el umbral definido para la utilización del filesystem y capturados en un flujo especifico.
-
SiteToSiteBulletinReportingTask: Sistema de reporte interno que genera eventos a medida que se van generando errores del tipo bulletin y capturados en un flujo especifico. La configuración debe ser la siguiente:
- Destination URL: http://${hostname(true)}:8080/nifi
- Input Port Name: bulletin_report
- Instance URL: http://${hostname(true)}:8080/nifi
- Transport Protocol: HTTP
- Record Writer: JsonRecordSetWriter
-
SiteToSiteMetricsReportingTask: Sistema de reporte interno que genera eventos a medida que se van generando métricas del mismo ambiente y capturados en un flujo especifico. La configuración debe ser la siguiente:
- Destination URL: http://${hostname(true)}:8080/nifi
- Input Port Name: reporting_task
- Instance URL: http://${hostname(true)}:8080/nifi
- Transport Protocol: HTTP
- Record Writer: JsonRecordSetWriter
- Output Format: Record Formats
Una vez configurados los reporting task deberás iniciar la ejecución haciendo click start (►) en cada uno de ellos.
5. Habilitación del envío de datos¶
Luego de haber completado todo el proceso de configuración, inicie la ejecución del grupo de procesos. Haga clic derecho sobre el grupo de procesos y luego en Start.
Sí toda la configuración se ejecutó de manera correcta, se iniciará el envío de la información a Splunk. Para que los datos enviados a splunk estén accesibles desde la aplicación deberá haber configurado el Lookup de Instancias
Configuración del Data Input Nifi en Splunk¶
Esta configuración debe ser aplicada cuando las instancias de NIFI cuenten con almenos autenticación básica
En en los data input de Splunk puedes configurar varios recursos, como: NIFI Endpoints para el monitoreo de System Diagnostics, Flow Status y Site to Site y el NIFI Status History para monitoreo específico de procesadores y grupos de procesos en base a los ID de éstos.
Para configurar, en el splunk donde está instalada la aplicación Nifi Monitoring, accede al Home de la APP.
Luego en Settings Data Inputs
En los local data input, identifica NiFi y luego clic en + Add new
Se desplegará una ventana como la siguiente:
Te recomendamos configurar de manera independiente cada uno de los recursos de monitoreo para eventuales modificaciones en la configuración y debido a los tiempos de ejecución para obtención de datos.
Los recursos son:
- a. NIFI Endpoints
- b. NIFI Status History para Procesadores
- c. NIFI Status History para Grupos de Procesos
1. Configuración básica de los recursos¶
Para cada una de los recursos debes configurar todos los campos requeridos:
- NIFI Instance name: Asigna un nombre a la instancia de NIFI
- NIFI API URL: Dirección del API Rest de NIFI. (Ej. http://<direccion:puerto>/nifi-api/)
- Auth Type: Tipo de autenticación:
- none: Sin autenticación
- basic: Acceso con credenciales usuario y contraseña
- Interval: Tiempo en segundos en el que se realizarán las peticiones para extraer la información, por defecto, 60 segundos.
- Host: Nombre del host de nifi, el cual debe corresponder a lo definido en el Lookup de Configuraciones.
- Index: Index de destinto para esta fuente de datos. Se recomienda un index dedicado, por ejemplo: nifi. Si no existe, deberá crearlo previamente.
a. NIFI Endpoints¶
En el apartado NIFI Endpoints, selecciona los elementos a monitorear de la lista existente.
- System Diagnostics
- Flow Status
- Site to Site
b. NIFI Status History para Procesadores¶
En el apartado NIFI Status History > List Processors ID especifica los ID de procesadores que serán monitorieados y separados por coma en caso de ser varios.
c. NIFI Status History para Grupos de Procesos¶
En el apartado NIFI Status History > Process Groups ID especifica los ID de los grupos de procesos que serán monitorieados y separados por coma en caso de ser varios.
Una vez completada la configuración, haz clic en siguiente y la creación finalizará correctamente
Repite el proceso de configuración por cada recurso que necesites monitorear.
Ejemplo de los 3 recursos creados de manera independiente
Configuración transversal¶
Independiente de la metodología de envío adoptada, este paso de configuración es requerido para el despliegue de datos en la aplicación de NIFI Monitoring Splunk.
Lookup de Instancias¶
Ve a Configuration > NiFi Instances para acceder a la vista de configuración de Lookups
Completa la información de los campos, en donde, la etiqueta cluster es para asociar un grupo de nodos y host es el nombre de la instancia.
Para obtener el nombre del host, ejecuta la siguiente búsqueda con un rango de tiempo de últimos 60 minutos.
Splunk Query
sourcetype=nifi* | dedup host | table host
El resultado de esta búsqueda retornará el listado de host que deben ser configurados en el lookup.
Si el lookup está correctamente configurado la información podrá ser accesible desde el panel Overview.
¿No hay resultados en la búsqueda ejecutada?
Para que esta búsqueda retorne resultados, los procesos de Nifi deben estar ejecutándose correctamente. Según la metodología de configuración deberás:
- Envío directo: Debes iniciar los procesos de NIFI ¿Cómo habilitar envío de datos?
- Splunk Data Input NiFi: Los data inputs configurados deben estar habilitados.