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>xx@xx.com</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調大能起到一定作用,但是解決不了根本,可以參考我的另一篇文章 Flink日志接入ELK 根本性的解決這個問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM