html

构建一个可靠的自托管环境感觉非常棒,尤其是当你开始部署超越付费云替代品的自由开源软件工具时。但是,随着你的容器工具逐渐增多,你会想要寻找专门设计用于监控、组织和故障排除其他容器化环境的工具。以 Dozzle 为例。

虽然它没有提供与 Portainer、Komodo 或 Cockpit 相同的管理功能,但它让我能够在服务器节点上跟踪 Docker 日志。作为一个经常需要检查容器日志来排除故障、审计异常活动或复制应用创建时生成的随机令牌的人,Dozzle 很快就成为了我管理堆栈中不可或缺的一部分。

Dozzle 带来我的容器堆栈实时日志监控 它还可以跟踪资源消耗统计

Dozzle 并没有将一堆容器组织服务扔进一个复杂的界面,而是简单地提供了一个简洁的网页 UI,具备我监控 Docker 日志所需的所有便捷功能。首先,它在颜色编码的日志中显示了我容器集合的所有命令、错误、警告和输出流。只需通过查看消息旁边的颜色,就能识别不同的级别(或流的类型),简化了筛选数百条条目的过程——这也让一切看起来更轻松。

Dozzle 让我可以详细查看每一条日志记录,这在我需要查看错误时的原始 JSON 代码时非常有帮助。默认情况下,Dozzle 只显示操作中的容器,但它可以显示失败、损坏或已停止的环境的日志。我经常同时处理多个容器,Dozzle 让我可以将部署日志固定成独立的列,这样我就不必在不同的标签之间不断切换。由于它直接连接到底层的 Docker Socket,Dozzle 甚至可以提取容器的 CPU 和 RAM 使用情况以及网络速度,尽管我希望有一种方法可以跟踪持久存储的统计数据。

内置的 SQL 引擎和过滤器在故障排除时非常方便

内置的 SQL 引擎和过滤器在故障排除时非常方便

对于最近部署的失败 Docker 容器,故障排除要简单一些,因为日志文件中只有几十条记录。然而,如果我需要诊断突然出现错误的旧容器,情况就完全不同了。即使 Dozzle 的用户界面简单和紧凑的布局,阅读数千条日志条目也会让人感到非常痛苦。

幸运的是,Dozzle 支持强大的过滤机制,帮助我缩小搜索结果。例如,有一个正则表达式搜索工具,可以匹配所有与我的查询具有相同文本模式的条目,使其看起来更像是一个模糊搜索工具。我还可以过滤来自 STDERR 和 STDOUT 流的消息,我经常使用前者来缩小错误消息的范围。但真正的亮点是内置的 SQL 引擎,它让我可以使用声明性查询语言来筛选出精确的结果。在大学期间处理了很多数据库后,能够运行 SQL 命令,查找特定的 Docker 日志条目变得轻而易举。

它甚至可以从远程主机提取容器日志

它甚至可以从远程主机提取容器日志

我在家里的实验室里有多个 Docker Hub,有些是虚拟的,有些是裸金属的。为每个系统部署多个 Dozzle 实例并使用单独的 Web 用户界面来跟踪我的日志会非常麻烦,因为我得不停地切换不同的界面——更何况我还使用某些 Docker 虚拟机来测试(甚至是破坏)容器。

幸运的是,Dozzle 可以连接到多个节点上的 Docker 套接字,并将每个主机的日志条目集中显示在一个用户界面中。有几种方法可以实现这一点,包括依赖证书和 TCP 连接来配对不同节点。但我更倾向于使用代理的方式,这需要部署一个容器,将日志发送到我的主要 Dozzle 实例。

Dozzle 的部署同样简单

Dozzle 的部署同样简单

我在将多个节点连接到 Web UI 时使用 Dozzle 代理

我在将多个节点连接到 Web UI 时使用 Dozzle 代理

它与其他以服务器为中心的工具配合良好

Dozzle 最棒的地方就是它可以和其他容器监控工具一起使用。例如,您可以使用一个 Pulse 仪表板来跟踪您自托管的服务的正常运行时间,并在某个服务出现故障时,立即发送 Gotify 通知。然后,您可以利用 Gotify 的时间戳来缩小 Dozzle 收集的日志条目,以便更好地诊断错误。