一个Prometheus导出器,用于获取Nextcloud服务器实例的相关指标。
使用nextcloud-exporter的推荐方式是运行提供的Docker镜像。目前可在Docker Hub和GitHub Container Registry获取:
plaindocker pull ghcr.io/xperimental/nextcloud-exporter:latest docker pull xperimental/nextcloud-exporter:latest
除了指向master分支当前版本的latest标签外,也提供带版本号的标签。
如果您有较新版本(>= 1.16)的Go环境和GNU Make,获取二进制文件的步骤如下:
bashgit clone [***] cd nextcloud-exporter make
完成后,当前目录下会生成nextcloud-exporter二进制文件。
导出器支持两种与Nextcloud服务器认证的方式:
如果您使用Nextcloud 22或更高版本,建议使用令牌认证,因为它不需要具有管理员权限的普通用户账户。
如果配置中同时指定了令牌和用户名/密码,令牌将优先生效。
Nextcloud 22及更高版本支持服务器信息的“令牌认证”。通过这种方式,访问服务器信息不需要具有管理员权限的普通用户账户。您可以将令牌设置为任意值,但建议设置为长随机数:
bash# 生成随机值(例如使用openssl) TOKEN=$(openssl rand -hex 32) # 设置令牌(使用occ控制台应用) occ config:app:set serverinfo token --value "$TOKEN"
然后,您可以在导出器配置中使用此生成的令牌,而非用户名和密码。
要访问serverinfo API,您需要管理员用户的凭证。建议为此创建一个单独的用户。导出器还可以生成“应用密码”,这样配置中就无需保存真实用户密码,且导出器会作为已连接的应用显示在用户的安全面板中。
要让nextcloud-exporter创建应用密码,请使用--login参数启动:
bashnextcloud-exporter --login --server [***]
导出器会生成一个登录URL,您需要在浏览器中打开。如果为导出器创建了专用用户,请确保使用该用户登录,因为应用密码将绑定到登录用户。在浏览器中授予访问权限后,导出器会输出需要填入配置的用户名和密码。
登录流程完成后,可以在用户设置中禁用生成令牌的文件系统访问权限:
!允许文件系统访问复选框
也可以使用Docker容器进行交互式登录:
bashdocker run --rm -it ghcr.io/xperimental/nextcloud-exporter --login --server [***]
登录流程至少需要Nextcloud 16才能正常工作。
plain$ nextcloud-exporter --help Usage of nextcloud-exporter: -a, --addr string 用于监听连接的地址。(默认值:":9205") --auth-token string 认证令牌。使用Nextcloud 22或更高版本时可替代用户名和密码。 -c, --config-file string YAML配置文件路径。 --login 使用交互式登录创建应用密码。 -p, --password string 连接Nextcloud的密码。 -s, --server string Nextcloud服务器URL。 -t, --timeout duration 获取服务器信息文档的超时时间。(默认值:5s) --tls-skip-verify 跳过Nextcloud服务器的证书验证。 -u, --username string 连接Nextcloud的用户名。 -V, --version 显示版本信息并退出。
启动后,服务器会在/metrics端点提供指标,可作为Prometheus的目标。
有三种配置nextcloud-exporter的方法(优先级从高到低):
所有设置也可通过环境变量指定:
| 环境变量 | 对应的命令行参数 |
|---|---|
NEXTCLOUD_SERVER | --server |
NEXTCLOUD_USERNAME | --username |
NEXTCLOUD_PASSWORD | --password |
NEXTCLOUD_AUTH_TOKEN | --auth-token |
NEXTCLOUD_LISTEN_ADDRESS | --addr |
NEXTCLOUD_TIMEOUT | --timeout |
NEXTCLOUD_TLS_SKIP_VERIFY | --tls-skip-verify |
可使用--config-file选项从YAML文件读取配置:
yaml# 必填 server: "[***]" # 令牌认证必填 authToken: "example-token" # 用户名/密码认证必填 username: "example" password: "example" # 可选 listenAddress: ":9205" timeout: "5s" tlsSkipVerify: false
认证令牌和密码均可选择从单独的文件读取,而非直接通过上述输入方法获取。
只需将值设置为文件路径并前缀@,例如:
bash# 认证令牌 nextcloud-exporter -c config-without-token.yml --auth-token @/path/to/tokenfile # 密码 nextcloud-exporter -c config-without-password.yml -p @/path/to/passwordfile
当密码或令牌通过其他配置方式(配置文件或环境变量)设置时,此方法同样适用。
导出器通过Nextcloud服务器的“serverinfo”API读取指标。您可以在管理员设置的“监控”部分找到此API的URL,格式如下:
plain[***]
路径会自动添加到您提供的服务器URL中,因此上述示例中只需设置--server [***]即可。
在浏览器中打开此URL,您将看到导出器将使用的XML结构信息。
导出器会在每次被Prometheus抓取时查询Nextcloud服务器。如果要减少Nextcloud服务器负载,需相应调整抓取间隔:
ymlscrape_configs: - job_name: 'nextcloud' scrape_interval: 90s static_configs: - targets: ['localhost:9205']
nextcloud-exporter导出以下指标:
| 名称 | 描述 |
|---|---|
| nextcloud_active_users_daily_total | 过去24小时的活跃用户数 |
| nextcloud_active_users_hourly_total | 过去1小时的活跃用户数 |
| nextcloud_active_users_total | 过去5分钟的活跃用户数 |
| nextcloud_apps_installed_total | 当前安装的应用数量 |
| nextcloud_apps_updates_available_total | 有可用更新的应用数量 |
| nextcloud_database_info | 包含数据库元信息的标签。值恒为1。 |
| nextcloud_database_size_bytes | 数据库引擎报告的数据库大小(字节) |
| nextcloud_exporter_info | 包含导出器元信息的标签。值恒为1。 |
| nextcloud_files_total | 实例提供的文件总数 |
| nextcloud_free_space_bytes | 数据目录的可用磁盘空间(字节) |
| nextcloud_php_info | 包含PHP元信息的标签。值恒为1。 |
| nextcloud_php_memory_limit_bytes | 配置的PHP内存限制(字节) |
| nextcloud_php_upload_max_size_bytes | 配置的最大上传大小(字节) |
| nextcloud_scrape_errors_total | 此收集器的抓取错误计数 |
| nextcloud_shares_federated_total | 联合共享数量,按方向sent(发送)/received(接收)划分 |
| nextcloud_shares_total | 共享数量,按类型划分:authlink:受密码保护的共享链接group:共享给群组link:所有共享链接user:共享给用户mail:通过邮件共享room:共享给房间 |
| nextcloud_system_info | 包含Nextcloud元信息的标签。值恒为1。 |
| nextcloud_up | 指示导出器是否成功抓取指标:1:成功0:失败(服务器宕机、不可达、凭证无效等) |
| nextcloud_users_total | 实例的用户总数 |
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429