跳到主要内容

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应用即可

普通探针部署

  1. 进入应用根目录并执行安装。

    cd <app root dir> 
    npm install tingyun
  2. 执行配置命令,填写应用名和授权序号。

    node node_modules/tingyun/setup.js 

    完成之后会在应用目录下生成探针配置文件tingyun.json

  3. 修改应用的主文件,将 require('tingyun') 添加到文件首行。

    如果您的package.json中没有设置main参数,并且应用根路径下没有index.js文件,那么需要手动将require('tingyun')添加到主文件的首行。

    如果是windows系统,setup.js脚本添加require('tingyun') 到文件首行会失败,需要手动将require('tingyun')添加到主文件的首行。

使用pkg打包为可执行文件

  1. 进入应用根目录并执行安装。

    cd <app root dir> 
    npm install tingyun
  2. require('tingyun') 添加到应用的主文件首行。

  3. 由于探针引入了动态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 是探针动态导入的模块路径
    • 其他配置根据实际项目需要设置
  4. 重新打包

    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.
  5. 发布时,需要将探针配置文件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需要根据项目需要动态修改

    日志文件路径不需要修改,日志输出到可执行文件当前目录下