本文为您介绍如何配置作业日志输出到对象存储OSS和日志服务SLS,以及如何查看作业运行日志。
背景信息
在作业正常运行状态下,如果您需要查看当前作业运行日志,您可以单击Flink UI进行查看;如果出现以下情况,则需要您配置作业运行日志到外部存储(OSS或SLS)后,启动作业:
- 因为Job Manager无法正常启动导致Flink UI无法打开,需要查看Job Manager日志定位问题。
- 您需要查看、搜索和分析作业历史运行日志(系统默认保留最近5 MB大小的运行日志)。
查看作业运行日志
- 登录实时计算控制台。
- 在Flink半托管/ACK页签,单击对应工作空间操作列下的控制台。
- 在左侧导航栏上,单击作业管理 > 作业列表。
- 单击您创建的目标作业名称。说明 请选择作业期望状态和当前状态都为RUNNING的作业。
- 单击Flink UI。
- 在左侧导航栏,单击Job Manager。
- 在Logs页签,查看作业运行日志。
配置单个作业(新建作业)日志输出到OSS
- 登录实时计算控制台。
- 在左侧导航栏上,单击作业管理 > 创建作业。
- 在高级页签,填写作业基本信息、行为和配置等信息,详情请参见提交。
- 日志模板选择为OSS。
- 在页面右下角,单击创建。
- 在左侧导航栏上,单击作业管理 > 作业列表。
- 单击目标作业名称。
- 在作业详情页面,单击启动。
- 在OSS控制台,查看日志信息。
- 登录OSS管理控制台。
- 在左侧导航栏,单击Bucket列表。
- 单击您开通Flink全托管服务时,配置的Bucket名称。
- 单击文件管理。
- 在对应目录,查看日志信息。
文件夹 说明 artifacts 上传的JAR包会被存储到该目录。 flink-jobs Flink作业的Checkpoint会被存储到该目录。 flink-savepoints 在Flink半托管/ACK开发控制台上,单击Savepoint,会触发Savepoint操作,最终的Savepoint文件会被存储到该目录。 logs 如果您作业的日志模板选择了OSS,则您的作业的日志会被存储到该目录。 说明 logs目录下作业存储路径为:logs/${工作空间ID}/${作业ID}/${实例ID}。您可以通过该目录结构找到相应作业的JM(Job Manager)和TM(Task Manager)日志。
配置单个作业(已有作业)日志输出到OSS
- 登录实时计算控制台。
- 在左侧导航栏上,单击作业管理 > 作业列表。
- 单击目标作业名称。
- 在作业详情页面,单击配置作业。
- 在高级页签,日志模板选择为OSS。
- 单击Save Changes。
- 在左侧导航栏上,单击作业管理 > 作业列表。
- 单击目标作业名称。
- 在作业详情页面,单击启动。
- 在对象存储OSS控制台,查看日志信息。
- 登录OSS管理控制台。
- 在导航栏,单击Bucket列表。
- 单击您开通Flink半托管/ACK服务时,配置的Bucket名称。
- 单击文件管理。
- 在对应目录,查看日志信息。
文件夹 说明 artifacts 上传的JAR包会被存储到该目录。 flink-jobs Flink作业的Checkpoint会被存储到该目录。 flink-savepoints 在Flink半托管/ACK开发控制台上,单击Savepoint,会触发Savepoint操作,最终的Savepoint文件会被存储到该目录。 logs 如果您作业的日志模板选择了OSS,则您的作业的日志会被存储到该目录。 说明 logs目录下作业存储路径为:logs/${工作空间ID}/${作业ID}/${实例ID}。您可以通过该目录结构找到相应作业的JM(Job Manager)和TM(Task Manager)日志。
配置工作空间下所有作业日志输出到OSS
您可以通过配置作业模板的方式,配置工作空间下所有作业日志默认输出到OSS。
- 登录实时计算控制台。
- 在左侧导航栏上,单击系统管理 > 作业模板。
- 在高级页签,日志模板选择为OSS。
- 单击保存更改。说明 配置作业模板后,后续该工作空间下创建的所有作业的日志都会被存储到OSS。
配置单个作业(新建作业)日志输出到SLS
- 登录实时计算控制台。
- 在左侧导航栏上,单击作业管理 > 创建作业。
- 在高级页签,填写作业基本信息、行为和配置等信息,详情请参见提交。
- 日志模板选择为自定义。
- 将以下文本粘贴到自定义模板的输入框中。
<?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个参数。
文件夹 说明 YOUR-SLS-PROJECT 替换成您SLS的Project名称。 YOUR-SLS-LOGSTORE 替换成您SLS的Logstore名称。 YOUR-SLS-ENDPOINT 替换成您SLS所在地域的Endpoint,详情请参见服务入口。 YOUR-SLS-ACCESSKEYID 替换成您开通Flink半托管/ACK服务账号的AccessKey ID。 YOUR-SLS-ACCESSKEYSECRET 替换成您开通Flink半托管/ACK服务账号的AccessKey Secret。 说明- 请确保您所使用的AccessKey ID和AccessKey Secret是您开通Flink半托管/ACK所使用账号下管理的密钥对。
- 请确保您开通Flink半托管/ACK服务所使用的账号,有读写该SLS项目的权限。
- 在页面右下角,单击创建。
- 在左侧导航栏上,单击作业管理 > 作业列表。
- 单击目标作业名称。
- 在作业详情页面,单击启动。
配置单个作业(已有作业)日志输出到SLS
- 登录实时计算控制台。
- 在左侧导航栏上,单击作业管理 > 作业列表。
- 单击目标作业名称。
- 在作业详情页面,单击配置作业。
- 在高级页签,日志模板选择为自定义模板。
- 将以下文本粘贴到自定义模板的输入框中。
<?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个参数。
文件夹 说明 YOUR-SLS-PROJECT 替换成您SLS的Project名称。 YOUR-SLS-LOGSTORE 替换成您SLS的Logstore名称。 YOUR-SLS-ENDPOINT 替换成您SLS所在地域的Endpoint,详情请参见服务入口。 YOUR-SLS-ACCESSKEYID 替换成您开通Flink半托管/ACK服务账号的AccessKey ID。 YOUR-SLS-ACCESSKEYSECRET 替换成您开通Flink半托管/ACK服务账号的AccessKey Secret。 说明- 请确保您所使用的AccessKey ID和AccessKey Secret是您开通Flink半托管/ACK所使用账号下管理的密钥对。
- 请确保您开通Flink半托管/ACK服务所使用的账号,有读写该SLS项目的权限。
- 单击Save Changes。
- 在左侧导航栏上,单击作业管理 > 作业列表。
- 单击目标作业名称。
- 在作业详情页面,单击启动。
配置工作空间下所有作业日志输出到SLS
您可以通过配置作业模板的方式,配置工作空间下所有作业日志默认输出到SLS。
- 登录实时计算控制台。
- 在左侧导航栏,单击系统管理 > 作业模板
- 在高级页签,日志模板选择为自定义模板。
- 将以下文本粘贴到自定义模板的输入框中。
<?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个参数。
文件夹 说明 YOUR-SLS-PROJECT 替换成您SLS的Project名称。 YOUR-SLS-LOGSTORE 替换成您SLS的Logstore名称。 YOUR-SLS-ENDPOINT 替换成您SLS所在地域的Endpoint,详情请参见服务入口。 YOUR-SLS-ACCESSKEYID 替换成您开通Flink半托管/ACK服务账号的AccessKey ID。 YOUR-SLS-ACCESSKEYSECRET 替换成您开通Flink半托管/ACK服务账号的AccessKey Secret。 说明- 请确保您所使用的AccessKey ID和AccessKey Secret是您开通Flink半托管/ACK所使用账号下管理的密钥对。
- 请确保您开通Flink半托管/ACK服务所使用的账号,有读写该SLS项目的权限。
- 单击保存更改。说明 配置作业模板后,后续该工作空间下创建的所有作业的日志都会被存储到您配置的SLS项目下的Logstore。
在文档使用中是否遇到以下问题
更多建议
匿名提交