springboot+ELK日誌監控系統

ELK簡介
ELK是Elasticsearch+Logstash+Kibana簡稱java

Elasticsearch 是一個分佈式的搜索和分析引擎,能夠用於全文檢索、結構化檢索和分析,並能將這三者結合起來。Elasticsearch 基於 Lucene 開發,如今是使用最廣的開源搜索引擎之一。web

Logstash 簡單來講就是一根具有實時數據傳輸能力的管道,負責將數據信息從管道的輸入端傳輸到管道的輸出端,與此同時這根管道還可讓你根據本身的需求在中間加上濾網,Logstash提供了不少功能強大的濾網以知足你的各類應用場景。spring

Kibana 是一個開源的分析與可視化平臺,設計出來用於和Elasticsearch一塊兒使用的。你能夠用kibana搜索、查看、交互存放在Elasticsearch索引裏的數據,使用各類不一樣的圖標、表格、地圖等,kibana可以很輕易的展現高級數據分析與可視化。apache


ELK下載安裝
能夠去官網分別下載安裝:https://www.elastic.co/downlo...
須要提早安裝JDK1.8,這裏我是在windows上操做。json


Elasticsearch安裝啓動
如圖,下載Elasticsearch並解壓
clipboard.pngwindows

config/elasticsearch.yml配置文件,修改配置(也是默認配置,能夠不作修改)ruby

network.host=localhost
network.port=9200

sticsearch.bat,啓動成功,訪問localhost:9200app

{
  "name" : "cTP-_7z",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "6tnImaw3RyKHlErGQrtuvw",
  "version" : {
    "number" : "6.3.1",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" : "eb782d0",
    "build_date" : "2018-06-29T21:59:26.107521Z",
    "build_snapshot" : false,
    "lucene_version" : "7.3.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

logstash安裝啓動
如圖,下載Logstash並解壓socket

clipboard.png

bin目錄下新建配置log4j_to_es.confelasticsearch

input {
    tcp {  
    ##host:port就是上面appender中的 destination,這裏其實把logstash做爲服務,開啓8080端口接收logback發出的消息  
        host => "localhost"  
        port => 8080  
    #模式選擇爲server  
        mode => "server"  
        tags => ["tags"]  

    ##格式json  
        codec => json_lines         
    }  

} 

output {
        elasticsearch {
        #ES地址
                hosts => "127.0.0.1:9200"
        #指定索引名字
                index => "applog"
        }
        stdout { codec => rubydebug}
}

新建文件run_default.bat

logstash -f log4j_to_es.conf

保存直接雙擊該配置文件,啓動成功,控制檯輸出以下:

clipboard.png

訪問localhost:9600:

{"host":"LAPTOP-MJ88A0EI","version":"6.3.1","http_address":"127.0.0.1:9600","id":"a0fe5a6f-e35d-4c5f-8b87-24344a928239","name":"LAPTOP-MJ88A0EI","build_date":"2018-06-29T22:43:59Z","build_sha":"b79493047db01afca1e11c856fe8538d7ecb5787","build_snapshot":false}

Kibana安裝啓動
如圖,下載Kibana並解壓

clipboard.png

這裏,直接默認配置便可,bin/kibana.bat雙擊運行,啓動成功,訪問localhost:5601

clipboard.png

至此,軟件啓動完畢!


建立SpringBoot項目,pom.xml文件以下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zm.elk</groupId>
    <artifactId>elk</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>elk</name>
    <description></description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j</artifactId>
            <version>1.3.8.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>4.9</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

log4j的配置以下:

log4j.rootLogger=INFO,console

# for package com.demo.elk, log would be sent to socket appender.
log4j.logger.com.forezp=DEBUG, socket

# appender socket
log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.Port=4560
log4j.appender.socket.RemoteHost=localhost
log4j.appender.socket.layout=org.apache.log4j.PatternLayout
log4j.appender.socket.layout.ConversionPattern=%d [%-5p] [%l] %m%n
log4j.appender.socket.ReconnectionDelay=10000

# appender console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%-5p] [%l] %m%n

logback..xml配置以下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <destination>localhost:8080</destination>
    <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder charset="UTF-8"> <!-- encoder 能夠指定字符集,對於中文輸出有意義 -->
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
    </encoder>
</appender>

<root level="INFO">
    <appender-ref ref="LOGSTASH" />
    <appender-ref ref="STDOUT" />
</root>

</configuration>

目錄結構以下:

clipboard.png

log測試:

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class ElkApplicationTests {

    // 定義一個全局的記錄器,經過LoggerFactory獲取
    private final static Logger log = LoggerFactory.getLogger(Test.class);

    @Before
    public void setUp() {
    }
    @Test
    public void test() {
        log.trace("trace 成功了");
        log.debug("debug 成功了");
        log.info("info 成功了");
        log.warn("warn 成功了");
        log.error("error 成功了");
    }

}

回到kibana上查看信息:

clipboard.png

而後create index pattern

clipboard.png

clipboard.png

回到Discover

clipboard.png

在右邊就能看到具體的日誌信息啦!!

還能夠本身修改filter查看須要的信息,具體的本身能夠搗鼓搗鼓玩玩。

相關文章
相關標籤/搜索