Apache NiFi - 监控


在 Apache NiFi 中,有多种方法可以监控系统的不同统计信息,例如错误、内存使用情况、CPU 使用情况、数据流统计信息等。我们将在本教程中讨论最流行的方法。

内置监控

在本节中,我们将详细了解 Apache NiFi 中的内置监控。

布告栏

公告板实时显示 NiFi 处理器生成的最新 ERROR 和 WARNING。要访问公告板,用户必须进入右侧下拉菜单并选择公告板选项。它会自动刷新,用户也可以禁用它。用户还可以通过双击错误导航到实际的处理器。用户还可以通过执行以下操作来过滤公告 -

  • 通过留言
  • 按名字
  • 按 ID
  • 按组 ID

数据来源 UI

要监控任何特定处理器或整个 NiFi 中发生的事件,用户可以从与公告板相同的菜单访问数据来源。用户还可以通过使用以下字段来过滤数据来源存储库中的事件 -

  • 按组件名称
  • 按组件类型
  • 按类型

NiFi 摘要 UI

Apache NiFi 摘要也可以从与公告板相同的菜单访问。此 UI 包含有关特定 NiFi 实例或集群的所有组件的信息。可以按名称、类型或 URI 过滤它们。不同的组件类型有不同的选项卡。以下是可以在 NiFi 摘要 UI 中进行监控的组件 -

  • 处理器
  • 输入端口
  • 输出端口
  • 远程进程组
  • 连接
  • 进程组

在此 UI 中,右下角有一个名为系统诊断的链接,用于检查 JVM 统计信息。

报告任务

Apache NiFi 提供多种报告任务来支持 Ambari、Grafana 等外部监控系统。开发人员可以创建自定义报告任务,也可以配置内置报告任务,将 NiFi 的指标发送到外部监控系统。下表列出了 NiFi 1.7.1 提供的报告任务。

编号 报告任务名称 描述
1 Ambari报告任务 为 NiFi 设置 Ambari Metrics Service。
2 控制器状态报告任务 报告 NiFi 摘要 UI 中最近 5 分钟的信息。
3 监控磁盘使用情况 报告并警告特定目录的磁盘使用情况。
4 监控内存 监控 JVM 的 Java 内存池中使用的 Java 堆的数量。
5 站点到站点公告报告任务 使用站点到站点协议在公告中报告错误和警告。
6 站点到站点来源报告任务 使用站点到站点协议报告 NiFi 数据来源事件。

NIFI API

有一个名为系统诊断的 API,可用于监控任何自定义开发的应用程序中的 NiFI 统计信息。让我们检查一下 postman 中的 API。

要求

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

回复

{
   "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"
         }
      }
   }
}