使用logstash監控logback日志


前言

leader 讓給生產服務器上 tomcat 錯誤日志監控起來,我們的應用使用的日志框架是logback,google 找到了一個 logstash 和logback 集成的好工具,logstash-logback-encoder
之前流程,客戶在使用過程中遇到問題,我們手動的上生產服務器翻看catalina.out那個時間點的日志來排錯。我想實現通過日志監控,將日志按照系統名稱、日志類型、日志級別、日志信息、日志堆棧來切割,並輸出到 elasticsearch,同時集成了 zabbix,日志信息輸出到 elasticsearch 的同時還能同時進行郵件預警,將錯誤信息直接通過郵件發送。

通過 logstash 輸出到 elasticsearch

配置 logback 的 appender,將系統錯誤日志解析成 json 的格式,並通過 UDP 的方式上傳到 logstash,logstash 配置UDP的input,存到 elasticsearch。

logback.xml配置

我使用的是UDP Appender
堆棧信息配置參見Customizing Stack Traces

<appender name="stash" class="net.logstash.logback.appender.LogstashSocketAppender">
        <!--logstash服務器IP-->
        <host>127.0.0.1</host>
        <!-- port is optional (default value shown) -->
        <port>514</port>
        <customFields>{"appname":"bdcor2"}</customFields>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
            	<!--正則匹配的日志信息不輸出-->
                <exclude>sun\.reflect\..*\.invoke.*</exclude>
                <exclude>net\.sf\.cglib\.proxy\.MethodProxy\.invoke</exclude>
                <exclude>org.*</exclude>
                <rootCauseFirst>true</rootCauseFirst>
            </throwableConverter>
        </encoder>
</appender>
<root level="ERROR">
      <appender-ref ref="stash"/>
</root>

  

logstash配置

配置Input plugins,默認的bugger_size是8192,指從網絡讀取的數據包大小,開始測試的時候,堆棧日志太長,輸出到logstash,一直報_jsonparsefailure,日志信息被截取。
tips: 開啟1-1024之間的端口,必須使用root用戶

udp {
  port => 514
  codec => "json"
  type => "syslog"
  buffer_size => 20000
}

  

存到elasticsearch的數據結構如下

通過logstash輸出到zabbix

logstash配置

配置詳見logstash-output-zabbix
開始我直接配置zabbix_host => "logstash"時報錯Field referenced by logstash is missing {:level=>:warn},查看配置文檔

The field name which holds the Zabbix host name. This can be a sub-field of the @metadata field.

  該配置項必須是一個field name,對應了zabbix前端配置的主機名稱。zabbix的配置其實就是zabbix_sender的配置,zabbix_sender的使用見下面

filter {
	mutate {
	  add_field => { "[@metadata][zabbix_key]" => "logstash" }
	}
}
output {
  if "_grokparsefailure" not in [tags] {	
		if [level] == "ERROR" {	
			zabbix {
			    zabbix_host => "[@metadata][zabbix_key]"
				zabbix_server_host => "10.24.10.225"
				zabbix_key => "[@metadata][zabbix_key]"
				zabbix_value => "message"
			}
		}
  }
}

  

zabbix配置

配置監控項,類型為zabbix采集器,鍵值對應logstash zabbix配置的zabbix_key


配置完成之后,可以通過zabbix_sender進行測試

[root@Slave01 ~]# zabbix_sender -z 10.24.10.225 -s logstash -k "logstash" -o hello1111
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000038"

  

然后在zabbix前端 監測中—>最新數據里面找到這個值

配置觸發器,選擇區間T中最新字符串的長度,即有錯誤消息,立馬就進行郵件預警

發送的郵件內容


免責聲明!

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



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