SpringBoot整合ELK實現(xiàn)日志監(jiān)控
ELK 安裝匯總
可參考一下安裝內(nèi)容,過程親測可用。
CentOS下安裝ElasticSearch7.9.2(無坑版)
新建SpringBoot項目
pom依賴
<?xml version="1.0" encoding="UTF-8"?> <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.1</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>spring-boot-mysql</artifactId> <version>0.0.1-SNAPSHOT</version> <name>spring-boot-mysql</name> <description>Spring Boot with MySQL</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--連接logstash相關(guān)依賴--> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>6.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.16</version> <scope>compile</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
新建或修改application.yml
這個操作隨意,可以不改端口號
server: port: 8088
創(chuàng)建日志配置文件
在項目的 resources 目錄下創(chuàng)建 logback-spring.xml 文件,也就是日志輸出配置文件SpringBoot默認(rèn)的使用的logback日志,必須叫這個名字?。。?/p>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<!--應(yīng)用名稱-->
<property name="APP_NAME" value="logstash"/>
<!--日志文件保存路徑-->
<property name="LOG_FILE_PATH" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/logs}"/>
<contextName>${APP_NAME}</contextName>
<!--每天記錄日志到文件appender-->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_PATH}/${APP_NAME}-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--輸出到logstash的appender-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!--可以訪問的logstash日志收集的ip和端口-->
<destination>你的ip:端口號</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
<appender-ref ref="LOGSTASH"/>
</root>
</configuration>
創(chuàng)建一個測試類
package com.example.demo.controller;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
public class HelloController {
// private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
@GetMapping("/hello")
public String hello() {
log.warn("HelloController執(zhí)行-----log.warn");
log.info("HelloController執(zhí)行-----log.info");
log.error("HelloController執(zhí)行-----log.error");
// logger.info("HelloController執(zhí)行hello");
return "hello";
}
}啟動項目

Kibana配置
SpringBoot項目啟動后,可以看到默認(rèn)已經(jīng)創(chuàng)建出索引文件

索引數(shù)據(jù)。

模擬數(shù)據(jù)請求
http://localhost:8088/hello

控制臺日志

Kibana數(shù)據(jù)

索引規(guī)則配置
在kibana中,創(chuàng)建一個索引規(guī)則
點擊堆棧管理Stack Mangement

點擊索引規(guī)則Index pattern

然后創(chuàng)建索引規(guī)則
通過輸入的 log-goboy-dev-* 篩選一條匹配的索引

選擇時間參數(shù)作為@timestamp通配符字段,然后點擊右下角的創(chuàng)建索引模式Create index pattern;

創(chuàng)建完成后可以看到索引的相關(guān)詳細(xì)信息

索引文檔查看
點擊Discover

通過Refresh按鈕進(jìn)行數(shù)據(jù)的查看,左側(cè)可進(jìn)行文檔過濾。
通過索引文檔內(nèi)容可以知道,SpringBoot控制臺打印的相關(guān)日志信息。
文檔中包含:時間、日志輸出的結(jié)果信息、文檔的版本、日志的級別、線程名、端口、執(zhí)行的方法都全類名、文檔id、文檔索引名等

注意?。?!
一定要注意端口號的開放,配置好云服務(wù)器的安全組端口開放?。?!
以上就是SpringBoot整合ELK實現(xiàn)日志監(jiān)控的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot ELK日志監(jiān)控的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring中自定義數(shù)據(jù)類型轉(zhuǎn)換的方法詳解
Spring3引入了一個core.onvert包,提供一個通用類型轉(zhuǎn)換系統(tǒng)。在Spring容器中,可以使用這個系統(tǒng)作為PropertyEditor實現(xiàn)的替代,將外部化的bean屬性值字符串轉(zhuǎn)換為所需的屬性類型。本文將詳解這一系統(tǒng)的使用方法,需要的可以參考一下2022-06-06

