
WeKan 统计与活动数据导出指南接入 ELK/Logstash、定制统计看板与指标采集【免费下载链接】wekanThe Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . PR source translation to imports/i18n/data/en.i18n.json, other translations at https://app.transifex.com/wekan/wekan项目地址: https://gitcode.com/GitHub_Trending/we/wekanWeKan 作为基于 Meteor 的开源看板会把卡片创建、列表移动、评论、归档等每一次用户操作以结构化文档写入activities集合。本文围绕 Stats 文档 展开讲解如何把 WeKan 的活动与统计数据导出到 Logstash/ElasticSearch/KibanaELK做日志分析如何用社区 Python 脚本搭建统计看板以及当前仓库内置的版本/运行时统计与 Prometheus 指标采集方案帮助你为 WeKan 构建从“原始活动数据”到“可视化报表”的完整数据链路。Stats 文档定位WeKan 的统计与活动数据导出入口Stats.md 是 WeKan 文档体系docs/Features/Reports/中关于“统计Stats”的入口页面。它的主题非常明确导出 WeKan 的活动与统计数据用于仪表盘和数据分析。原文核心内容由三个外部项目/PR 构成wekan-logstash把 WeKan 的每日变更以 JSON 形式导出到 Logstash 与 ElasticSearch/KibanaELK栈wekan-stats用 Python 脚本为 WeKan 搭建统计仪表盘数据库变更的日志记录PR #1010 与修复 PR #1033一度提供控制台、文件与 Zulip 聊天机器人三种日志输出渠道其中 PR #1033 用 winston 日志器替换了console.log。文档末尾的 Related 小节还给出了三个关联方向MetricsPrometheus 指标端点、Logs日志排障与 REST API编程式取数。下面的章节将逐一展开这些方向并结合当前仓库源码给出可验证的实现细节。先理解数据源头WeKan 的 activities 活动集合所有导出方案都以 WeKan 自身记录的活动数据为基础。从源码看活动统一写入activities集合其定义位于 models/activities.jsconst Activities new Mongo.Collection(activities);几点关键设计见 models/activities.js 顶部注释不强制 Schema活动文档由可信的服务端环境写入不同活动拥有不同字段cardId、boardId、listId、swimlaneId、userId、commentId、attachmentId、checklistId等因此没有为其定义固定 schema自动时间戳插入前 hook 会写入createdAt与modifiedAt且可在 Admin Panel / Features / Notifications 中通过disableActivities特性开关整体关闭活动记录面向查询的索引服务端启动时会为常见查询建立索引{ cardId: 1, createdAt: -1 }与{ boardId: 1, createdAt: -1 }见 models/activities.js这也侧面印证了按卡片/看板按时间倒序读取活动是高频场景。活动文档的写入遍布各业务模型例如 models/cards.js 附近一系列Activities.insertAsync(...)调用覆盖了卡片创建、移动、归档等事件models/checklistItems.js 记录了清单项变更。也就是说看板上的每一次操作几乎都会沉淀为一条带时间戳的活动记录——这正是 wekan-logstash 每日导出、以及统计看板的数据基础。方案一每日导出 JSON 到 ELKwekan-logstash工作原理与数据流wekan-logstash 是 WeKan 官方维护的外部集成仓库原文档以外部链接给出。其思路是每天把 WeKan 中新增/变更的数据以 JSON 形式导出投递给 Logstash再由 ElasticSearch 索引、Kibana 可视化。典型链路为WeKan (MongoDB activities 等集合) │ 每日 JSON 导出 ▼ Logstash ──► ElasticSearch ──► Kibana 仪表盘这种“批量导出 ELK 栈”的架构适合做长期趋势分析、操作审计与告警无需实时接入业务数据库。在 docker-compose 中的官方注释指引当前仓库的 docker-compose.yml 在OPTIONAL: LOGS AND STATS一节给出了与文档一致的官方说明可直接作为部署参考# OPTIONAL: LOGS AND STATS # https://github.com/wekan/wekan/blob/main/docs/Features/Logs.md # # Daily export of Wekan changes as JSON to Logstash and ElasticSearch / Kibana (ELK) # https://github.com/wekan/wekan-logstash # # Statistics Python script for Wekan Dashboard # https://github.com/wekan/wekan-stats这意味着通过 Docker 部署 WeKan 时可以在同一 compose 项目中并列部署 Logstash、ElasticSearch 与 Kibana 容器再按 wekan-logstash 的配置把导出脚本指向 WeKan 的 MongoDB 即可。这类导出通常需要具备对activities等集合的读取权限readWrite级别的数据库用户即可满足读取需要。为什么建议用“当前日志集成方案”而非旧版 Zulip 日志器原文档列出的 PR #1010Console/file/Zulip 数据库变更日志器与 PR #1033改用 winston属于2017 年已被回退的旧方案当前仓库有明确证据回归测试 tests/legacyWinstonLogger.test.cjs 断言server/logger.js与server/observableChanges.js已不存在且package.json中不得出现winston/winston-zulip依赖docker-compose.yml 注释明确指出旧版 Winston/Zulip 日志器在启动时替换了 Meteor 默认的 console transport可能导致数据库无法启动issue #1094已于 2017 年移除应改用上文所述的日志集成方案。因此实际部署时应以 wekan-logstashELK与 wekan-stats统计看板为主不要把旧 PR 的 Zulip 方案当作现行功能。方案二用 wekan-stats Python 脚本搭建统计看板wekan-stats 是配套的Python 统计脚本用于生成 WeKan 使用情况的统计看板。同样以外部链接形式出现在原文档中。结合原文档描述“Statistics Python script for a WeKan dashboard”与仓库注释docker-compose.yml“Statistics Python script for Wekan Dashboard”其典型用法是在独立服务器上安装 Python 环境与脚本依赖配置脚本连接 WeKan 的 MongoDB读取boards、cards、lists、activities等集合按计划任务如cron定时执行输出统计图表/HTML 看板将看板发布到 Web 服务器或嵌入内网监控页面。可统计的指标通常包括看板/列表/卡片数量、各看板活跃度、成员操作分布、每日新增卡片趋势等。与 ELK 方案相比wekan-stats 更轻量适合不想引入完整日志栈、只需一个业务统计看板的场景。说明wekan-logstash 与 wekan-stats 均为仓库外的独立项目当前仓库只提供文档入口与 docker-compose 中的注释指引具体安装步骤以对应项目 README 为准。方案三内置的运行时统计getStatistics除了外部导出工具WeKan 自身就内置了一个管理员可见的系统统计接口。定义于 server/statistics.jsMeteor 方法getStatistics仅对管理员返回非管理员返回false统计内容涵盖分组字段说明versionversion读取package.json的版本号并去掉v前缀platformpackaging安装方式检测Snap / Docker / bundle / Sandstorm见 models/lib/platformPackaging.jsostype/platform/arch/release/uptime/loadavg/totalmem/freemem/cpusNodeos模块的系统信息processnodeVersion/pid/uptime运行进程信息nodeHeapStatsV8 堆统计非 Sandstorm 环境下采集共 10 项如used_heap_size、heap_size_limitnodeMemoryUsagerss/heapTotal/heapUsed/external非 Sandstorm 环境下采集meteormeteorVersion去掉METEOR前缀的 Meteor 版本mongodatabaseType/mongoVersion/databaseCommit/ferretdbVersion/ferretdbCommit/mongoStorageEngine/mongoOplogEnabled/reactivity/reactivityOrder/ddpTransport数据库类型MongoDB 或 FerretDB、版本、存储引擎、oplog 状态与响应式驱动oplog/changeStreams/pollingsessionsessionsCount当前活跃 MongoDB 会话数数据库相关的检测逻辑值得展开见 server/statistics.js数据库类型识别通过buildInfo命令返回的ferretdb/ferretdbVersion/ferretdbFeatures字段区分 MongoDB 与 FerretDB存储引擎检测优先用serverStatus需要集群级clusterMonitor权限无权限时退化为对首个非system.*集合执行$collStats通过wiredTiger/inMemory子文档推断引擎FerretDB 场景直接标记为SQLite响应式驱动mongoOplogEnabled为 true 时根据 oplog handle 名称区分oplog与changeStreams否则为polling并同时记录环境变量中配置的METEOR_REACTIVITY_ORDER与DDP_TRANSPORT。这些数据最终在Admin Panel / Version页面呈现管理员无需额外工具即可快速核对版本、数据库与运行环境。方案四Metrics 端点与 Prometheus 指标采集原文档 Related 小节将 Metrics 列为关联内容。查看 docs/Features/Reports/Metrics.md 可知WeKan 提供 Prometheus 指标端点并支持通过环境变量控制访问范围。在 docker-compose.yml 中按以下方式配置- METRICS_ALLOWED_IP_ADDRESSES192.168.0.100,192.168.0.200配置要点未设置METRICS_ALLOWED_IP_ADDRESSES时端点默认允许所有 IP 访问设置后仅允许列表内的 IP 访问建议至少填上监控采集节点如 Prometheus 服务器的地址配合 Prometheus 的scrape_configs定期抓取即可获得 WeKan 运行指标适合作为服务器健康监控的补充该特性来自社区 PR #4700后续提交补充了设置项支持Docker/Snap/Source 三端。从部署形态看Metrics实时进程指标与 wekan-logstash业务活动数据、wekan-stats业务统计看板互为补充前者面向“机器是否健康”后两者面向“业务发生了什么”。日志排查与数据获取的配套手段日志查看配合 docs/Features/Troubleshooting/Logs.md 可快速定位导出/采集链路的问题Snapsudo snap set wekan debugtrue开启调试日志sudo snap logs wekan查看全部日志sudo snap logs wekan.wekan/wekan.mongodb/wekan.caddy按服务查看DockerDEBUGtrue环境变量开启调试docker logs wekan-app与docker logs wekan-db分别查看应用与数据库日志源码运行start-wekan.sh中设置DEBUGtrue系统日志Snap/Docker 之外的部分日志可能落到/var/log/syslogsudo tail -f /var/log/syslog | lessMongoDB 全量查询日志进入 mongo shell 执行db.setProfilingLevel(2)记录所有操作用db.system.profile.find().pretty()查看排查完记得db.setProfilingLevel(0)恢复。注意Snap 场景下 较新的 WeKan 版本v4.56 起多数 MongoDB 日志被定向到 /dev/null查看日志时以实际部署版本为准。REST API 编程取数API/REST-API.md 提供 REST 接口可在脚本中按需拉取看板、卡片等数据作为批量导出方案的补充或验证手段。启用 API 需在 docker-compose 中保持WITH_APItruedocker-compose.yml 注释明确指出禁用 API 会导致 Export Board 功能不可用。实用总结与选型建议场景推荐方案数据/指标来源长期活动审计、趋势分析、告警wekan-logstash ELKMongoDBactivities等集合的每日 JSON 导出轻量业务统计看板wekan-statsPython直接查询 MongoDB 集合管理员快速核验运行环境内置getStatisticsAdmin Panel / Version 页面服务器健康监控Metrics PrometheusMETRICS_ALLOWED_IP_ADDRESSES限定的指标端点编程式取数REST APIWITH_APItrue时可用动手实践建议按以下顺序推进确认部署方式Docker / Snap / 源码在 docker-compose.yml 的 LOGS AND STATS 注释区找到对应集成入口先启用内置getStatistics在 Admin Panel / Version 页面核对版本、数据库与存储引擎确保环境符合预期根据分析需求二选一完整日志栈用 wekan-logstash 接入 ELK轻量看板用 wekan-stats在 docker-compose.yml 中设置METRICS_ALLOWED_IP_ADDRESSES并接入 Prometheus排查问题时按 docs/Features/Troubleshooting/Logs.md 逐级查看应用与数据库日志。以上方案覆盖了从“数据源头activities 集合”到“出口ELK / Python 看板 / Metrics / REST API”的完整链路可为 WeKan 的运营分析与监控体系提供可直接落地的参考。【免费下载链接】wekanThe Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . PR source translation to imports/i18n/data/en.i18n.json, other translations at https://app.transifex.com/wekan/wekan项目地址: https://gitcode.com/GitHub_Trending/we/wekan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考