更新时间:2025-11-04 GMT+08:00
分享

推理层日志采集与转储

用户在推理的过程中,如果出现异常要定位问题,可查看进程日志、NPU CANN plog、NPU Device、ray日志。

表1 推理层日志

日志类型

日志内容

日志产生路径

日志获取方式

进程日志

容器中各进程的运行日志,包括vllm server相关的进程

容器路径:

/home/ma-user/AscendCloud/logs

如果配置了--vllm-log-path参数,那么直接在节点路径{--vllm-log-path}/vllm_*/ 查看日志,否则还是在容器路径下面查看推理日志

  1. 登录容器
    kubectl exec -it ${Pod名称} -- bash
  2. 查看推理服务运行日志 {--vllm-log-path}/vllm_*/vllm_app*.log,参考生成yaml文件配置的vllm日志路径参数"--vllm-log-path"。

标准输出

执行如下命令

kubectl logs -f ${Pod名称}

推理服务容器状态日志

k8s容器运行状态,探针,执行事件等全量日志

Lite Cluster环境日志路径:

/var/log/cce/kubernetes/kubelet.log

Lite Server环境日志路径:

/root/kubernetes/log/kubelet/kubelet.log

  1. 查看某个容器对应的主机IP。
    kubectl get pods -o wide
  2. SSH登录到需要查看日志pod的主机节点上,然后cd /var/log/cce/kubernetes或者cd /root/kubernetes/log/kubelet
  3. 根据前面查到的容器名进行过滤。
    grep -ai "${Pod名称}" kubelet.log

NPU Device log

Device侧应用进程产生的运行、调试、安全日志,具体日志的目录结构可参考导出Device侧系统类日志和文件

执行命令才会生成采集日志,日志默认生成在执行命令当前目录下以时间戳命名的文件夹(在节点和容器里面都可执行,最终生成的日志是一样的)

  1. 执行如下命令创建目录。
    mkdir ~/ascend && cd ~/ascend
  2. 导出日志文件,可参考导出Device侧系统类日志和文件
    msnpureport report --permanent [options]

    ~/ascend/YY-DD-HH-MM-SS(当前时间戳)下会生成对应的日志文件。

Device-Plugin log

全量modelarts-device-plugin容器产生的运行日志

节点路径:

/var/log/devicePlugin/*/devicePlugin*.log

  1. 查看某个容器对应的主机IP地址。
    kubectl get pods -o wide
  2. SSH登录到需要查看日志pod的主机节点上,然后cd /var/log/devicePlugin/POD IP/,就可以查看devicePlugin*.log等Device侧日志。

Kubeinfer log

modelarts-infers-operator容器产生的运行日志

标准输出

执行如下命令,一般有两个容器,日志只在一个容器上生成,所以可以两个容器都执行下,也可以把标准输出下的日志定向到文件中再进行查看。

kubectl logs -f modelarts-infers-operator*

NPU CANN plog

算子API、HCCL通信的相关日志

容器路径:

1. /root/ascend/log/vllm_${id}

2. /home/ma-user/AscendCloud/extra-info/

  1. 登录容器
    kubectl exec -it ${Pod名称} -- bash
  2. 查看日志。
    1. 查看运行日志
      cd /root/ascend/log/vllm_${id}/run/plog
    2. 查看debug日志
      cd /root/ascend/log/vllm_${id}/debug/plog
    3. 查看算子报错日志
      cd  /home/ma-user/AscendCloud/extra-info/

ray log

vllm多机启动使用ray管理,ray组件产生的运行日志

容器路径:/tmp/ray

  1. 登录容器。
    kubectl exec -it ${Pod名称} -- bash
  2. 进入目录。
    cd /tmp/ray
当前推理服务进程日志、NPU CANN plog和ray日志默认输出到容器中,使用生成DeepSeek部署定义yaml生成的yaml文件里默认将容器中的日志路径挂载到主机的”/var/log”目录下对应子目录中,基于可靠性考虑如果您希望通过额外的数据盘来存储相关日志,可以通过修改该yaml文件,替换这个挂载路径。注意:需要修改每个role下的挂载声明,详见基于KubeInfer的部署yaml文件说明,参考如下:
containers:
  - ...
    volumeMounts:
      ...
      - mountPath: /home/ma-user/AscendCloud/extra-info/  # 容器中算子报错日志目录
        name: extra-info-pv
      - mountPath: /home/ma-user/AscendCloud/logs/        # 容器中vllm日志目录
        name: vllm-log-pv
      - mountPath: /root/ascend/log/                      # 容器中NPU CANN plog日志目录
        name: plog-pv
      - mountPath: /tmp/ray/                              # 容器中ray日志目录
        name: ray-log-pv
...
volumes:
  ...
  - hostPath:
      path: /var/log/extra_info/                          # 挂载到主机的目录,您需要修改这个值
      type: DirectoryOrCreate
    name: extra-info-pv
  - hostPath:
      path: /var/log/vllm_log/                            # 挂载到主机的目录,您需要修改这个值
      type: DirectoryOrCreate
    name: vllm-log-pv
  - hostPath:
      path: /var/log/ascend_plog/                         # 挂载到主机的目录,您需要修改这个值
      type: DirectoryOrCreate
    name: plog-pv
  - hostPath:
      path: /var/log/ray_log/                             # 挂载到主机的目录,您需要修改这个值
      type: DirectoryOrCreate
    name: ray-log-pv
  • 组件运行过程中会不断产生日志,因此需要您及时关注您的存储空间使用情况,防止因存储空间用满而带来的业务影响。
  • 对于直接挂载到主机上的日志,建议通过logroate配置日志滚动机制,具体参考logrotate(8) - Linux man page
  • 除vllm_log外,其他组件日志不能挂载到共享存储上,否则无法准确区分不同节点的日志。其中对于ray的日志禁止挂载在共享存储上,否则会导致推理实例启动失败。
当前推理服务进程默认方式生成的日志无日志滚动能力,您可以参考表2通过配置”--vllm-log-path”值为已挂载的外部存储路径实现对Pod内日志的统一采集,当前日志采集使用concurrent-log-handler组件实现,Pod内多个进程统一采集至一个文件中,日志默认按100M一个文件进行滚动,默认保存10个文件。

默认每个实例规划一个存储目录,当实例重启后会创建新的目录存储日志,因此历史的日志不再变化,即会残留在存储上,需要您及时关注并清理。

【推荐】对于Lite Cluster场景支持通过云原生日志采集插件采集容器日志到LTS。对于Lite Server场景参考自建K8s应用日志接入LTS使用LTS的ICAgent组件将开源K8s容器、节点日志采集至LTS。日志采集到LTS后对于历史日志建议转储至OBS

相关文档