Flink使用logback记录日志并告警

任务运行中的日志记录下来是相当有必要的,而当我们想要查看输入的日志并不是一件简单的事情,尽管可以在flink ui上看logs和stdout,一旦日志量变大,这样查看会异常的恶心。

flink conf中提供了log4j和logback配置文件,默认情况下使用的是log4j,因为log4j不支持公司邮箱的认证方式,所以在这里选用优秀的logback。

在lib文件夹下是没有logback依赖jar包的,所以需要增加

logback-access-1.2.3.jar

logback-classic-1.2.3.jar

logback-core-1.2.3.jar

mail-1.4.7.jar

然后修改conf下logback-console.xml  logback.xml logback-yarn.xml 三个文件

主要是增加 发邮件的appender

<!-- 邮件发送的appender -->
<appender name="Email" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>smtp.partner.outlook.cn</smtpHost>
<smtpPort>587</smtpPort>
<username>[email protected]</username>
<password></password>
<asynchronousSending>false</asynchronousSending>
<SSL>false</SSL>
<STARTTLS>true</STARTTLS>
<to>xx@xx.com</to>
<from>xx@xx.com</from>
<subject>flink异常邮件</subject>
<!-- html格式 -->
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<Pattern>%date%level%thread%logger{0}%line%message</Pattern>
</layout>
     <!-- 这里采用等级过滤器 指定等级相符才发送 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
</filter>
<!-- 每个电子邮件只发送40个日志条目 -->
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<bufferSize>40</bufferSize>
</cyclicBufferTracker>
</appender>

<root level="INFO">
     <appender-ref ref="Email"/>
</root>

这样flink配置就完成了。

在开发应用的时候,如果想要记录日志信息,需要添加slf4j和logback依赖并排除log4j的依赖(切记),那么记录的error信息,就直接会发到配置的邮箱

正常来说,偶尔几个错误发出来完成没有问题,但是一旦出现比较严重的错误,比如某个组件出现了故障,那么在实时任务中需要发出来的邮件可能就有数十万,很有可能将公司邮箱打爆。

基于这种情况,将buffersize调大能起到一定作用,但是解决不了根本。

猜你喜欢

转载自www.cnblogs.com/createweb/p/11613511.html