跳转到主要内容

监控

概述

Immich 提供多种性能指标,用于本地监控和洞察性能。这种集成主要表现为 Prometheus 指标。然而,由于使用了 OpenTelemetry 工具,也可以导出追踪信息。

备注

这是一个需要手动启用的功能,旨在帮助您监控 Immich 的性能。此数据不会发送到您配置以外的任何地方。

Prometheus

Prometheus 是一个从您配置的多个来源收集指标的工具。它采用“拉取”策略 —— 即它定期从每个定义的来源请求数据。这意味着来源(本例中为 Immich)在被请求之前不会发送任何内容,还意味着来源需要暴露一个端点,供 Prometheus 在请求数据时进行点击。

指标

这些指标以多种形式呈现:

  • 计数器,只能递增。例如:端点被调用的次数。
  • 仪表,可以在一定范围内增加或减少。例如:CPU 使用率。
  • 直方图,每次观察分配到一定数量的“桶”。例如:响应时间,每个桶代表若干毫秒。这种类型相对复杂一些。
    • 桶在这里是 累计 的;也就是说,一个观察值不仅会被放入包含它的最小桶,也会被放入所有比其大的桶。例如,如果一个直方图有三个桶,分别是 1ms、5ms 和 10ms,则一个 3ms 的观察值将被放入 5ms 和 10ms 的桶中。

Immich 的指标分为 API(端点调用与响应时间)、主机(内存与 CPU 使用率)以及 IO(内部数据库查询、图像处理等)。每组指标都可以独立启用或禁用。

配置

默认情况下,Immich 不会暴露指标端点。要启用此端点,可以在 .env 文件中添加环境变量 IMMICH_TELEMETRY_INCLUDE=all。注意,目前只有服务容器使用该变量。

提示

IMMICH_TELEMETRY_INCLUDE=all 会启用所有指标。如需更精细的配置,可以列出以逗号分隔的指标名称(例如,IMMICH_TELEMETRY_INCLUDE=repo,api)。或者,也可以使用 IMMICH_TELEMETRY_EXCLUDE 排除特定指标。更多信息请参阅环境变量部分

下一步是将新建或已有的 Prometheus 实例配置为抓取此端点。以下步骤假设您没有已有的 Prometheus 实例,但步骤相似。

您可以通过在 Compose 文件中定义一个 Prometheus 服务来开始:

immich-prometheus:
container_name: immich_prometheus
ports:
# 这会暴露 Prometheus 的默认端口,方便与其交互
- 9090:9090
image: prom/prometheus
volumes:
# Prometheus 配置文件 - 提供了一个初始配置文件
- ./prometheus.yml:/etc/prometheus/prometheus.yml
# Compose 文件底部定义的命名卷;也可以是一个挂载的文件夹
- prometheus-data:/prometheus

您还需要将 prometheus-data 添加到 Compose 文件底部的卷列表中:

volumes:
model-cache:
prometheus-data:

最后一步是 配置文件。此文件定义了 Prometheus 需要的目标来源。下载并将其放置在与 Compose 文件相同的文件夹中。

提示

提供的文件只是一个起点。Prometheus 有很多配置方式,请随意尝试!

使用 docker compose down 停止容器,然后使用 docker compose up -d 启动容器后,Prometheus 实例将开始从 Immich 的服务和微服务容器收集指标。注意,我们不需要为这些容器暴露任何新端口 —— 通信通过内部 Docker 网络处理。

备注

要确切查看提供了哪些指标,可以额外将 8081:8081 添加到服务容器的端口,8082:8082 添加到微服务容器的端口。 访问这些服务的 /metrics 端点将显示与 Prometheus 收集到的数据相同的原始数据。 要配置这些端口,请参阅 IMMICH_API_METRICS_PORTIMMICH_MICROSERVICES_METRICS_PORT

用法

那么,在设置好 Prometheus 后,如何实际查看指标?最简单的方法是直接使用 Prometheus。访问 Prometheus 将显示一个 Web 界面,您可以在其中搜索和可视化指标。您还可以查看数据源的状态和配置设置,但这些超出了本指南的范围。

Grafana

作为一个专门的工具,您可以选择使用 Grafana,它提供良好的展示效果。Grafana 可连接到 Prometheus(以及其他可能的来源)以进行复杂的数据可视化。

设置 Grafana 的方式与 Prometheus 类似。您可以为其添加一个服务:

immich-grafana:
container_name: immich_grafana
command: ['./run.sh', '-disable-reporting'] # 禁用 Grafana 的遥测功能
ports:
- 3000:3000
image: grafana/grafana
volumes:
# 存储您的美丽仪表盘和面板
- grafana-data:/var/lib/grafana

并为其添加一个新的卷:

volumes:
model-cache:
prometheus-data:
grafana-data:

在停止服务并重新启动后,您现在可以访问 Grafana 查看您的指标。在首次登录时,用户名和密码均为 admin,建议立即更新密码。然后您可以进入设置,通过 http://immich-prometheus:9090 添加一个数据源,使 Grafana 指向您的 Prometheus 实例。

用法

您可以创建第一个仪表盘以开始。别忘了经常保存,否则会丢失所有进度!

然后可以创建一个新面板,并将其数据源指定为 Prometheus。

-- TODO: 在此处添加图片和更多详细信息