实时端口监控和发现工具Portracker

简介

什么是 Portracker ?

Portracker 是一个自托管的实时端口监控和发现工具,通过自动发现系统上的服务,提供网络的实时、准确的映射。它通过消除手动跟踪,帮助防止因端口冲突导致的部署失败。

主要特点

  1. 自动端口发现:自动扫描主机系统,发现并显示正在运行的服务及其端口,无需手动输入。
  2. 平台特定收集器:提供针对 DockerTrueNAS 的专用收集器,收集丰富的上下文信息。
  3. 轻量且自包含:作为单个进程运行,内置 SQLite 数据库,无需外部数据库依赖。
  4. 对等监控:可以将其他 Portracker 实例作为对等体添加,统一管理所有服务器、容器和虚拟机。
  5. 分层分组:支持将服务器组织成父子结构,便于管理和监控。
  6. 增强的 TrueNAS 发现:支持通过提供 TrueNAS API 密钥发现运行的虚拟机,并获取系统信息。
  7. 现代响应式用户界面:提供清晰的仪表板界面,支持多种数据视图和主题模式。

应用场景

  • 企业网络管理:适用于需要监控和管理多个服务器和服务的企业环境,帮助 IT 部门保持网络运行的稳定性。
  • 容器化环境:在使用 Docker 的场景中,Portracker 能够自动发现容器中的服务,简化管理。
  • 虚拟化平台监控:在 TrueNAS 等虚拟化平台上使用,提供对虚拟机的监控和管理。
  • 开发和测试:开发人员可以使用 Portracker 来确保服务运行正常,避免端口冲突,提高开发效率。

Portracker 是一个灵活、功能强大的工具,可以显著提高网络管理的效率和准确性。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 portracker ,选择第一个 mostafawahied/portracker,版本选择 latest

本文写作时, latest 版本对应为 main,比 1.0.2 要晚几天 ;

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 新建文件夹 portracker 和 子目录
mkdir -p /volume1/docker/portracker/data

# 进入 portracker 目录
cd /volume1/docker/portracker

# 运行容器
docker run -d \
--restart unless-stopped \
--name portracker \
--network host \
-v $(pwd)/data:/data \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-e DATABASE_PATH=/data/portracker.db \
-e PORT=4999 \
mostafawahied/portracker:latest
可变 描述 默认
PORT* Web 应用程序将在其上运行的端口。 4999
DATABASE_PATH* 容器内 SQLite 数据库文件的路径。 /data/portracker.db
TRUENAS_API_KEY 用于增强 TrueNAS 数据收集的可选 API 密钥。
CACHE_TIMEOUT_MS 缓存扫描结果的持续时间(以毫秒为单位)。 60000
DISABLE_CACHE 设置为true以禁用所有缓存。 false
INCLUDE_UDP 设置为true在扫描中包含 UDP 端口。 false
DEBUG 设置true为详细的应用程序日志记录。 false

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
services:
portracker:
image: mostafawahied/portracker:latest
container_name: portracker
restart: unless-stopped
network_mode: "host"
volumes:
- ./data:/data
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- DATABASE_PATH=/data/portracker.db
- PORT=4999
# Optional: For enhanced TrueNAS features
# - TRUENAS_API_KEY=your-api-key-here

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 portracker 和 子目录
mkdir -p /volume1/docker/portracker/data

# 进入 portracker 目录
cd /volume1/docker/portracker

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:4999 就能看到主界面

如果容器越多,花的时间的会越久

下拉可以看到端口信息

可以为端口增加备注,方便记忆

多服务器

如果你有多台服务器,在安装了 Portracker 之后,可以点左下角的 Add Server 添加进来统一管理

  • Server Name:用于标识服务器
  • Server URL:服务器地址,例如 http://192.168.0.199:4999

设置没问题的话,就可以看到另一台主机的信息了

如果不行,可以尝试让群晖的 docker 服务允许通过 TCP 进行连接。

SSH 连到群晖上,编辑文件 /var/packages/Docker/etc/dockerd.json ,并新增一行:

1
"hosts" : [ "tcp://192.168.0.199:2375", "unix:///var/run/docker.sock" ],

title

其中的 IP 需要改成群晖主机的 IP 地址,然后保存。接下来,还需要重启群晖的 docker 服务

1
2
# 重启 docker 套件
synoservice --restart pkgctl-Docker

参考文档

Mostafa-Wahied/portracker
地址:https://github.com/mostafa-wahied/portracker

portracker - Ports monitoring & auto discovery dashboard for your homelab : r/selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/1m3k148/portracker_ports_monitoring_auto_discovery/