You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Function App(Linux)中自动执行AppDynamics Machine Agent无需手动操作?

如何在Azure Function App(Linux)中自动执行AppDynamics Machine Agent无需手动操作?

首先得划个重点:如果你的Function App用的是Consumption Plan(消费计划),那基本没法实现这个需求——这个计划的沙箱限制非常严格,不仅不允许长期运行的后台进程,实例还会随时休眠唤醒,Agent根本没法稳定运行。所以第一步得把App Service Plan换成Premium(EP1/EP2/EP3)或者Dedicated(B1及以上)计划,这是能跑后台Agent的基础。

接下来给你说亲测有效的具体操作步骤:

  • 创建绑定启动逻辑的自定义脚本
    Azure Linux Function App的容器是靠自身的宿主进程维持的,你之前直接跑Agent命令或者放启动文件夹没用,就是因为没把Agent启动和宿主进程启动绑在一起——只启动Agent的话,容器会因为没有主进程直接退出。
    你可以在/opt/appdynamics/machine-agent目录下新建一个start-agent-and-function.sh脚本,内容如下:

    #!/bin/bash
    # 后台启动AppDynamics Machine Agent
    /opt/appdynamics/machine-agent/bin/machine-agent &
    # 启动Azure Function宿主进程(这行绝对不能丢,否则Function App没法正常提供服务)
    exec /azure-functions-host/Microsoft.Azure.WebJobs.Script.WebHost
    

    然后给脚本加执行权限,你可以通过Azure Portal的「高级工具(Kudu)」进入SSH终端,执行:

    chmod +x /opt/appdynamics/machine-agent/start-agent-and-function.sh
    
  • 配置Function App的启动命令
    登录Azure Portal找到你的Function App,进入「配置」→「应用设置」,点击「新建应用设置」,添加:

    • 名称:WEBSITE_STARTUP_COMMAND
    • 值:/opt/appdynamics/machine-agent/start-agent-and-function.sh
      保存设置后,Function App会自动重启,重启后就会自动执行这个脚本,同时启动Agent和Function宿主。
  • 验证Agent是否正常运行
    重启完成后,通过Kudu的SSH终端执行以下命令,检查Agent进程是否存在:

    ps aux | grep machine-agent
    

    另外也可以登录AppDynamics控制台,看看能不能接收到这个Agent的心跳数据,确认它成功连到了控制器。

  • 几个要注意的细节

    • 一定要确保/opt/appdynamics/machine-agent/conf/controller-info.xml里的控制器地址、端口、账号、访问密钥这些配置是对的,不然Agent启动了也没法连上AppDynamics平台。
    • 如果你是用自定义容器镜像部署的Function App,可以直接把Agent打包到镜像里,然后在Dockerfile里用CMD或者ENTRYPOINT指定这个启动脚本,部署时就自带启动逻辑了。
    • 别用nohup或者disown处理Agent进程,用&后台运行后,必须用exec启动Function宿主——这样宿主进程会成为容器的PID 1,Azure能正确管理整个容器的生命周期,缩放或者重启时不会出问题。

备注:内容来源于stack exchange,提问作者vikash singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 19:39:49