elk日誌系統搭建

下載elasticsearch,logstash,kibana三個軟件,我用的windows版本演示
下載地址,推薦使用華爲鏡像庫,下載速度快:
華爲開源軟件下載

注意點: 最好這三者的版本一致,防止版本不同的差異

1.下載完成後
啓動elasticsearch,可以不用配置ik分詞
在這裏插入圖片描述
啓動完成後,訪問http://localhost:9200,啓動成功
在這裏插入圖片描述

2.配置/啓動kibana

在這裏插入圖片描述

進入kibana的config目錄,修改kibana.yml配置文件,
設置如下配置:
在這裏插入圖片描述


server.port: 5601
elasticsearch.hosts: ["http://localhost:9200"]    #修改成自己集羣的端口號
kibana.index: ".kibana"
i18n.locale: "en" #設置爲英文

啓動kibana,
在這裏插入圖片描述

啓動後,訪問:http://localhost:5601
在這裏插入圖片描述
3.先分析下需要監聽的日誌文件

我需要監聽的日誌,是spring boot項目中使用logback配置的日誌模板:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <!--定義日誌文件的存儲地址 勿在 LogBack 的配置中使用相對路徑 -->
    <property name="LOG_HOME" value="./logs"/>
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
         <layout class="ch.qos.logback.classic.PatternLayout">
	    <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}|%-5level|%thread|%logger:%line|%mdc{client} %.-2048msg%n</pattern>
	 </layout>
    </appender>
    <appender name="infoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
	 <encoder>
            <!--日誌內容格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
            <!--<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern>-->
            <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS}|%-5level|%thread|%logger:%line|%mdc{client} %.-2048msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!--滾動策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路徑-->
            <fileNamePattern>${LOG_HOME}/%d-%i.log</fileNamePattern>
	    <!-- 配置日誌文件不能超過2M,若超過2M,日誌文件會以索引0開始,命名日誌文件,例如info.2018-12-21-0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>500MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日誌文件保留天數-->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>

    <root level="info">
        <appender-ref ref="consoleLog" />
        <appender-ref ref="infoLog" />
    </root>
</configuration>

生成的日誌格式如下:

2020-06-04 17:11:04.774|INFO |main|org.springframework.data.repository.config.RepositoryConfigurationDelegate:126| Bootstrapping Spring Data repositories in DEFAULT mode.

日誌是以|爲分割下的,分爲5個部分,

下面配置logstash的grok正則解析日誌: 推薦在線調試正則的網站: grok debugger

網站地址: grok debugger

在這裏插入圖片描述

這裏的正則全部是使用自定義的正則,沒有使用官方的模板,符合標準正則:

文檔信息: 文檔連接

注意在正則中單純匹配|需要轉義: |

關於grok解析日誌的正則寫法(規範):

 (?<field_name>the pattern here)

調試好的正則如下:

(?<request_time>[0-9\-]+\s[0-9\:]+(.)[0-9]{3})\|(?<info_level>[A-Z|]{4}.)\|(?<thread_id>(.)+?)\|(?<log_line>(.)+?)\|(?<message>(.)+)

匹配實例數據:

2020-06-04 17:11:05.046|INFO |main|org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:330| Bean 'threadConfig' of type [com.hfepay.ai.store.changan.config.ThreadConfig$$EnhancerBySpringCGLIB$$1041ddd7] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)|

調試結果:
在這裏插入圖片描述
好了,正則已經處理Ok,下面配置logstash:

進入logstahs的bin目錄,新建logstash.config文件:

在這裏插入圖片描述
編寫配置文件:

input {
    file {
        path => 'E:/worksoft/2020-06-04-0.log'
        type => "blog_log"
        start_position => "beginning"
    }
}

filter {
       grok {
			match => {
				"message" => "(?<request_time>[0-9\-]+\s[0-9\:]+(.)[0-9]{3})\|(?<info_level>[A-Z|]{4}.)\|(?<thread_id>(.)+?)\|(?<log_line>(.)+?)\|(?<message>(.)+)"
			}
       }
     }
output{
   stdout {
            codec => rubydebug
          }
   elasticsearch{
       hosts => ["127.0.0.1:9200"]
       index => "logstash-test1-%{+YYYY.MM.dd}"
     }
}

指定了es路徑,需要監聽的日誌文件,以及解析的正則表達式:

下面啓動logstash: 使用cmd命令,指定config方式啓動:

>logstash -f logstash.conf

在這裏插入圖片描述
啓動將文件的日誌寫入了es

訪問kibana:

在這裏插入圖片描述
可以看到索引以及創建:
下面創建index pattern
在這裏插入圖片描述

在這裏插入圖片描述
搜索出創建的索引點擊下一步,就能創建了,創建完成之後,查看:

在這裏插入圖片描述
可以看到數據都在es中,並且按照我們的正則進行了切分,通過修改監聽的日誌,數據es數據也得到了了更新

如果要監聽一個目錄下的日誌文件: 如 \logs目錄下的所有日誌文件,可以使用通配符:
\logs*.log來實現監聽

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章