
# 中间件-Flink日志
Flink是一个大数据处理引擎的处理框架，是针对流进行的处理。它是Apache旗下的一个框架和分布式的处理引擎，用于对无界和有界的数据进行状态的计算。Flink的核心特点包括高吞吐、低延迟（每秒处理数百万个事件，毫秒级延迟），以及结果的准确性（Flink提供了时间事件（event-time）和处理事件（processing-time）语义）。
Flink 的系统日志通常包含了关于 Flink 运行时的各种信息，如任务执行情况、错误信息、资源使用情况等。
#### 采集方法
使用ICAgent采集日志，接入前请参考[安装ICAgent（区域内主机）](https://support.huaweicloud.com/usermanual-lts/lts_02_0013.html)完成ICAgent安装。然后再通过采集ECS-文本日志方式将日志上报至LTS服务，详细操作请参考[云主机ECS文本日志接入LTS](https://support.huaweicloud.com/usermanual-lts/lts_04_1031.html)。
#### Flink日志示例以及字段含义
系统日志示例：
```
2023-10-23 14:35:00,000 INFO  org.apache.flink.runtime.taskmanager.Task  - Source: Custom Source -> Map (1/1) (83529a6b73e4a3f7046f695a27f67f32) switched from RUNNING to FINISHED.  
2023-10-23 14:35:01,500 WARN  org.apache.flink.runtime.checkpoint.CheckpointCoordinator  - Checkpoint 1 for job 83529a6b73e4a3f7046f695a27f67f32 timed out after 60000 milliseconds. This indicates a problem with the job, as the checkpoints were not completed in time.  
2023-10-23 14:35:05,000 ERROR org.apache.flink.runtime.executiongraph.ExecutionGraph  - Job 83529a6b73e4a3f7046f695a27f67f32 failed.
```
表1Flink系统日志字段含义 
| 字段      | 说明                                                                                                                          | 示例                                                     |
|:---|:---|:---|
| 时间戳     | 该条日志的生成时间。                                                                                                                  | 2023-10-23 14:35:00,000                                |
| 日志级别    | 该条日志的重要性或紧急程度，常见的级别有INFO、WARN、ERROR等。                                                                                       | INFO                                                   |
| 日志来源    | 生成该条日志的组件或任务。                                                                                                               | org.apache.flink.runtime.taskmanager.Task              |
| 任务/作业信息 | 日志中可能包含任务或作业的相关信息，如任务名称、任务ID、作业ID等。在这个示例中，有任务名称 Source: Custom Source -\> Map (1/1) 和作业ID 83529a6b73e4a3f7046f695a27f67f32。 | -                                                      |
| 状态变化    | 记录任务或作业的状态变化。                                                                                                               | 如switched from RUNNING to FINISHED表示任务从运行状态切换到完成状态。    |
| 错误信息    | 如果日志级别为ERROR，则可能包含有关错误的详细信息。                                                                                                | 如 Job 83529a6b73e4a3f7046f695a27f67f32 failed. 表示作业失败。 |
   
#### 日志位置
1. 在YARN上运行的Flink 作业： Flink-on-YARN 模式的作业日志输出路径通常是 \*\*$HADOOP_HOME/logs/userlogs/\<APPLICATION_ID\>/\<CONTAINER_ID\>/\*\*。这里的 $HADOOP_HOME 是Hadoop的安装目录，\<APPLICATION_ID\>和\<CONTAINER_ID\> 是YARN分配给Flink作业的标识符。可以在yarn-site.xml配置文件中修改YARN的日志目录，通过\<property\>\<name\>yarn.nodemanager.log-dirs\</name\>\<value\>/your/custom/log/path\</value\>\</property\>来指定。
   
2. 独立部署的Flink集群：如果在独立模式下部署Flink集群，那么日志文件通常位于Flink安装目录下的log或logs文件夹中。如果Flink安装在/usr/local/flink，则日志文件可能位于/usr/local/flink/log 或 /usr/local/flink/logs。
 
