实现应用监控实战指南)
后端微服务云原生【免费下载链接】midway A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 项目地址https://gitcode.com/gh_mirrors/mi/midway点击查看免费下载Midway 是基于 IoC 的 Node.js 服务端框架而阿里云 Node.js 性能平台Alinode是面向 Node.js 应用的内存、CPU、GC 与性能瓶颈分析的一站式监控服务。本文将以 Midway 3 项目为背景完整讲解如何将部署在独立云服务器上的 Midway 应用接入 Alinode从开通服务、创建应用获取凭证到安装 alinode 运行时与 agenthub 采集器、配置并启动服务最后结合仓库中packages/web的默认配置源码解释 Midway 侧对 Alinode 日志目录等参数的预置逻辑。读完本文你将能够在自己的 Midway 生产环境中独立完成 Alinode 监控接入并在性能平台上查看应用运行指标与错误日志。接入前的准备工作在开始接入之前需要确认目标应用满足以下条件应用需要部署在独立的服务器或云环境ECS 等而不是本地开发机或无法访问公网的受限环境服务器需要能够接入互联网因为 alinode 运行时与 agenthub 采集器需要与阿里云 Node.js 性能平台的服务端进行通信上报采集到的运行数据。简单说一台可以上网的独立服务器是 Alinode 监控能够正常工作的前提。第一步在阿里云创建性能平台服务与应用开通 Node.js 性能平台服务使用阿里云账号登录控制台找到并开通「阿里云 Node.js 性能平台」服务。开通后该服务会为你的账号提供应用创建、数据上报与监控看板能力。创建应用并获取凭证开通服务后在性能平台控制台中创建新应用。创建完成后平台会为每个应用分配一组唯一的凭证App ID应用 ID标识你的应用App Secret应用密钥用于采集器agenthub向平台服务端认证与上报数据。这两项凭证是后续配置yourconfig.json的核心参数请妥善保存避免泄露。凭证属于敏感信息建议在服务器环境中通过环境变量或受限权限的配置文件管理不要提交到代码仓库。第二步在服务器上安装监控依赖要在服务器上运行 Alinode 监控需要安装三部分组件这也是官方安装脚本的核心内容安装 tnvmalinode 版本管理工具用于下载和管理 alinode 运行时使用 tnvm 安装 alinode 运行时alinode 是内置了性能采集能力的 Node.js 运行时用于替代默认的node启动应用安装 agenthub 数据采集器负责把 alinode 运行时产生的日志与指标上报到性能平台。# 安装版本管理工具 tnvm若安装过程出错可参考 aliyun-node/tnvm 项目说明 $ wget -O- https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bash $ source ~/.bashrc # tnvm ls-remote alinode # 查看可用的 alinode 版本 $ tnvm install alinode-v6.5.0 # 安装需要的版本 $ tnvm use alinode-v6.5.0 # 切换使用该版本 $ npm install alicloud/agenthub -g # 全局安装 agenthub安装完成后务必进行自检确认当前 shell 环境中node与agenthub指向的都是.tnvm路径下的 alinode 版本$ which node /root/.tnvm/versions/alinode/v3.11.4/bin/node $ which agenthub /root/.tnvm/versions/alinode/v3.11.4/bin/agenthub只要which node和which agenthub的输出路径中包含.tnvm即说明 alinode 运行时与采集器已正确生效。如果node仍然指向系统自带的 Node.js 路径说明 tnvm 的use切换未生效需要重新检查~/.bashrc的加载情况。第三步配置凭证并启动 agenthub 采集器将上一步创建的App ID和App Secret保存为一个 JSON 配置文件例如放在项目根目录命名为yourconfig.json{ appid: ****, secret: **** }然后使用 agenthub 读取该配置并启动采集器agenthub start yourconfig.jsonagenthub 启动后会持续采集 alinode 运行时产生的日志并将其上报到阿里云 Node.js 性能平台。可以检查 agenthub 的进程状态与日志输出确认它已正常连接到平台。第四步以 alinode 运行时启动 Midway 服务关键一步必须使用 alinode 运行时而非系统默认 node来启动你的 Midway 应用并且启动时需要设置ENABLE_NODE_LOGYES环境变量让 alinode 运行时开始记录性能日志。对于 Midway 3 项目生产环境通常以bootstrap.js作为启动入口该入口由midwayjs/bootstrap提供见 packages/bootstrap/src/bootstrap.ts启动命令示例如下$ NODE_ENVproduction ENABLE_NODE_LOGYES node bootstrap.js命令说明NODE_ENVproduction以生产环境模式启动Midway 会加载对应的config.prod.ts配置ENABLE_NODE_LOGYES开启 alinode 运行时的日志采集开关是数据能否被采集的关键node bootstrap.js这里的node必须是上一步 tnvm 切换后的 alinode 运行时。启动后Midway 应用正常对外提供服务alinode 运行时在后台记录性能数据agenthub 负责将数据上报随后即可在阿里云 Node.js 性能平台的控制台中查看 CPU、内存、GC、堆快照、慢日志与错误日志等监控信息。Midway 侧对 Alinode 的默认配置实现除了运行环境层面的接入Midway 3 在框架侧也对 Alinode 做了配置预置方便在性能平台上定位应用日志。在 packages/web/src/config/config.default.ts 中可以找到 Alinode 相关默认配置// alinode runtime 写入的日志策略是: 如果 NODE_LOG_DIR 有设置写入 NODE_LOG_DIR 设置的目录否则为 /tmp let alinodeLogdir fs.existsSync(/tmp) ? /tmp : os.tmpdir(); // try to use NODE_LOG_DIR first if (process.env.NODE_LOG_DIR) { alinodeLogdir process.env.NODE_LOG_DIR; } mkdirp.sync(alinodeLogdir); exports.alinode { logdir: alinodeLogdir, error_log: [ path.join(appInfo.root, logs/${appInfo.pkg.name}/common-error.log), path.join(appInfo.root, logs/stderr.log), ], packages: [path.join(appInfo.appDir, package.json)], };这段代码透露了几个重要的实现细节日志目录策略alinode 运行时的日志写入目录遵循「优先使用NODE_LOG_DIR环境变量、否则回退到/tmp」的规则。Midway 在启动时读取该逻辑并确保日志目录存在mkdirp.synclogdir默认指向/tmp或NODE_LOG_DIR指定的目录供性能平台日志采集使用error_log预置了应用自身的错误日志路径包括logs/${包名}/common-error.log与logs/stderr.log方便 Alinode 将框架错误日志一并纳入监控packages记录了应用package.json的路径用于向平台上报应用依赖信息。同时仓库的测试代码也印证了NODE_LOG_DIR的作用见 packages/web/test/utils.ts测试环境中通过process.env.NODE_LOG_DIR logDir;指定 alinode 日志目录确保日志写入可预期的位置。因此在生产部署时除了官方步骤中的ENABLE_NODE_LOGYES你还可以通过NODE_LOG_DIR显式指定日志落盘目录例如$ NODE_ENVproduction ENABLE_NODE_LOGYES NODE_LOG_DIR/data/logs/alinode node bootstrap.js这样日志会集中写入指定目录便于日志清理与磁盘管理。Docker 容器中的接入方式如果你的 Midway 应用通过 Docker 容器部署接入 Alinode 的步骤与之类似但需要额外注意在构建镜像时同样需要安装 tnvm、alinode 运行时与 agenthub容器启动命令或 Dockerfile 的CMD/ 编排平台的启动参数中需要带上ENABLE_NODE_LOGYES环境变量如果使用NODE_LOG_DIR指定日志目录建议将该目录挂载到宿主机或日志采集路径避免容器重启导致日志丢失agenthub 采集器需要在容器内以独立进程或同一启动流程中运行保证其能访问 alinode 运行时产生的日志。Docker 场景下的具体镜像配置与平台侧的参数细节可参考阿里云官方帮助中心中关于 Node.js 性能平台在容器环境接入的文档说明。常见问题与注意事项which node不是.tnvm路径说明 alinode 运行时没有切换成功重新执行tnvm use 版本并确认source ~/.bashrc生效采集器无法上报检查yourconfig.json中的appid/secret是否与平台创建的应用一致同时确认服务器可以访问公网日志目录权限/tmp或NODE_LOG_DIR指定目录需要具备写权限Midway 默认会在启动时创建该目录凭证安全appid与secret属于敏感信息建议通过环境变量或 KMS 等方式注入不要硬编码进镜像或提交到 Git 仓库版本选择tnvm install alinode-v6.5.0中的版本号可以根据tnvm ls-remote alinode的实际输出调整选择与你的 Node.js 应用兼容的版本。小结接入阿里云 Node.js 性能平台的核心链路可以概括为四步开通服务并创建应用获取凭证 → 通过 tnvm 安装 alinode 运行时与 agenthub → 配置yourconfig.json并启动 agenthub → 用 alinode 运行时配合ENABLE_NODE_LOGYES启动 Midway 服务。在此基础上Midway 3 框架在 packages/web/src/config/config.default.ts 中已预置了alinode.logdir、error_log等默认配置并遵循NODE_LOG_DIR优先的日志目录策略你只需按上文步骤完成运行环境接入即可在性能平台看板上获得 Midway 应用的运行诊断能力。赞分享后端微服务云原生【免费下载链接】midway A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate with React and Vue. 项目地址https://gitcode.com/gh_mirrors/mi/midway点击查看免费下载相关推荐Midway 接入阿里云 Node.js 性能平台alinode实现线上监控实战指南Midway 接入阿里云 Node.js 性能平台alinode实现线上监控实战指南 阿里云 Node.js 性能平台alinode是面向 Node.j后端微服务云原生Midway 接入阿里云 Node.js 性能平台Alinode完整指南Midway 接入阿里云 Node.js 性能平台Alinode完整指南 Alinode 是阿里云推出的 Node.js 性能监控解决方案通过替换默认 N后端微服务云原生Midway 接入阿里云 Node.js 性能平台Alinode从依赖安装到日志采集的完整指南Midway 接入阿里云 Node.js 性能平台Alinode从依赖安装到日志采集的完整指南 导读 本文面向将 Midway 应用部署到独立云主机、并希后端微服务云原生上一篇openEuler/SBC-sig支持的桌面环境对比UKUI、DDE、GNOME谁更适合你的开发板下一篇Global Trust Authority RBS社区贡献指南从代码提交到文档维护创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考