监控
概述
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_PORT
和 IMMICH_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: 在此处添加图片和更多详细信息