UniAgent部署(仅Linux支持)
当Linux服务器上存在多种语言的应用时,推荐使用UniAgent安装。
安装路径固定为/opt/tingyun-oneagent,安装步骤请参见UniAgent部署说明。
UniAgent安装包内集成了Java/PHP/.NET Core/Node.js/Python 多个语言的探针,安装后不需要手工修改应用的配置文件,所有嵌入探针的动作均由UniAgent自动完成,并且可以自动监控Docker容器内的应用。
UniAgent安装完毕后,如需监控Node.js应用,需手工开启/opt/tingyun-oneagent/conf/interceptor.conf
内Node.js监控开关nodejs_enabled=true
sudo sed -i -e "s/nodejs_enabled.*/nodejs_enabled=true/" /opt/tingyun-oneagent/conf/interceptor.conf
然后重启Node.js应用即可
普通探针部署
进入应用根目录并执行安装。
cd <app root dir> npm install tingyun
执行配置命令,填写应用名和授权序号。
node node_modules/tingyun/setup.js
完成之后会在应用目录下生成探针配置文件tingyun.json
修改应用的主文件,将
require('tingyun')
添加到文件首行。如果您的package.json中没有设置main参数,并且应用根路径下没有index.js文件,那么需要手动将
require('tingyun')
添加到主文件的首行。如果是windows系统,setup.js脚本添加
require('tingyun')
到文件首行会失败,需要手动将require('tingyun')
添加到主文件的首行。
使用pkg打包为可执行文件
进入应用根目录并执行安装。
cd <app root dir> npm install tingyun
将
require('tingyun')
添加到应用的主文件首行。
由于探针引入了动态require的js,所以需要修改package.js,添加scripts引用
示例:
{ "name": "demo", "version": "1.0.0", "description": "this is a demo", "main": "index.js", "bin": "index.js", "pkg": { "scripts": ["node_modules/tingyun/parsers/wrappers/**/*.js"], "targets": [ "node18-win-x64" ], "outputPath": "." }, "dependencies": { "express": "^4.18.2", "mysql": "^2.18.1", "tingyun": "^3.0.4" } }
- bin指定项目入口文件,按pkg使用文档设置
- pkg.scripts指定需要强制加入的js, 支持glob格式路径,
node_modules/tingyun/parsers/wrappers/**/*.js
是探针动态导入的模块路径 - 其他配置根据实际项目需要设置
重新打包
pkg package.json
打包时会出现警告信息,是正常现象
Warning Cannot resolve 'path' node_modules\tingyun\util\shimmer.js Dynamic require may fail at run time, because the requested file is unknown at compilation time and not included into executable. Use a string literal as an argument for 'require', or leave it as is and specify the resolved file name in 'scripts' option.
发布时,需要将探针配置文件
tingyun.json
放在和可执行文件同一文件夹内探针配置文件
tingyun.json
模板:{ "agent_log_level": "info", "app_name": "demo", "license_key": "9OgQXob4VGGFFYcm", "collectors": "127.0.0.1:7665", "ssl": false, "agent_log_file_name": "tingyun_agent.log", "audit_mode": false }
其中的app_name,license_key,collectors需要根据项目需要动态修改
日志文件路径不需要修改,日志输出到可执行文件当前目录下