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需要根据项目需要动态修改
日志文件路径不需要修改,日志输出到可执行文件当前目录下