Apache NiFi - Monitoramento

No Apache NiFi, existem várias maneiras de monitorar as diferentes estatísticas do sistema, como erros, uso de memória, uso de CPU, estatísticas de fluxo de dados, etc. Discutiremos as mais populares neste tutorial.

Monitoramento integrado

Nesta seção, aprenderemos mais sobre o monitoramento integrado no Apache NiFi.

Quadro de avisos

O quadro de avisos mostra os últimos ERROR e WARNING sendo gerados pelos processadores NiFi em tempo real. Para acessar o quadro de avisos, o usuário terá que ir ao menu suspenso à direita e selecionar a opção Quadro de avisos. Ele é atualizado automaticamente e um usuário também pode desativá-lo. Um usuário também pode navegar até o processador real clicando duas vezes no erro. Um usuário também pode filtrar os boletins trabalhando com o seguinte -

  • por mensagem
  • pelo nome
  • por id
  • por id de grupo

IU de proveniência de dados

Para monitorar os eventos que ocorrem em qualquer processador específico ou através do NiFi, um usuário pode acessar a proveniência dos dados no mesmo menu do quadro de avisos. Um usuário também pode filtrar os eventos no repositório de proveniência de dados trabalhando com os seguintes campos -

  • por nome de componente
  • por tipo de componente
  • por tipo

NiFi Summary UI

O resumo do Apache NiFi também pode ser acessado no mesmo menu do quadro de avisos. Essa IU contém informações sobre todos os componentes dessa instância ou cluster NiFi em particular. Eles podem ser filtrados por nome, tipo ou URI. Existem diferentes guias para diferentes tipos de componentes. A seguir estão os componentes, que podem ser monitorados na IU de resumo NiFi -

  • Processors
  • Portas de entrada
  • Portas de saída
  • Grupos de processos remotos
  • Connections
  • Grupos de processos

Nessa IU, há um link no lado direito inferior denominado diagnósticos do sistema para verificar as estatísticas da JVM.

Tarefas de relatório

O Apache NiFi fornece várias tarefas de relatório para oferecer suporte a sistemas de monitoramento externos como Ambari, Grafana, etc. Um desenvolvedor pode criar uma tarefa de relatório customizada ou pode configurar os embutidos para enviar as métricas de NiFi para os sistemas de monitoramento externos. A tabela a seguir lista as tarefas de relatório oferecidas pelo NiFi 1.7.1.

S.No. Nome da tarefa de relatório Descrição
1 AmbariReportingTask Para configurar o Ambari Metrics Service para NiFi.
2 ControllerStatusReportingTask Para relatar as informações da IU de resumo NiFi nos últimos 5 minutos.
3 MonitorDiskUsage Para relatar e avisar sobre o uso do disco de um diretório específico.
4 MonitorMemory Para monitorar a quantidade de Java Heap usada em um conjunto de memória Java da JVM.
5 SiteToSiteBulletinReportingTask Para relatar os erros e avisos em boletins usando o protocolo Site to Site.
6 SiteToSiteProvenanceReportingTask Para relatar os eventos NiFi Data Provenance usando o protocolo Site to Site.

API NiFi

Há um diagnóstico de sistema denominado API, que pode ser usado para monitorar as estatísticas NiFI em qualquer aplicativo desenvolvido de forma personalizada. Vamos verificar a API no postman.

Solicitação

http://localhost:8080/nifi-api/system-diagnostics

Resposta

{
   "systemDiagnostics": {
      "aggregateSnapshot": {
         "totalNonHeap": "183.89 MB",
         "totalNonHeapBytes": 192819200,
         "usedNonHeap": "173.47 MB",
         "usedNonHeapBytes": 181894560,
         "freeNonHeap": "10.42 MB",
         "freeNonHeapBytes": 10924640,
         "maxNonHeap": "-1 bytes",
         "maxNonHeapBytes": -1,
         "totalHeap": "512 MB",
         "totalHeapBytes": 536870912,
         "usedHeap": "273.37 MB",
         "usedHeapBytes": 286652264,
         "freeHeap": "238.63 MB",
         "freeHeapBytes": 250218648,
         "maxHeap": "512 MB",
         "maxHeapBytes": 536870912,
         "heapUtilization": "53.0%",
         "availableProcessors": 4,
         "processorLoadAverage": -1,
         "totalThreads": 71,
         "daemonThreads": 31,
         "uptime": "17:30:35.277",
         "flowFileRepositoryStorageUsage": {
            "freeSpace": "286.93 GB",
            "totalSpace": "464.78 GB",
            "usedSpace": "177.85 GB",
            "freeSpaceBytes": 308090789888,
            "totalSpaceBytes": 499057160192,
            "usedSpaceBytes": 190966370304,
            "utilization": "38.0%"
         },
         "contentRepositoryStorageUsage": [
            {
               "identifier": "default",
               "freeSpace": "286.93 GB",
               "totalSpace": "464.78 GB",
               "usedSpace": "177.85 GB",
               "freeSpaceBytes": 308090789888,
               "totalSpaceBytes": 499057160192,
               "usedSpaceBytes": 190966370304,
               "utilization": "38.0%"
            }
         ],
         "provenanceRepositoryStorageUsage": [
            {
               "identifier": "default",
               "freeSpace": "286.93 GB",
               "totalSpace": "464.78 GB",
               "usedSpace": "177.85 GB",
               "freeSpaceBytes": 308090789888,
               "totalSpaceBytes": 499057160192,
               "usedSpaceBytes": 190966370304,
               "utilization": "38.0%"
            }
         ],
         "garbageCollection": [
            {
               "name": "G1 Young Generation",
               "collectionCount": 344,
               "collectionTime": "00:00:06.239",
               "collectionMillis": 6239
            },
            {
               "name": "G1 Old Generation",
               "collectionCount": 0,
               "collectionTime": "00:00:00.000",
               "collectionMillis": 0
            }
         ],
         "statsLastRefreshed": "09:30:20 SGT",
         "versionInfo": {
            "niFiVersion": "1.7.1",
            "javaVendor": "Oracle Corporation",
            "javaVersion": "1.8.0_151",
            "osName": "Windows 7",
            "osVersion": "6.1",
            "osArchitecture": "amd64",
            "buildTag": "nifi-1.7.1-RC1",
            "buildTimestamp": "07/12/2018 12:54:43 SGT"
         }
      }
   }
}