
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
!https://api.codeclimate.com/v1/badges/9ca0eb7b9c6191ab30e9/maintainability !https://api.codeclimate.com/v1/badges/9ca0eb7b9c6191ab30e9/test_coverage !https://img.shields.io/docker/pulls/ejhayes/nodejs-bull-monitor.svg
bull-monitor是一款一站式Bull队列监控与报告工具,以Docker容器形式运行,适用于本地开发或生产环境部署。其核心目标是无需编写自定义代码,即可实现Bull队列的实时集成与监控,提供可视化界面、性能指标收集及错误报告等功能。
arena、bull-board、bull-master)SENTRY_DSN环境变量启用NODE_ENV设为production时自动启用shdocker run -d --rm \ --name bull-monitor \ -e "NODE_ENV=development" \ -e "REDIS_HOST=host.docker.internal" # Docker特殊主机名,用于访问宿主机服务 -e "REDIS_PORT=6001" \ -e "PORT=3000" \ -e "BULL_WATCH_QUEUE_PREFIXES=bull" \ -e "UI=bull-master" \ -p 3000:3000 \ ejhayes/nodejs-bull-monitor:latest
在docker-compose.yml中添加以下配置:
ymlbull-monitor: image: docker.xuanyuan.run/ejhayes/nodejs-bull-monitor:latest ports: - 3000:3000 environment: REDIS_HOST: <你的Redis主机> REDIS_PORT: <你的Redis端口> BULL_WATCH_QUEUE_PREFIXES: bull PORT: 3000 UI: bull-master
启动服务:
shdocker-compose up bull-monitor
服务启动后,可通过以下路径访问相应功能:
| 路径 | 描述 |
|---|---|
/metrics | Prometheus指标端点 |
/health | 健康检查端点(始终返回HTTP 200和"OK"文本) |
/docs | Swagger UI文档 |
/docs-json | Swagger JSON定义 |
/queues | Bull队列可视化界面(根据配置的UI显示) |
| 环境变量 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|
ALTERNATE_PORT | 否 | 8081 | 启用OAuth2代理时,bull-monitor将使用此端口运行 |
REDIS_HOST | 是 | null | Redis主机(重要:必须与存储Bull任务的Redis实例相同) |
REDIS_PORT | 是 | null | Redis端口 |
REDIS_PASSWORD | 否 | null | Redis密码 |
REDIS_DB | 否 | 0 | Redis数据库索引(参考https://ioredis.readthedocs.io/en/latest/API/#new-redisport-host-options%E4%B8%AD%E7%9A%84%60options.db%60%EF%BC%89 |
UI | 否 | bull-board | 可视化界面类型(支持:arena、bull-board、bull-master) |
BULL_WATCH_QUEUE_PREFIXES | 否 | bull | 要监控的Bull队列前缀(支持通配符如prefix*) |
BULL_COLLECT_QUEUE_METRICS_INTERVAL_MS | 否 | 60000 | 队列指标收集间隔(毫秒) |
COLLECT_NODEJS_METRICS | 否 | false | 是否收集Node.js指标并通过Prometheus暴露 |
COLLECT_NODEJS_METRICS_INTERVAL_MS | 否 | 60000 | Node.js指标收集间隔(毫秒,若启用) |
REDIS_CONFIGURE_KEYSPACE_NOTIFICATIONS | 否 | true | 自动配置Redis键空间通知(默认通常未启用,重要:若无键空间通知则无法正常工作) |
LOG_LABEL | 否 | bull-monitor | 日志标签 |
LOG_LEVEL | 否 | info | 日志级别(支持:debug、error、info、warn) |
NODE_ENV | 否 | production | Node环境(使用development启用彩色日志) |
OAUTH2_PROXY_* | 否 | null | OAuth2代理配置,详见https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/overview/#environment-variables |
PORT | 否 | 3000 | 服务端口 |
SENTRY_DSN | 否 | null | Sentry DSN(用于错误报告,未提供则禁用) |
USE_OAUTH2_PROXY | 否 | 0 | 是否启用OAuth2代理(仅1表示启用) |
指标通过/metrics端点暴露,为每个队列自动跟踪以下指标:
| 指标名称 | 类型 | 描述 |
|---|---|---|
jobs_completed_total | gauge(仪表盘) | 已完成任务总数 |
jobs_failed_total | gauge(仪表盘) | 失败任务总数 |
jobs_delayed_total | gauge(仪表盘) | 延迟任务总数 |
jobs_active_total | gauge(仪表盘) | 活跃任务总数 |
jobs_waiting_total | gauge(仪表盘) | 等待任务总数 |
jobs_active | counter(计数器) | 活跃任务计数 |
jobs_waiting | counter(计数器) | 等待任务计数 |
jobs_stalled | counter(计数器) | 停滞任务计数 |
jobs_failed | counter(计数器) | 失败任务计数 |
jobs_completed | counter(计数器) | 完成任务计数 |
jobs_delayed | counter(计数器) | 延迟任务计数 |
job_duration | summary(摘要) | 任务处理时长(已完成/失败任务) |
job_wait_duration | summary(摘要) | 任务等待启动时长 |
job_attempts | summary(摘要) | 任务完成/失败前的尝试次数 |
| 标签名称 | 描述 |
|---|---|
queue_prefix | 队列前缀 |
queue_name | 队列名称 |
job_name | 任务名称 |
status | 任务状态(可选值:completed、failed) |
error_type | 错误类型(使用错误类名) |
*_total)每60秒刷新一次,可通过BULL_COLLECT_QUEUE_METRICS_INTERVAL_MS调整间隔可在Grafana中可视化队列指标,需同时运行:
bull-monitor(确保/metrics端点可访问)bull-monitor指标)sh# 启动服务 npm run services:start npm run start:dev # 生成测试数据 npm run generate
访问Grafana(http://localhost:3001%EF%BC%89%EF%BC%8C%E5%AF%BC%E5%85%A5%E4%BB%A5%E4%B8%8B%E4%BB%AA%E8%A1%A8%E7%9B%98%EF%BC%9A
| Grafana仪表盘名称 | Grafana ID | 描述 |
|---|---|---|
| 队列概览 | https://grafana.com/grafana/dashboards/*** | 所有监控Bull队列的高级概览 |
| 队列详情 | https://grafana.com/grafana/dashboards/*** | 特定队列的详细指标 |
来源:https://github.com/felixmosh/bull-board#readme
通过设置UI=bull-board显式启用。
来源:https://github.com/hans-lizihan/bull-master
通过设置UI=bull-master启用。
来源:https://github.com/bee-queue/arena
通过设置UI=arena启用。
通过内置OAuth2代理限制访问,需至少设置以下环境变量:
USE_OAUTH2_PROXY=1(启用代理)OAUTH2_PROXY_REDIRECT_URL(OAuth提供商重定向URL)OAUTH2_PROXY_CLIENT_ID(客户端ID)OAUTH2_PROXY_SECRET_ID(密钥)更多配置选项见https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/overview/#environment-variables%E3%80%82
启动完整本地开发环境:
sh# 启动依赖服务 npm run services:start # 启动开发模式 npm run start:dev
可用服务及访问地址:
localhost:6001localhost:6002(无需认证,无加密)清理环境:
sh# 停止并移除所有服务 npm run services:remove # 仅停止服务(保留数据) npm run services:stop
查看https://github.com/ejhayes/bull-monitor/projects/1%E4%BA%86%E8%A7%A3%E6%9C%AA%E6%9D%A5%E6%94%B9%E8%BF%9B%E8%AE%A1%E5%88%92%E3%80%82
感谢以下贡献者(emoji key):
| https://github.com/ejhayes https://github.com/ejhayes/bull-monitor/commits?author=ejhayes 🚇 https://github.com/ejhayes/bull-monitor/commits?author=ejhayes https://github.com/ejhayes/bull-monitor/commits?author=ejhayes |
本项目遵循https://github.com/all-contributors/all-contributors%E8%A7%84%E8%8C%83%EF%BC%8C%E6%AC%A2%E8%BF%8E%E4%BB%BB%E4%BD%95%E5%BD%A2%E5%BC%8F%E7%9A%84%E8%B4%A1%E7%8C%AE%EF%BC%81
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务