Nanuq 2.0:统一管理平台,适用于 Kafka、Redis、RabbitMQ、AWS 和 Azure

发布: (2026年1月20日 GMT+8 09:31)
11 min read
原文: Dev.to

Source: Dev.to

在开发环境中管理多个消息和缓存系统是一个常见的痛点。每个平台都需要自己的 CLI 工具、不同的身份验证机制以及独特的管理界面。在与同时处理 Kafka 主题、Redis 缓存、RabbitMQ 交换机、AWS SQS 队列以及 Azure Service Bus 的团队合作后——往往是并行进行——我创建了 Nanuq 来解决这个问题。

今天,我很高兴分享 Nanuq 2.0,这是一个重要的里程碑,为该开源项目带来了云平台支持、企业级安全以及生产就绪的功能。

什么是 Nanuq?

Nanuq 是一个统一的管理界面,将五个关键的消息和缓存平台整合到一个直观的 Web UI 中:

  • Apache Kafka – 主题管理与监控
  • Redis – 6 种数据类型,提供完整的 CRUD 操作
  • RabbitMQ – 交换机和队列管理
  • AWS (SQS/SNS) – 云端消息队列和发布/订阅
  • Azure Service Bus – 企业级消息,支持队列、主题和订阅

开发者无需在 kafka-console-consumerredis-clirabbitmqctl、AWS 控制台和 Azure 门户之间切换,便可在同一平台上完成所有管理工作。

Kafka 主题管理

Kafka 主题管理

Kafka 主题管理,显示消息计数和分区详情

统一仪表盘

Nanuq 仪表盘 – 所有平台的统一视图

统一仪表盘展示五个平台的指标

新版本 2.0 更新内容

云平台集成

2.0 中最大的新增功能是完整的云平台支持。

AWS (SQS/SNS)

  • 支持 15 个 AWS 区域(us‑east‑1、eu‑west‑1、ap‑southeast‑1 等)
  • 完整的 SQS 操作:创建队列(standard/FIFO)、发送/接收消息、监控队列属性
  • SNS 主题管理:发布消息、管理订阅(HTTP、Email、SMS、SQS、Lambda)
  • 多区域部署,适用于分布式团队

Azure Service Bus

  • 全球支持 30+ 个 Azure 区域
  • 队列管理,支持可配置的 TTL、死信、重复检测
  • 主题和订阅,具备过滤功能
  • 完整的消息生命周期:发送、接收(peek‑lock 模式)以及死信队列访问

AWS SQS 示例

AWS SQS Queue Management

管理具备发送/接收功能的 AWS SQS 队列

Azure Service Bus 示例

Azure Service Bus Topics

Azure Service Bus 主题和订阅管理

企业安全

安全是 2.0 的首要任务。

  • AES‑256 加密凭证存储
    所有存储的凭证(密码、访问密钥、连接字符串)在静止时均使用 AES‑256 并结合 DPAPI 派生的密钥进行加密。加密服务在保存凭证时自动加密,在 API 调用需要时自动解密。密码永不在 API 响应中暴露——仅返回元数据给前端。

  • 连接测试
    在保存凭证之前,用户可以测试连接以确认其可用性。这可以在将访问密钥、密码和连接字符串持久化到数据库之前验证其正确性,防止配置错误。

统一仪表盘

全新仪表盘提供跨所有平台的实时可视化:

  • 每个平台的服务器数量、主题/队列数量以及资源指标
  • 环境划分(开发、预发布、生产),使用颜色标签显示
  • 最近活动流,可按平台和操作类型过滤
  • 快速操作,可为每个平台添加新服务器

活动追踪与审计

覆盖所有平台的 24+ 种活动类型的完整审计轨迹:

  • 高级过滤(按类型、日期范围、搜索文本)
  • 支持导出为 CSV 或 JSON,以满足合规需求
  • 使用 Material Design 图标的可视化时间线
  • 自动刷新,实现实时监控

Activity Log

完整的活动审计轨迹,具备过滤和导出功能

高级 Redis 支持

对所有 6 种 Redis 数据类型提供完整的 CRUD 操作:

  • Strings – 查看、添加、更新和删除带 TTL 的缓存键
  • Lists – 推入/弹出元素,查看全部列表项

(内容继续如原始来源所示。)

Redis 与 RabbitMQ 管理概览

  • Strings – 设置/获取值,管理列表键
  • Hashes – 设置/获取字段,查看所有字段,管理哈希键
  • Sets – 添加/删除成员,查看集合成员
  • Sorted Sets – 添加带分数的成员,查看排序后的成员
  • Streams – 添加包含多个字段的条目,查看流条目

所有操作均支持分页,以处理大型数据集。

图片

Redis Data Type Management
管理不同数据类型的 Redis 键

RabbitMQ Exchange Management
RabbitMQ 交换机和队列管理

多环境管理

在 UI 中使用颜色编码的徽章按环境(Development、Staging、Production)标记服务器。这可以轻松避免意外修改生产资源,并帮助团队管理多环境工作流。

技术架构

后端:.NET 10.0 模块化单体

后端采用干净、模块化的架构:

Nanuq.WebApi/          # FastEndpoints API
Nanuq.Kafka/           # Kafka integration
Nanuq.Redis/           # Redis integration
Nanuq.RabbitMQ/        # RabbitMQ integration
Nanuq.AWS/             # AWS SQS/SNS integration
Nanuq.Azure/           # Azure Service Bus integration
Nanuq.Security/        # AES‑256 encryption service
Nanuq.EF/              # Entity Framework Core context
Nanuq.Sqlite/          # SQLite repositories
Nanuq.Common/          # Shared records and interfaces

关键模式

  • FastEndpoints 取代传统控制器,以获得更好的性能
  • 仓储模式 用于数据访问抽象
  • DbUp 迁移 用于数据库模式管理
  • 依赖注入 全局使用

前端:Vue 3 + Vuetify

前端使用 Vue 3 并结合 Vuetify 的 Material Design 组件。

状态管理

  • 为每个平台分别创建 Vuex 模块(kafka.jsredis.jsaws.jsazure.js
  • 使用全局通知系统进行集中错误处理
  • 乐观 UI 更新,错误时回滚

数据库:使用 EF Core 的 SQLite

SQLite 为所有服务器配置、凭证和活动日志提供零配置持久化。DbUp 迁移在启动时自动运行,使模式更新无缝进行。

入门

Docker(推荐)

# 拉取并运行后端和前端
docker-compose -f Docker/docker-compose.yml up -d

# 访问应用
open http://localhost:8080

Kubernetes

一键部署:

kubectl apply -f https://raw.githubusercontent.com/waelouf/Nanuq/main/K8s/nanuq-all-in-one.yaml

# 检查部署情况
kubectl get pods
kubectl get service nanuq-frontend

本地开发

后端

cd src/services/Nanuq/Nanuq.WebApi
dotnet run   # 在 http://localhost:5000 上运行

前端

cd src/app/nanuq-app
npm install
npm run serve   # 在 http://localhost:8080 上运行

实际使用案例

  1. 微服务开发 – 在单一 UI 中检查 Kafka 主题、Redis 缓存和 RabbitMQ 队列。
  2. 多云部署 – 并行管理 AWS SQS 与 Azure Service Bus,减少上下文切换。
  3. 环境晋升 – 将服务器标记为 Dev / Staging / Prod,并在提升更改前比较配置。
  4. 生产问题调试 – 快速查看消息计数、预览队列内容,并在无需安装 CLI 工具的情况下识别瓶颈。

性能考虑

分页

所有列表操作都支持分页(基于游标或令牌),以高效处理大数据集。

缓存策略

  • 服务器列表会被缓存,直到显式刷新。
  • 队列/主题详情缓存 5 分钟 TTL。
  • 消息列表从不缓存(始终实时)。

连接池

AWS 和 Azure SDK 客户端使用连接池,以最小化开销并提升连续操作的响应时间。

Security Best Practices

What Nanuq does

  • 对所有静止的凭证进行加密(AES‑256)。
  • 永不记录敏感数据(密码、密钥、令牌)。
  • 所有前端‑后端通信均使用 HTTPS。
  • 在前端和后端都对用户输入进行验证。

What you should do

  • 使用环境特定的凭证(不要在开发环境中共享生产凭证)。
  • 为云账户启用多因素认证(MFA)。
  • 定期轮换凭证。
  • 审查活动日志,查找未授权访问。
  • 部署在 VPN 后或限制网络访问。

限制与未来路线图

当前限制

  • 没有内置 … (根据需要继续列表)

用户认证(单用户模式)

  • 没有基于角色的访问控制(RBAC)
  • 仅限 Windows 使用 DPAPI‑based 加密(计划跨平台加密)

路线图 (欢迎贡献!)

  • 指标和告警(Prometheus 集成)
  • Kafka 的 Schema Registry 支持
  • 更多云平台(Google Cloud Pub/Sub)
  • 暗色模式 UI 主题

贡献

Nanuq 是开源的,欢迎贡献。

我们希望得到帮助的领域

  • 跨平台加密(替代 Windows DPAPI)
  • 单元测试和集成测试覆盖率
  • 文档改进
  • 错误报告和功能请求

查看 GitHub 仓库 开始吧。

结论

Nanuq 2.0 代表了在简化消息和缓存平台管理方面的重要进展。通过将五个平台整合到一个具备企业级安全性的界面中,我们降低了开发者的认知负荷,使多平台工作流更加高效。

该项目使用现代 .NET 和 Vue.js 构建,遵循清晰架构原则,并设计为易于扩展以支持更多平台。

试试看,并在评论中告诉我你的想法!

链接

  • GitHub:
  • Issues:

您在项目中管理哪些消息平台?统一的界面能帮助您的工作流吗?在下方分享您的想法!

Back to Blog

相关文章

阅读更多 »

Rapg:基于 TUI 的密钥管理器

我们都有这种经历。你加入一个新项目,首先听到的就是:“在 Slack 的置顶消息里查找 .env 文件”。或者你有多个 .env …

技术是赋能者,而非救世主

为什么思考的清晰度比你使用的工具更重要。Technology 常被视为一种魔法开关——只要打开,它就能让一切改善。新的 software,...

踏入 agentic coding

使用 Copilot Agent 的经验 我主要使用 GitHub Copilot 进行 inline edits 和 PR reviews,让我的大脑完成大部分思考。最近我决定 t...