
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
一个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 https://github.com/xperimental/nextcloud-exporter.git 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 https://nextcloud.example.com
导出器会生成一个登录URL,您需要在浏览器中打开。如果为导出器创建了专用用户,请确保使用该用户登录,因为应用密码将绑定到登录用户。在浏览器中授予访问权限后,导出器会输出需要填入配置的用户名和密码。
登录流程完成后,可以在用户设置中禁用生成令牌的文件系统访问权限:
!允许文件系统访问复选框
也可以使用Docker容器进行交互式登录:
bashdocker run --rm -it ghcr.io/xperimental/nextcloud-exporter --login --server https://nextcloud.example.com
登录流程至少需要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: "https://example.com" # 令牌认证必填 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,格式如下:
plainhttps://example.com/ocs/v2.php/apps/serverinfo/api/v1/info
路径会自动添加到您提供的服务器URL中,因此上述示例中只需设置--server https://example.com即可。
在浏览器中打开此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 | 实例的用户总数 |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务