您可以将 Flink 项目下的作业日志一键归档输出到火山引擎日志服务 TLS,使用 TLS 强大的检索、SQL 分析与告警能力提升日志使用体验,也可以按照任务维度配置日志输出到 TLS。本文介绍如何配置 Flink 作业日志输出到 TLS。
全局日志投递以项目(工作空间)为管理粒度,依托服务角色(Service Role)实现身份鉴权,无需人工维护长期密钥。功能启用后,Flink 将自动创建并维护日志投递依赖的 TLS 项目、日志主题、索引及分发任务。系统支持三类日志投递:启动日志、运行事件、作业运行日志。
FlinkDeveloperAccess 。在编辑页面开启投递到 TLS 开关,并根据需求选择日志投递类型。
投递日志分为启动日志、运行事件、运行日志三类。三类日志将分别输出至独立 TLS 日志主题;日志归档后默认自动创建索引,支持直接检索与 SQL 分析。对应关系如下:
投递类型 | 日志内容 | 对应 TLS 日志主题 |
|---|---|---|
启动日志 | 作业提交、启动阶段产生的客户端日志,包含操作用户、角色等信息,用于排查作业启动失败、参数错误等问题。 | flink-client-log-topic |
运行事件 | 作业生命周期事件日志,如启停、Checkpoint、Failover 等关键事件,用于审计与运行态追踪。 | flink-event-log-topic |
作业运行日志 | 作业运行期 JobManager / TaskManager 输出的运行日志,用于定位运行时异常与业务问题。 | flink-job-log-topic |
配置完成后,点击保存。日志投递到 TLS 后,可以在日志服务页面查看日志。
说明
flink-project-{账号ID}-{region}格式自动生成,示例:flink-project-2101000000-cn-beijing。project字段区分各项目日志来源。日志各字段说明请参考日志字段说明。默认字段如下:
字段名称 | 说明 |
|---|---|
time | 日志(事件)产生时间。 |
level | 日志级别。 |
message | 日志内容(运行事件为事件内容)。 |
project | 日志来源的 Flink 项目 ID,用于区分共用 TLS 项目的不同 Flink 项目。 |
application | 作业 / 应用标识。 |
deployment | 作业上线后的部署 ID。 |
accountId | 账号 ID。 |
role | 操作角色。仅启动日志 |
user | 操作用户。仅启动日志 |
默认字段如下:
字段名称 | 说明 |
|---|---|
level | 日志级别。 |
logger | 打印日志的类名 / Logger 名称。 |
message | 日志内容。 |
time | 日志打印时间。 |
namespace | 资源池名称。 |
path / pod_name | 日志所在的Pod 名称与采集路径,用于区分多个 JobManager、TaskManager 实例。 |
tag__accountId | 账号 ID。 |
tag__deployment | 作业部署 ID。 |
tag__project | 日志来源的 Flink 项目 ID。 |
tag__queue | 作业所在队列。 |
tag__role | 角色类型,区分 JobManager / TaskManager。 |
tag__engine | 引擎标识。 |
tag__user | 所属用户。 |
将单任务日志配置输出到 TLS 。使用 TLS 强大的检索告警能力提升日志使用体验。
日志配置入口。
开启 TLS 归档。
配置根日志级别。
配置类日志级别。
配置 TLS 自定义参数。
参数名称 | 默认值 | 说明 | |
|---|---|---|---|
接入信息 | topicId | 必填,无默认值 | TLS 日志主题 ID,在 TLS 日志项目页面查看。 |
region | 必填,无默认值 | 服务所在 region。例如: cn-beijing/cn-shanghai/cn-guangzhou 等。 | |
endpoint | 必填,无默认值 | 必填,TLS 日志项目地址,在火山同 region 内可以使用私网地址,跨 region 写入需要使用公网地址,在 TLS 日志项目页面查看。 | |
accessKeyId | 必填,无默认值 | TLS 服务归属账号的 AccessKey ID。 | |
accessKeySecret | 必填,无默认值 | TLS 服务归属账号的 AccessKey Secret。 | |
字段配置 | timeZone | Asia/Shanghai | 时间字段时区。 |
timeFormat | yyyy-MM-dd HH:mm:ss,SSS | 时间字段格式。 | |
layout.type | PatternLayout | 日志输出格式,需配合 | |
layout.pattern | %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n | 日志输出格式,需配合 | |
fields.{自定义字段}.type | 无 | 自定义字段,可以用于增加一些固定 key-value 来区分不同的 Flink 作业。 | |
fields.{自定义字段}.name | 无 | ||
fields.{自定义字段}.value | 无 | ||
TLS 写入参数配置 | totalSizeInBytes | 104857600 | 单个 producer 实例能缓存的日志大小上限,默认为 100MB。 |
maxBlockMs | 0 | 如果 producer 可用空间不足,调用者在 send 方法上的最大阻塞时间,默认为 0 秒。为了不阻塞打印日志的线程,强烈建议将该值设置成 0。 | |
maxThreadCount | 处理器个数 | 执行日志发送任务的线程池大小,默认为可用处理器个数。 | |
maxBatchSizeBytes | 524288 | 当一个 ProducerBatch 中缓存的日志大小大于等于 maxBatchSizeBytes 时,该 batch 将被发送,默认为 512 KB,最大可设置成 5MB。 | |
maxBatchCount | 4096 | 当一个 ProducerBatch 中缓存的日志条数大于等于 maxBatchCount 时,该 batch 将被发送,默认为 4096,最大可设置成 40960。 | |
lingerMs | 2000 | 一个 ProducerBatch 从创建到可发送的逗留时间,默认为 2 秒,最小可设置成 100 毫秒。 | |
retryCount | 10 | 如果某个 ProducerBatch 首次发送失败,能够对其重试的次数,默认为 10 次。 | |
maxReservedAttempts | 3 | 该参数越大能让您追溯更多的信息,但同时也会消耗更多的内存。 |
Flink 独立任务日志归档到 TLS 后有以下默认字段。
字段名称 | 说明 |
|---|---|
| 日志级别。 |
| 日志打印语句的代码位置。 |
| 日志内容。 |
| 日志异常信息。 |
| 线程名称。 |
| 日志打印时间。 |
| 自定义日志格式。 |
| 日志采集侧 IP 地址。 |
| TLS 接受日志时间。 |
| Flink 任务名称。 |
| Flink 任务上线后的唯一 ID。 |
| Flink 任务运行中的实例 ID,作业每次启动会自动生成一个 ID。 |
| 枚举类型:jobManager/taskManager |
| 日志所在 Pod 名称,用于区分多个 JobManager、TaskManager 实例。 |
filter.threshold.type: ThresholdFilter filter.threshold.level: WARN
fields.env.type: TLSField # 固定用法 fields.env.name: env # TLS 字段名 fields.env.value: test/pre/online # 给不同的任务配置不同的 value 来区分环境