开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

请教各位大佬flink日志采集这块还有什么好的方式吗?

Flink集群使用kafka_appender收集flink产生的日志,但是现在实时运行的任务超过了三千个,运行的yarn-container有20万+。导致存储日志的kafka集群连接数过多,kafka集群压力有点大,请教各位大佬flink日志采集这块还有什么好的方式吗?

展开
收起
三分钟热度的鱼 2023-10-25 16:26:25 83 0
5 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    针对您提到的问题,有几种方式可以考虑来改善Flink日志采集的情况:

    1. 日志级别调整:首先,您可以检查Flink任务的日志级别设置。将日志级别调整为较低的级别(如WARN或ERROR),可以减少产生的日志量,从而减轻Kafka集群的压力。

    2. 日志滚动策略:可以通过调整Flink任务的日志滚动策略来控制日志文件的大小和数量。较小的日志文件可以更快地传输到Kafka,并减少连接数和网络流量。

    3. 批量发送:使用批量发送的方式将多条日志合并为一个消息进行发送,可以减少Kafka连接数和网络开销。您可以调整Flink的Kafka Appender配置,设置适当的批量大小和发送频率。

    4. 异步日志:考虑使用异步的方式进行日志收集和发送。例如,您可以使用异步的Kafka生产者,将日志缓冲并批量发送到Kafka,从而减少与Kafka的连接数。

    5. 日志分流:如果您的Flink任务产生的日志非常庞大,可以考虑将日志分流到多个Kafka集群中,以分散负载。您可以根据任务的特性或其他维度,将不同的任务日志发送到不同的Kafka集群。

    6. 日志压缩:对于产生大量日志的任务,您可以考虑启用Kafka的压缩功能,将日志进行压缩后再发送到Kafka,以减少网络传输和存储开销。

    除了上述方式,还可以考虑使用其他日志收集工具或技术来替代或补充Kafka。例如,您可以尝试使用Fluentd、Logstash等工具进行日志收集,并将日志发送到其他存储系统(如HDFS、Elasticsearch等)进行存储和分析。

    2023-10-26 09:48:48
    赞同 展开评论 打赏
  • 对于Flink的日志收集,除了使用Kafka Appender外,还有以下几种可能的方式:

    1. Logback Appender:Logback是Log4j的一个分支,它也提供了Appender功能,可以将日志输出到各种目标,如文件、控制台、Socket等。你可以使用Logback Appender将日志输出到Socket,然后由另一个进程从Socket读取日志并写入Kafka。

    2. Flink内置的日志系统:Flink内置了一个简单的日志系统,可以直接将日志输出到文件或者控制台。你可以配置Flink将日志输出到文件,然后使用Logstash或者类似的工具将日志从文件读取并写入Kafka。

    3. 使用Flink的Checkpoint机制:如果你的任务只需要在任务失败时才需要重放日志,那么你可以使用Flink的Checkpoint机制。Checkpoint会定期将任务的当前状态保存到磁盘,当任务恢复时,可以从最近的Checkpoint开始恢复。这样,你就可以减少需要收集的日志量。

    4. 使用专用的日志收集系统:有一些专门的日志收集系统,如EFK(Elasticsearch、Filebeat、Kibana)堆栈,它们可以提供更好的日志收集和分析能力。你可以使用Filebeat从Flink的日志目录中读取日志,然后使用Elasticsearch存储和检索日志,最后使用Kibana进行日志分析。

    2023-10-26 09:10:07
    赞同 展开评论 打赏
  • 如果你正在使用 Kafka 应用程序收集器(KafkaAppender)来收集 Flink 日志,并且你的日志数量非常大,导致 Kafka 集群的压力增大,你可以考虑使用以下几种方式来改善这种情况:

    1. 更改应用程序的名称前缀:默认情况下,每个应用程序都会在 Kafka 集群中生成一个主题,其名称是应用程序的唯一 ID。你可以更改应用程序的名称前缀,从而避免主题名称冲突。例如,你可以使用应用程序的主机组名作为前缀。
    2. 减少应用程序的日志数量:你可以通过调整应用程序的日志级别或过滤器来减少日志的数量。例如,你可以禁用无关的日志级别,或者只收集关键的日志。
    3. 更改日志收集频率:你可以通过改变日志收集频率来降低 Kafka 集群的压力。例如,你可以将日志收集间隔设置为较长的时间段,而不是每秒一次。
    4. 更改日志收集器:除了 Kafka 应用程序收集器外,还有其他的一些日志收集器可以选择,比如 Elasticsearch 或 Logstash。这些收集器可以提供更高级的功能,例如全文搜索和可视化。
    2023-10-25 21:20:47
    赞同 展开评论 打赏
  • 你可以使用流行的日志收集器,如 Apache Kafka、Apache Flume 或者 Logstash,将 Flink 应用程序的日志发送到集中式日志存储系统中。这些工具可以将来自多个应用程序的日志集中处理和存储,方便管理和分析。
    你还可以考虑使用专门的日志聚合和分析工具,如 Elasticsearch、Logstash 和 Kibana(ELK 栈),或者 Splunk 等。这些工具提供了强大的日志处理和分析功能,可以帮助你对 Flink 应用程序的日志进行搜索、过滤、可视化和报警等操作。

    2023-10-25 17:46:24
    赞同 展开评论 打赏
  • 减少日志,warn 输出,yinfo 不输出了或者扩kafka节点,或者再搭建一个kafka集群。此回答整理自钉群“【②群】Apache Flink China社区”

    2023-10-25 17:02:14
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
    Kubernetes下日志实时采集、存储与计算实践 立即下载
    日志数据采集与分析对接 立即下载