本文为您介绍如何配置作业日志输出到对象存储OSS和日志服务SLS,以及如何查看作业运行日志。

背景信息

在作业正常运行状态下,如果您需要查看当前作业运行日志,您可以单击Flink UI进行查看;如果出现以下情况,则需要您配置作业运行日志到外部存储(OSS或SLS)后,启动作业:
  • 因为Job Manager无法正常启动导致Flink UI无法打开,需要查看Job Manager日志定位问题。
  • 您需要查看、搜索和分析作业历史运行日志(系统默认保留最近5 MB大小的运行日志)。

查看作业运行日志

  1. 登录实时计算控制台
  2. Flink全托管页签,单击对应工作空间操作列下的开发控制台
  3. 在左侧导航栏上,单击作业管理 > 作业列表
  4. 单击您创建的目标作业名称。
    说明 请选择作业期望状态当前状态都为RUNNING的作业。
  5. 单击Flink UI
  6. 在左侧导航栏,单击Job Manager
  7. Logs页签,查看作业运行日志。

配置单个作业(新建作业)日志输出到OSS

  1. 登录实时计算控制台
  2. 在左侧导航栏上,单击作业管理 > 创建作业
  3. 高级页签,填写作业基本信息行为配置等信息,详情请参见提交
  4. 日志模板选择为OSS
  5. 在页面右下角,单击创建
  6. 在左侧导航栏上,单击作业管理 > 作业列表
  7. 单击目标作业名称。
  8. 在作业详情页面,单击启动
  9. 在OSS控制台,查看日志信息。
    1. 登录OSS管理控制台
    2. 在左侧导航栏,单击Bucket列表。
    3. 单击您开通Flink全托管服务时,配置的Bucket名称。
    4. 单击文件管理
    5. 在对应目录,查看日志信息。日志目录
      文件夹 说明
      artifacts 上传的JAR包会被存储到该目录。
      flink-jobs Flink作业的Checkpoint会被存储到该目录。
      flink-savepoints Flink全托管开发控制台上,单击Savepoint,会触发Savepoint操作,最终的Savepoint文件会被存储到该目录。
      logs 如果您作业的日志模板选择了OSS,则您的作业的日志会被存储到该目录。
      说明 logs目录下作业存储路径为:logs/${工作空间ID}/${作业ID}/${实例ID}。您可以通过该目录结构找到相应作业的JM(Job Manager)和TM(Task Manager)日志。

配置单个作业(已有作业)日志输出到OSS

  1. 登录实时计算控制台
  2. 在左侧导航栏上,单击作业管理 > 作业列表
  3. 单击目标作业名称。
  4. 在作业详情页面,单击配置作业
  5. 高级页签,日志模板选择为OSS
  6. 单击保存
  7. 在左侧导航栏上,单击作业管理 > 作业列表
  8. 单击目标作业名称。
  9. 在作业详情页面,单击启动
  10. 在对象存储OSS控制台,查看日志信息。
    1. 登录OSS管理控制台
    2. 在导航栏,单击Bucket列表。
    3. 单击您开通Flink全托管服务时,配置的Bucket名称。
    4. 单击文件管理
    5. 在对应目录,查看日志信息。日志目录
      文件夹 说明
      artifacts 上传的JAR包会被存储到该目录。
      flink-jobs Flink作业的Checkpoint会被存储到该目录。
      flink-savepoints Flink全托管开发控制台上,单击Savepoint,会触发Savepoint操作,最终的Savepoint文件会被存储到该目录。
      logs 如果您作业的日志模板选择了OSS,则您的作业的日志会被存储到该目录。
      说明 logs目录下作业存储路径为:logs/${工作空间ID}/${作业ID}/${实例ID}。您可以通过该目录结构找到相应作业的JM(Job Manager)和TM(Task Manager)日志。

配置工作空间下所有作业日志输出到OSS

您可以通过配置作业模板的方式,配置工作空间下所有作业日志默认输出到OSS。

  1. 登录实时计算控制台
  2. 在左侧导航栏上,单击系统管理 > 作业模板
  3. 高级页签,日志模板选择为OSS
  4. 单击保存更改
    说明 配置作业模板后,后续该工作空间下创建的所有作业的日志都会被存储到OSS。

配置单个作业(新建作业)日志输出到SLS

  1. 登录实时计算控制台
  2. 在左侧导航栏上,单击作业管理 > 创建作业
  3. 高级页签,填写作业基本信息行为配置等信息,详情请参见提交
  4. 日志模板选择为自定义
  5. 将以下文本粘贴到自定义模板的输入框中。
    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
    strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
      <Appenders> 
        <Appender name="StdOut" type="Console"> 
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout"/> 
        </Appender>  
        <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout"/>  
          <Policies> 
            <SizeBasedTriggeringPolicy size="5 MB"/> 
          </Policies>  
          <DefaultRolloverStrategy max="1"/> 
        </Appender>  
        <Appender name="SLS" type="SLS">
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout"/>  
    
          <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
          <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
          <Property name="project">YOUR-SLS-PROJECT</Property>  
          <Property name="logStore">YOUR-SLS-LOGSTORE</Property> 
          <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> 
          <Property name="accessKeyId">YOUR-SLS-ACCESSKEYID</Property> 
          <Property name="accessKeySecret">YOUR-SLS-ACCESSKEYSECRET</Property> 
          <Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property> 
          <Property name="flushIntervalSeconds">10</Property>
          <Property name="flushIntervalEventCount">100</Property>
        </Appender>
      </Appenders>  
      <Loggers> 
        <Logger level="INFO" name="org.apache.hadoop"/>  
        <Logger level="INFO" name="org.apache.kafka"/>  
        <Logger level="INFO" name="org.apache.zookeeper"/>  
        <Logger level="INFO" name="akka"/>  
        <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
        <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
        {%- for name, level in userConfiguredLoggers -%} 
          <Logger level="{{ level }}" name="{{ name }}"/> 
        {%- endfor -%}
        <Root level="{{ rootLoggerLogLevel }}"> 
          <AppenderRef ref="StdOut"/>
          <AppenderRef ref="RollingFile"/>  
          <AppenderRef ref="SLS"/> 
        </Root>
      </Loggers> 
    </Configuration>
  6. 自定义模板输入框中,修改以下5个参数。
    文件夹 说明
    YOUR-SLS-PROJECT 替换成您SLS的Project名称。
    YOUR-SLS-LOGSTORE 替换成您SLS的Logstore名称。
    YOUR-SLS-ENDPOINT 替换成您SLS所在地域的Endpoint,详情请参见服务入口
    YOUR-SLS-ACCESSKEYID 替换成您开通Flink全托管服务账号的AccessKey ID
    YOUR-SLS-ACCESSKEYSECRET 替换成您开通Flink全托管服务账号的AccessKey Secret
    说明
    • 请确保您所使用的AccessKey IDAccessKey Secret是您开通Flink全托管所使用账号下管理的密钥对。
    • 请确保您开通Flink全托管服务所使用的账号,有读写该SLS项目的权限。
  7. 在页面右下角,单击创建
  8. 在左侧导航栏上,单击作业管理 > 作业列表
  9. 单击目标作业名称。
  10. 在作业详情页面,单击启动

配置单个作业(已有作业)日志输出到SLS

  1. 登录实时计算控制台
  2. 在左侧导航栏上,单击作业管理 > 作业列表
  3. 单击目标作业名称。
  4. 在作业详情页面,单击配置作业
  5. 高级页签,日志模板选择为自定义模板
  6. 将以下文本粘贴到自定义模板的输入框中。
    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
    strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
      <Appenders> 
        <Appender name="StdOut" type="Console"> 
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout"/> 
        </Appender>  
        <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout"/>  
          <Policies> 
            <SizeBasedTriggeringPolicy size="5 MB"/> 
          </Policies>  
          <DefaultRolloverStrategy max="1"/> 
        </Appender>  
        <Appender name="SLS" type="SLS">
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout"/>  
    
          <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
          <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
          <Property name="project">YOUR-SLS-PROJECT</Property>  
          <Property name="logStore">YOUR-SLS-LOGSTORE</Property> 
          <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> 
          <Property name="accessKeyId">YOUR-SLS-ACCESSKEYID</Property> 
          <Property name="accessKeySecret">YOUR-SLS-ACCESSKEYSECRET</Property> 
          <Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property> 
          <Property name="flushIntervalSeconds">10</Property>
          <Property name="flushIntervalEventCount">100</Property>
        </Appender>
      </Appenders>  
      <Loggers> 
        <Logger level="INFO" name="org.apache.hadoop"/>  
        <Logger level="INFO" name="org.apache.kafka"/>  
        <Logger level="INFO" name="org.apache.zookeeper"/>  
        <Logger level="INFO" name="akka"/>  
        <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
        <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
        {%- for name, level in userConfiguredLoggers -%} 
          <Logger level="{{ level }}" name="{{ name }}"/> 
        {%- endfor -%}
        <Root level="{{ rootLoggerLogLevel }}"> 
          <AppenderRef ref="StdOut"/>
          <AppenderRef ref="RollingFile"/>  
          <AppenderRef ref="SLS"/> 
        </Root>
      </Loggers> 
    </Configuration>
  7. 自定义模板输入框中,修改以下5个参数。
    文件夹 说明
    YOUR-SLS-PROJECT 替换成您SLS的Project名称。
    YOUR-SLS-LOGSTORE 替换成您SLS的Logstore名称。
    YOUR-SLS-ENDPOINT 替换成您SLS所在地域的Endpoint,详情请参见服务入口
    YOUR-SLS-ACCESSKEYID 替换成您开通Flink全托管服务账号的AccessKey ID
    YOUR-SLS-ACCESSKEYSECRET 替换成您开通Flink全托管服务账号的AccessKey Secret
    说明
    • 请确保您所使用的AccessKey IDAccessKey Secret是您开通Flink全托管所使用账号下管理的密钥对。
    • 请确保您开通Flink全托管服务所使用的账号,有读写该SLS项目的权限。
  8. 单击保存
  9. 在左侧导航栏上,单击作业管理 > 作业列表
  10. 单击目标作业名称。
  11. 在作业详情页面,单击启动

配置工作空间下所有作业日志输出到SLS

您可以通过配置作业模板的方式,配置工作空间下所有作业日志默认输出到SLS。

  1. 登录实时计算控制台
  2. 在左侧导航栏,单击系统管理 > 作业模板
  3. 高级页签,日志模板选择为自定义模板
  4. 将以下文本粘贴到自定义模板的输入框中。
    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration xmlns="http://logging.apache.org/log4j/2.0/config" 
    strict="true" packages="com.ververica.platform.logging.appender" status="WARN">  
      <Appenders> 
        <Appender name="StdOut" type="Console"> 
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout"/> 
        </Appender>  
        <Appender name="RollingFile" type="RollingFile" fileName="${sys:log.file}" filePattern="${sys:log.file}.%i"> 
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout"/>  
          <Policies> 
            <SizeBasedTriggeringPolicy size="5 MB"/> 
          </Policies>  
          <DefaultRolloverStrategy max="1"/> 
        </Appender>  
        <Appender name="SLS" type="SLS">
          <Layout pattern="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT+8} %-5p %-60c %x - %m%n" type="PatternLayout"/>  
    
          <!-- The final effective log path is: ${baseUri}/logs/${namespace}/${deploymentId}/{jobId}/ -->
          <Property name="namespace">{{ namespace }}</Property> <!-- Do not modify this line -->
          <Property name="project">YOUR-SLS-PROJECT</Property>  
          <Property name="logStore">YOUR-SLS-LOGSTORE</Property> 
          <Property name="endpoint">YOUR-SLS-ENDPOINT</Property> 
          <Property name="accessKeyId">YOUR-SLS-ACCESSKEYID</Property> 
          <Property name="accessKeySecret">YOUR-SLS-ACCESSKEYSECRET</Property> 
          <Property name="topic">{{ namespace }}:{{ deploymentId }}:{{ jobId }}</Property> 
          <Property name="flushIntervalSeconds">10</Property>
          <Property name="flushIntervalEventCount">100</Property>
        </Appender>
      </Appenders>  
      <Loggers> 
        <Logger level="INFO" name="org.apache.hadoop"/>  
        <Logger level="INFO" name="org.apache.kafka"/>  
        <Logger level="INFO" name="org.apache.zookeeper"/>  
        <Logger level="INFO" name="akka"/>  
        <Logger level="ERROR" name="org.jboss.netty.channel.DefaultChannelPipeline"/>  
        <Logger level="OFF" name="org.apache.flink.runtime.rest.handler.job.JobDetailsHandler"/> 
        {%- for name, level in userConfiguredLoggers -%} 
          <Logger level="{{ level }}" name="{{ name }}"/> 
        {%- endfor -%}
        <Root level="{{ rootLoggerLogLevel }}"> 
          <AppenderRef ref="StdOut"/>
          <AppenderRef ref="RollingFile"/>  
          <AppenderRef ref="SLS"/> 
        </Root>
      </Loggers> 
    </Configuration>
  5. 自定义模板输入框中,修改以下5个参数。
    文件夹 说明
    YOUR-SLS-PROJECT 替换成您SLS的Project名称。
    YOUR-SLS-LOGSTORE 替换成您SLS的Logstore名称。
    YOUR-SLS-ENDPOINT 替换成您SLS所在地域的Endpoint,详情请参见服务入口
    YOUR-SLS-ACCESSKEYID 替换成您开通Flink全托管服务账号的AccessKey ID
    YOUR-SLS-ACCESSKEYSECRET 替换成您开通Flink全托管服务账号的AccessKey Secret
    说明
    • 请确保您所使用的AccessKey IDAccessKey Secret是您开通Flink全托管所使用账号下管理的密钥对。
    • 请确保您开通Flink全托管服务所使用的账号,有读写该SLS项目的权限。
  6. 单击保存更改
    说明 配置作业模板后,后续该工作空间下创建的所有作业的日志都会被存储到您配置的SLS项目下的Logstore。