本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用监控配置监控 Flink Kubernetes Operator 和 Flink 作业
监视配置支持您轻松地将 Flink 应用程序和 Operator 日志的日志存档设置为 S3 和/或 CloudWatch(可以任选其一,也可以都选择)。如此可将 FluentD Sidecar 添加到 JobManager 和 TaskManager Pod,而后将这些组件的日志转发到配置好的接收器。
注意
必须为 Flink Operator 和 Flink 任务(服务账户)设置服务账户的 IAM 角色,才能使用此功能,因为它需要与其他 Amazon Web Services 服务 进行交互。您必须按照 在上为亚马逊设置 Flink Kubernetes 运营商 EMR EKS,使用 IRSA 进行设置。
Flink 应用程序日志
您可以通过下列方式来定义此配置。
apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: name: basic-example spec: image:
FLINK IMAGE TAG
imagePullPolicy: Always flinkVersion: v1_17 flinkConfiguration: taskmanager.numberOfTaskSlots: "2" executionRoleArn:JOB EXECUTION ROLE
jobManager: resource: memory: "2048m" cpu: 1 taskManager: resource: memory: "2048m" cpu: 1 job: jarURI: local:///opt/flink/examples/streaming/StateMachineExample.jar monitoringConfiguration: s3MonitoringConfiguration: logUri:S3 BUCKET
cloudWatchMonitoringConfiguration: logGroupName:LOG GROUP NAME
logStreamNamePrefix:LOG GROUP STREAM PREFIX
sideCarResources: limits: cpuLimit: 500m memoryLimit: 250Mi containerLogRotationConfiguration: rotationSize: 2GB maxFilesToKeep: 10
配置选项如下。
s3MonitoringConfiguration
– 用来设置转发到 S3 的配置密钥logUri
(必需)– 用来存储日志的 S3 存储桶路径。上传日志后,S3 中的路径如下所示。
未启用日志轮换:
s3://${
logUri
}/${POD NAME
}/STDOUT or STDERR
.gz已启用日志轮换。您可以同时使用轮换文件和当前文件(不带日期戳的文件)。
s3://${
logUri
}/${POD NAME
}/STDOUT or STDERR
.gz以下格式是递增数字。
s3://${
logUri
}/${POD NAME
}/stdout_YYYYMMDD
_index.gz
使用此转发器需要以下 IAM 权限。
{ "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "
S3_BUCKET_URI
/*", "S3_BUCKET_URI
" ] }
cloudWatchMonitoringConfiguration
– 用来设置转发到 CloudWatch 的配置密钥。logGroupName
(必填项)– 要向其发送日志的 CloudWatch 日志组名称(如果日志组不存在,则会自动创建)。logStreamNamePrefix
(可选)– 要向其发送日志的日志流的名称。默认值是空字符串。格式如下所示:${logStreamNamePrefix}/${
POD NAME
}/STDOUT or STDERR
使用此转发器需要以下 IAM 权限。
{ "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:
REGION
:ACCOUNT-ID
:log-group:{YOUR_LOG_GROUP_NAME
}:*", "arn:aws:logs:REGION
:ACCOUNT-ID
:log-group:{YOUR_LOG_GROUP_NAME
}" ] }
sideCarResources
(可选)– 用于在启动的 Fluentbit Sidecar 容器上设置资源限制的配置密钥。memoryLimit
(可选)– 默认值为 512Mi。根据自身需求进行调整。cpuLimit
(可选)– 此选项没有默认值。根据自身需求进行调整。
containerLogRotationConfiguration
(可选)– 控制容器日志的轮换行为。该功能默认已启用。rotationSize
(必需)– 指定日志轮换的文件大小。可行值的范围从 2KB 到 2GB 不等。rotationSize 参数的数字单位部分以整数形式传递。由于不支持十进制值,您可以指定 1.5GB 的轮换大小,例如值 1500MB。默认值为 2GB。maxFilesToKeep
(必需)– 指定轮换后要在容器中保留的最大文件数。最小值为 1,最大值为 50。默认值为 10。
Flink Operator 日志
我们还可以使用 Helm 图表安装 values.yaml
文件中的以下选项,为 Operator 启用日志存档。您可以启用 S3 或 CloudWatch,亦可将两者同时启用。
monitoringConfiguration: s3MonitoringConfiguration: logUri: "
S3-BUCKET
" totalFileSize: "1G" uploadTimeout: "1m" cloudWatchMonitoringConfiguration: logGroupName: "flink-log-group" logStreamNamePrefix: "example-job-prefix-test-2" sideCarResources: limits: cpuLimit: 1 memoryLimit: 800Mi memoryBufferLimit: 700M
monitoringConfiguration
下的可用配置选项如下。
s3MonitoringConfiguration
– 设置此选项以存档到 S3。logUri
(必填项)– 用来存储日志的 S3 存储桶路径。以下是上传日志后 S3 存储桶路径的示例格式。
未启用日志轮换。
s3://${
logUri
}/${POD NAME
}/OPERATOR or WEBHOOK
/STDOUT or STDERR
.gz已启用日志轮换。您可以同时使用轮换文件和当前文件(不带日期戳的文件)。
s3://${
logUri
}/${POD NAME
}/OPERATOR or WEBHOOK
/STDOUT or STDERR
.gz以下格式索引是递增数字。
s3://${
logUri
}/${POD NAME
}/OPERATOR or WEBHOOK
/stdout_YYYYMMDD
_index.gz
cloudWatchMonitoringConfiguration
– 用来设置转发到 CloudWatch 的配置密钥。logGroupName
(必需)– 要向其发送日志的 CloudWatch 日志组的名称。如果日志组不存在,则会自动创建。logStreamNamePrefix
(可选)– 要向其发送日志的日志流的名称。默认值是空字符串。CloudWatch 中的格式如下:${logStreamNamePrefix}/${
POD NAME
}/STDOUT or STDERR
-
sideCarResources
(可选)– 用于在启动的 Fluentbit Sidecar 容器上设置资源限制的配置密钥。memoryLimit
(可选)– 内存限制。根据自身需求进行调整。默认值为 512Mi。cpuLimit
– CPU 限制。根据自身需求进行调整。无默认值。
containerLogRotationConfiguration
(可选)– 控制容器日志的轮换行为。该功能默认已启用。rotationSize
(必需)– 指定日志轮换的文件大小。可行值的范围从 2KB 到 2GB 不等。rotationSize 参数的数字单位部分以整数形式传递。由于不支持十进制值,您可以指定 1.5GB 的轮换大小,例如值 1500MB。默认值为 2GB。maxFilesToKeep
(必需)– 指定轮换后要在容器中保留的最大文件数。最小值为 1,最大值为 50。默认值为 10。