日志#

本节向您介绍 openYuanrong 的日志系统。

主机部署环境上的日志#

主节点及从节点默认日志路径及文件如下,每次部署会使用时间戳生成新的日志目录例如 20250520091445,其中 log 目录存放组件及函数日志。您也可以参考部署参数表自定义日志路径和日志级别。

主节点:

/tmp/yr_sessions
├── 20250520091445
├── 20250520091612
└── latest
    ├── deploy_std.log
    └── log

从节点:

/tmp/yr_sessions
├── 20250520091445
├── 20250520091612
└── latest
    ├── deploy_std.log
    └── {node_id}
        └── log

部署日志#

部署日志文件默认路径为 /tmp/yr_sessions/latest/deploy_std.log,您可通过该日志看到部署参数及部署过程,定位部署问题。

函数日志#

函数日志在 log 目录下,函数标准输出默认合并为一个文件 {node_id}-user_func_std.log。当您在部署时配置了 --enable_separated_redirect_runtime_std=true 选项,每次函数执行的标准输出将分别生成一个 runtime-{runtime_id}.out 文件。

函数进程中也包含了部分平台逻辑比如加载代码,输出的日志为 job-{job_id}-runtime-{runtime_id}.logruntime-{runtime_id}.log。在函数实例未正常拉起时,可查看该日志定位是否存在函数包路径等配置错误问题。

组件日志#

组件日志在 log 目录下:

  • function master 组件:包含 {node_id}-function_master.log{node_id}-function_master_std.log 文件,仅在主节点存在。

  • function scheduler 组件:包含 {node_id}-scheduler_libruntime.logfaasscheduler.so-run.{timestamp}.log{node_id}-scheduler_std.log 文件,仅在主节点存在。

  • frontend 组件:包含 {node_id}-faas_frontend_libruntime.logfaasfrontend.so-run.{timestamp}.log{node_id}-faas_frontend_std.log 文件,仅在主节点存在。

  • meta service 组件:包含 meta-service-run.{timestamp}.log{node_id}-metaservice_std.log 文件,仅在主节点存在。

  • dashboard 组件:包含 dashboard-run.{timestamp}.log{node_id}-dashboard_std.log 文件,仅在主节点存在。

  • function proxy 组件:包含 {node_id}-function_proxy.log{node_id}-function_proxy_std.log 文件。

  • function agent 与 runtime manager 组件:默认共进程部署,包含 {node_id}-function_agent.log 文件。

  • data worker 组件:worker.{INFO|WARNING}.logds_worker_std.log 文件主从节点都包含。ds_master_std.logmaster/worker.{INFO|WARNING}.log 文件仅在主节点存在。

  • collector 组件:包含 {node_id}-collector_std.log 文件。

  • etcd 组件:包含 etcd-run.log 文件,仅在主节点存在。

K8s 部署环境上的日志#

openYuanrong 组件及函数日志默认挂载到宿主机,其中函数系统挂载路径为 /var/paas/sys/log/cff/default数据系统挂载路径为 /home/sn/datasystem/logs

函数系统日志:

/var/paas/sys/log/cff/default
├── componentlogs
├── processrouters
│   └── stdlogs
└── servicelogs

数据系统日志:

/home/sn/datasystem
└── logs

挂载的函数日志#

函数日志默认路径为 /var/paas/sys/log/cff/default/processrouters/stdlogs。函数标准输出生成在资源池 Pod 名称对应目录下的 function-agent-{pools_id}-xxx/{node_id}-user-func_std.log 文件中。相同 Pod 中运行的函数,日志合并为一个文件。

函数进程中也包含了部分平台逻辑比如加载代码,输出的日志默认路径为 /var/paas/sys/log/cff/default/servicelogs。在相同资源池 Pod 名称目录下,每次函数运行分别生成名为 job-{job_id}-runtime-{runtime_id}.logruntime-{runtime_id}.log 的文件。在函数实例未正常拉起时,可查看该日志定位是否存在函数包路径等配置错误问题。

挂载的组件日志#

  • function scheduler 组件:包括 componentlogsservicelogs 下 Pod 名称为 function-agent-xxx-faasscheduler-xxx 子目录中的文件。

  • function manager 组件:包括 componentlogsservicelogs 下 Pod 名称为 function-agent-xxx-faasmanager-xxx 子目录中的文件。

  • frontend 组件:包括 componentlogsservicelogs 下 Pod 名称为 function-agent-xxx-faasfrontend-xxx 子目录中的文件。

  • function master 组件:包含 componentlogs 下 Pod 名称为 function-master-xxx 子目录中的文件。

  • meta service 组件:包含 componentlogs 下 Pod 名称为 meta-service-xxx 子目录中的文件。

  • IAM adaptor 组件:包含 componentlogs 下 Pod 名称为 iam-adaptor-xxx 子目录中的文件。

  • function proxy 组件:包含 componentlogs 下 Pod 名称为 function-proxy-xxx 子目录中的文件。

  • function agent 与 runtime manager 组件:共 Pod 部署。在 componentlogs 下的每个资源池 Pod 名称对应子目录 function-agent-{pools_id}-xxx 中,包含 {node_id}-function_agent.log{node_id}-runtime_manager.log 两个文件。

  • data worker 组件:数据系统组件,包含默认路径 /home/sn/datasystem/logsworker 子目录中的文件。

使用 openYuanrong 的日志记录器#

函数服务支持使用 openYuanrong 的日志记录器,您可以通过函数的上下文方法 context.getLogger() 打印日志,将获得和 openYuanrong 组件日志一样的输出格式,以 Java 函数服务为例,代码及日志输出如下。

package org.yuanrong.demo;

import org.yuanrong.services.runtime.Context;
import org.yuanrong.services.runtime.RuntimeLogger;
import com.google.gson.JsonObject;

public class Demo {
    // 函数执行入口,每次请求都会执行,其中intput参数及函数返回类型可自定义
    public String handler(JsonObject event, Context context) {
        RuntimeLogger log = context.getLogger();
        log.info("received request,event content:" + event);

        return event.toString();
    }

    // 函数初始化入口,函数实例启动时执行一次
    public void initializer(Context context) {
        RuntimeLogger log = context.getLogger();
        log.info("function instance initialization completed");
    }
}

假如请求 body 设置为 {“name”:“yuanrong”},主机部署时在默认日志文件 /tmp/yr_sessions/latest/log/runtime-{runtime_id}/user-log.log 中可见如下日志内容。

[16:41:35:820] | [INFO] | org.yuanrong.services.logger.UserFunctionLogger.info(UserFunctionLogger.java:68) | Thread-1 | userLog | function instance initialization completed
[16:41:35:820] | [INFO] | org.yuanrong.executor.FaaSHandler.faasInitHandler(FaaSHandler.java:288) | Thread-1 | userLog | faas init handler complete.
[16:41:35:827] | [INFO] | org.yuanrong.executor.FaaSHandler.execute(FaaSHandler.java:174) | Thread-2 | userLog | executing udf methods, current type: InvokeFunctionStateless
[16:41:35:828] | [INFO] | org.yuanrong.executor.FaaSHandler.faasCallHandler(FaaSHandler.java:300) | Thread-2 | userLog | faas call handler called.
[16:41:35:832] | [INFO] | org.yuanrong.services.logger.UserFunctionLogger.info(UserFunctionLogger.java:68) | Thread-2 | userLog | received request,event content:{"name":"yuanrong"}