概述#

以下基础服务可供开发人员配置并在其应用程序中使用。

基础服务#

服务

名称

描述

依赖

视频存储工具包 (VST)

jetson-vst

启用摄像头发现、视频存储、硬件加速视频解码和流式传输

Redis

Redis

jetson-redis

为微服务提供共享消息总线和存储

Ingress

jetson-ingress

启用一种标准机制,向客户端呈现微服务 API

存储

jetson-storage

配置外部存储并分配给各种微服务

网络

jetson-networking

管理用于连接 IP 摄像头的网络接口

监控

jetson-monitoring

帮助使用 Grafana 仪表板可视化收集的指标

系统监控

jetson-sys-monitoring

收集系统使用率指标

监控

GPU 监控

jetson-gpu-monitoring

收集 GPU 使用率指标

监控

IOT 网关

jetson-iot-gateway

为移动应用程序等富客户端启用对设备 API 的远程安全访问

防火墙

jetson-firewall

控制进出系统的网络流量

../_images/Foundation_Services.png

视频存储工具包 (VST)

VST [名称:jetson-vst] 在基于 Jetson 的平台上提供高效的摄像头和视频管理。它特别适用于基于 AI 的视频分析系统,因为它提供来自多个视频源的硬件加速视频解码、流式传输和存储。VST 还包括用于管理设备、查看流、创建和查看带有实时分析的绊线 (TW) 和感兴趣区域 (ROI) 的参考 Web 用户界面。有关 VST 服务的详细信息,请参阅 VST

Redis

Redis 服务 [名称:jetson-redis] 通常用作微服务之间数据交换的消息总线,和/或用作时序数据库。ai-nvr 参考应用程序微服务演示了这两种模式。应用程序还可以轻松自定义并将其用作独立产品。

Redis 的开箱即用配置基于标准最佳实践,例如保留、快照和限制。Redis 时序模块也作为 Redis 产品的一部分启用。用户可以根据自己的需要修改配置。有关 Redis 服务的详细信息,请参阅 Redis

Ingress

Ingress 服务 [名称:jetson-ingress] 启用了一种标准机制,可以将 API 作为开箱即用服务呈现。传入请求根据配置的路由路由到相应的微服务,从而使底层微服务架构与 API 使用者隔离开来。

Ingress 支持呈现和访问基础服务以及 Metropolis 微服务和应用程序支持的 API。有单独的 nginx 配置文件用于维护每个层(基础层和应用层)的规则。有关 Ingress 服务的详细信息,请参阅 API 网关 (Ingress)

存储

存储服务 [名称:jetson-storage] 管理可以连接到 Jetson 的外部(附加)存储。这是必要的,因为闪存到 eMMC (AGX) 或 NVMe (NX/Nano) 上的根文件系统 (RFS) 不足以记录和存储视频、日志文件等。此服务检测连接的存储驱动器(NVMe、SATA),格式化并挂载它们,然后在它们上面创建文件系统 (/data)。

对于基于 Orin AGX 的系统(具有闪存了 BSP 的内部 eMMC),外部 NVMe 或 SATA 驱动器可用于存储。对于基于 Orin NX 和 Nano 的系统(没有内部驱动器),应使用 NVMe 驱动器来刷新 BSP,SATA 驱动器可用于附加存储。

存储服务还创建各种日志卷,并设置配额和用户/组(基于配置),以便可以通过与每个微服务关联的系统用户强制执行配额。磁盘加密选项通过 BSP 提供的 LUKS 功能提供。有关存储服务的详细信息,请参阅 存储

网络

网络服务 [名称:jetson-networking] 帮助管理可能通过 POE 交换机连接到 Jetson 的 IP 摄像头。它在设备上设置网络子系统,它检测并设置用于外部通信 (eth0) 和摄像头连接 (eth1) 的网络接口,这些接口可以与 VST 微服务一起使用。对于只有一个内置接口的系统,例如开发套件,它将用于外部通信,并且需要将 USB 以太网适配器连接到外部 POE 交换机以连接摄像头。

此服务执行网络配置以支持不同的以太网接口并隔离摄像头的网络域。它执行自定义 DHCP 配置,以便连接的以太网摄像头可以获取 IP 地址。有关网络服务的详细信息,请参阅 网络

监控

监控服务 [名称:jetson-monitoring] 包括 Prometheus、Grafana、Push Gateway、ITS Monitoring。它为应用程序提供启用监控的挂钩。Grafana 端点通过 Ingress 服务公开以进行可视化。有关监控服务的详细信息,请参阅 监控

系统监控

系统监控服务 [名称:jetson-sys-monitoring] 向监控服务(通过 Prometheus 抓取)提供系统利用率,例如 CPU、内存、磁盘(使用 node-exporter 收集),以便在 Grafana 仪表板中查看。有关系统监控服务的详细信息,请参阅 监控

GPU 监控

GPU 监控服务 [名称:jetson-gpu-monitoring] 向监控服务(通过 push gateway)提供 GPU 统计信息(使用 tegrastats 实用程序收集),以便在 Grafana 仪表板中查看。有关 GPU 监控服务的详细信息,请参阅 监控

IoT 网关

iotgateway 服务 [名称:jetson-iot-gateway] 支持与云的始终在线的双向 TCP 连接,以允许防火墙后面的设备与云通信。传入流量被转发到注册的内部端点(通常是 Ingress)。此服务需要显式启用并进行正确的配置。有关 iotgateway 服务的详细信息,请参阅 IOT 网关

防火墙

防火墙服务 [名称:jetson-firewall] 启动简易防火墙 (UFW),其中预定义的规则适用于使用 docker compose 运行任何基础服务。由于 docker compose 容器在默认主机网络上运行,因此防火墙用于阻止对容器的外部访问,并且仅允许流量到达配置的开放端口。

对于运行使用其他微服务的应用程序,应为其添加更多规则。此服务需要显式启用并进行正确的配置。有关防火墙服务的详细信息,请参阅 防火墙服务

启动和停止基础服务#

所有基础服务都作为标准 Linux 服务实现,可以通过 systemctl 命令启动和停止。当您启动一项服务时,它会自动启动它需要的任何其他服务。

在开始之前,请注意以下先决条件

  • 连接服务所需的任何必要硬件,例如,存储服务的外部驱动器,或网络服务的 POE 交换机

  • 执行任何必要的软件配置,例如,Ingress 服务的 Nginx 配置,或防火墙服务的规则

  • 检索 NGC 的 API 密钥,容器托管在 NGC 中(请参阅 快速入门指南

如果您计划使用存储服务,请首先启动它,因为它会挂载存储驱动器并提供其他服务使用的目录结构。另请注意,网络服务需要在启用后重新启动系统,以便网络接口更新生效。

可以使用命令 sudo systemctl start <service-name> 启动服务

例如,sudo systemctl start jetson-redis

同样,可以使用命令 sudo systemctl stop <service-name> 停止服务

例如,sudo systemctl stop jetson-redis

如果您希望服务在系统启动时自动启动,请按如下方式启用它:sudo systemctl enable <service-name> --now

例如,sudo systemctl enable jetson-storage --now

请注意,“–now” 是一个可选参数,它会立即启动服务,而不是等到下次启动。

同样,要禁用上述设置并停止服务,请使用以下命令:sudo systemctl disable <service-name> --now

例如,sudo systemctl disable jetson-storage --now

如果您想在服务启动时监控来自服务的消息,请在单独的终端中使用以下命令:journalctl -fe -u <service-name>.service

例如,journalctl -fe -u jetson-storage.service