ELK日誌中心入門環境搭建以及和原有的java工程集成

今天看了會ELK收集日誌的實現。將自己的淺薄的理解寫一下:

ElasticSearch, 是用來搜索的,搜索收集到的日誌信息

Logstash, 用來收集日誌的發送給ElasticSearch

Kibana,貌似只是展示日誌用的頁面。


1 下載ELK。

https://www.elastic.co/cn/downloads

選擇這三個下載就好了。

2 安裝(啓動)

安裝的時候看很多blog說很複雜,可能是新版本的問題,並沒有用到別人blog中描述的,僅僅是根據下載網站中download下邊的安裝教程就可以

 2.1 首先啓動ElasticSearch 直接點擊解壓文件bin目錄下elasticsearch.bat就可以,win7環境下。

 2.2 啓動Logstash   切換到bin目錄下,新建一個文件,將其後綴改爲config 就可以了,官方例子挺好,結合 自己的 的工程配置    執行這段cmd命令就好了   logstash -f logstash.conf 注意正常起來的情況是一直運行狀態,如果配置不對的話,會啓動完成後就會退出程序了。

input {  
tcp {  
    ##host:port就是上面appender中的 destination,這裏其實把logstash作爲服務,開啓9250端口接收logback發出的消息  
    host => "localhost"  
    port => 9250  
    #模式選擇爲server  
    mode => "server"  
    tags => ["tags"]  
    ##格式json  
    codec => json_lines  
  }  
 }  
output {  
  stdout { codec => rubydebug }  
#這裏是es的地址  
elasticsearch { hosts => "127.0.0.1:9200" }  
}  

2.3 啓動 Kibana  首先修改配置文件 config-Kibana.yml文件,將裏面全部註釋的信息,想不用默認配置的話就打開並修改這項配置,然後同樣簡單執行 Kibana.bat就好了。

3 程序配置 

3.1 src-main-resourses 中的logback-spring的文件修改爲

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<include resource="org/springframework/boot/logging/logback/base.xml" />

	<springProperty scope="context" name="springAppName"
		source="spring.application.name" />
	<!-- 日誌在工程中的輸出位置 -->
	<property name="LOG_FILE" value="${BUILD_FOLDER:-build}/${springAppName}" />
	<!-- 控制檯的日誌輸出樣式 -->
	<property name="CONSOLE_LOG_PATTERN"
		value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([${springAppName:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]){yellow} %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" />

	<!-- 控制檯Appender -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>INFO</level>
		</filter>
		<encoder>
			<pattern>${CONSOLE_LOG_PATTERN}</pattern>
			<charset>utf8</charset>
		</encoder>
	</appender>

	<!-- <logger name="cn.com.yusys.yusp.uaa" level="DEBUG" />
	<logger name="io.github.jhipster" level="INFO" />
	<logger name="javax.activation" level="WARN" />
	<logger name="javax.mail" level="WARN" />
	<logger name="javax.xml.bind" level="WARN" />
	<logger name="ch.qos.logback" level="WARN" />
	<logger name="com.codahale.metrics" level="WARN" />
	<logger name="com.ryantenney" level="WARN" />
	<logger name="com.sun" level="WARN" />
	<logger name="com.zaxxer" level="WARN" />
	<logger name="io.undertow" level="WARN" />
	<logger name="io.undertow.websockets.jsr" level="ERROR" />
	<logger name="org.apache" level="WARN" />
	<logger name="org.apache.catalina.startup.DigesterFactory"
		level="OFF" />
	<logger name="org.bson" level="WARN" />
	<logger name="org.hibernate.validator" level="WARN" />
	<logger name="org.hibernate" level="WARN" />
	<logger name="org.hibernate.ejb.HibernatePersistence" level="OFF" />
	<logger name="org.springframework" level="WARN" />
	<logger name="org.springframework.web" level="WARN" />
	<logger name="org.springframework.security" level="INFO" />
	<logger name="org.springframework.cache" level="WARN" />
	<logger name="org.thymeleaf" level="WARN" />
	<logger name="org.xnio" level="WARN" />
	<logger name="springfox" level="WARN" />
	<logger name="sun.rmi" level="WARN" />
	<logger name="liquibase" level="WARN" />
	<logger name="LiquibaseSchemaResolver" level="INFO" />
	<logger name="sun.rmi.transport" level="WARN" />
	<logger name="com.netflix.discovery" level="INFO" /> -->

	<!-- 爲logstash輸出的json格式的Appender -->
	<!--<appender name="logstash" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
		<file>${LOG_FILE}.json</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
		<fileNamePattern>${LOG_FILE}.json.%d{yyyy-MM-dd}.gz</fileNamePattern> <maxHistory>7</maxHistory> 
		</rollingPolicy> <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> 
		<providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> 
		{ "severity": "%level", "service": "${springAppName:-}", "trace": "%X{X-B3-TraceId:-}", 
		"span": "%X{X-B3-SpanId:-}", "exportable": "%X{X-Span-Export:-}", "pid": 
		"${PID:-}", "thread": "%thread", "class": "%logger{40}", "rest": "%message" 
		} </pattern> </pattern> </providers> </encoder> </appender> -->

	<appender name="logstash"
		class="net.logstash.logback.appender.LogstashTcpSocketAppender">
		<!-- <destination>local:9250</destination> -->
		<destination>localhost:9250</destination> 
		<encoder
			class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
			<providers>
				<timestamp>
					<timeZone>UTC</timeZone>
				</timestamp>
				<pattern>
					<pattern>
						{
						"severity": "%level",
						"service": "${springAppName:-}",
						"trace": "%X{X-B3-TraceId:-}",
						"span": "%X{X-B3-SpanId:-}",
						"exportable": "%X{X-Span-Export:-}",
						"pid": "${PID:-}",
						"thread": "%thread",
						"class": "%logger{40}",
						"rest": "%message"
						}
					</pattern>
				</pattern>
			</providers>
		</encoder>
	</appender>

	<root level="INFO">
		<appender-ref ref="console" />
		<appender-ref ref="logstash" />
	</root>
</configuration>

3.2 application-dev文件或者什麼配置文件中

logging:
        logstash: # Forward logs to logstash over a socket, used by LoggingConfiguration
            enabled: true
            host: 192.168.251.151
            port: 9250
            queue-size: 512

3.3 pom依賴 

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

據官網要求這裏的依賴有很多但是因爲我本來的工程中已有所需要的所以就單純這個一個。一般應該下邊的都會有了,不需要額外添加。

所需要全部如下

<!-- jackson -->  
        <dependency>  
            <groupId>com.fasterxml.jackson.core</groupId>  
            <artifactId>jackson-core</artifactId>  
            <version>2.6.3</version>  
        </dependency>  
        <dependency>  
            <groupId>org.slf4j</groupId>  
            <artifactId>slf4j-api</artifactId>  
            <version>1.7.5</version>  
        </dependency>  
        <dependency>  
            <groupId>org.slf4j</groupId>  
            <artifactId>jcl-over-slf4j</artifactId>  
            <version>1.7.12</version>  
        </dependency>  
        <dependency>  
            <groupId>org.slf4j</groupId>  
            <artifactId>log4j-over-slf4j</artifactId>  
            <version>1.7.12</version>  
        </dependency>  
        <dependency>  
            <groupId>ch.qos.logback</groupId>  
            <artifactId>logback-core</artifactId>  
            <version>1.0.13</version>  
        </dependency>  
        <dependency>  
            <groupId>ch.qos.logback</groupId>  
            <artifactId>logback-classic</artifactId>  
            <version>1.0.13</version>  
        </dependency>  
        <dependency>  
            <groupId>ch.qos.logback</groupId>  
            <artifactId>logback-access</artifactId>  
            <version>1.0.13</version>  
        </dependency>  
        <dependency>  
            <groupId>org.logback-extensions</groupId>  
            <artifactId>logback-ext-spring</artifactId>  
            <version>0.1.2</version>  
            <scope>compile</scope>  
        </dependency>  

4 成功

  1. 成功 訪問5601 端口(kibana默認的,修改的話需要打開相應的註釋,設置成自己的端口 ,修改的就是yml文件,而且需要將host改爲0.0.0.0 這樣自己本機起的服務,纔可以遠程訪問到。)

  1. 成功 訪問5601 端口(kibana默認的,修改的話需要打開相應的註釋,設置成自己的端口 ,修改的就是yml文件,而且需要將host改爲0.0.0.0 這樣自己本機起的服務,纔可以遠程訪問到。)
發佈了32 篇原創文章 · 獲贊 10 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章