松哥原創的 Spring Boot 視頻教程已經殺青,感興趣的小夥伴戳這裏-->Spring Boot+Vue+微人事視頻教程
Spring Boot 如何攀上高大上的 ELK?今天松哥手把手教你將 Spring Boot 日誌實時輸入到 Es 中!
以下是視頻筆記:
注意,筆記只是視頻內容的一個簡要記錄,因此筆記內容比較簡單,完整的內容可以查看視頻。
30.1 Logstash
一個具備實時數據傳輸能力的管道。它可以將數據從輸入端(Spring Boot 日誌)傳送到輸出端(Es)。數據在 Logstash 中傳輸的過程中,可以加入過濾器 Filter,對數據進行過濾。
30.2 安裝
-
可以使用 Docker 安裝(不推薦)。
-
直接安裝
2.1 下載 Logstash:https://www.elastic.co/cn/downloads/logstash
2.2 解壓下載後的文件。
2.3 在 config 目錄下,添加 logstash-springboot.conf 文件,內容如下:
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4560
codec => json_lines
}
}
filter {
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200","127.0.0.1:9201","127.0.0.1:9202"]
index => "log-javaboy-dev-%{+yyyy.MM.dd}"
}
}
2.4 在 config/pipelines.yml 文件中,加載 logstash-springboot.conf 配置文件:
- pipeline.id: log_dev
path.config: "/Users/sang/workspace/elasticsearch/logstash-7.10.2/config/logstash-springboot.conf"
2.5 啓動 Logstash
進入到 bin 目錄下,執行 ./logstash
命令啓動即可(啓動之前確保 Es 已經啓動)。看到如下內容表示啓動成功:
30.3 Spring Boot 日誌
首先創建一個 Spring Boot 工程,引入 web 依賴 和 logstash 相關的依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.6</version>
</dependency>
然後在 resources 目錄下創建 logback-spring.xml 文件(具體參考:Spring Boot 日誌各種用法),將日誌輸出到 logstash 中:
<?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"/>
<!--應用名稱-->
<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日誌收集端口-->
<destination>127.0.0.1:4560</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>
最後再創建一個 HelloController 用來測試:
@RestController
public class HelloController {
private static final Logger logger = LoggerFactory.getLogger(HelloController.class);
@GetMapping("/hello")
public void hello() {
logger.info("hello logstash!");
}
}
接下來啓動 Spring Boot 工程。
30.4 Kibana
在 Kibana 中,點擊創建一個索引規則:
接下來創建一個索引規則:
輸入索引名稱規則:
然後點擊下一步,選擇 @timestamp。
最後,在 discover 中可以查看日誌信息。
ElasticSearch 系列其他文章:
-
打算出一個 ElasticSearch 教程,誰贊成,誰反對? -
ElasticSearch 從安裝開始 -
ElasticSearch 第三彈,核心概念介紹 -
ElasticSearch 中的中文分詞器該怎麼玩? -
ElasticSearch 索引基本操作 -
ElasticSearch 文檔的添加、獲取以及更新 -
ElasticSearch 文檔的刪除和批量操作 -
ElasticSearch 文檔路由,你的數據到底存在哪一個分片上? -
ElasticSearch 併發的處理方式:鎖和版本控制 -
ElasticSearch 中的倒排索引到底是什麼? -
ElasticSearch 動態映射與靜態映射 -
ElasticSearch 四種字段類型詳解 -
ElasticSearch 中的地理類型和特殊類型 -
ElasticSearch 23 種映射參數詳解 -
ElasticSearch 如何配置某個字段的權重? -
ElasticSearch 23 種映射參數詳解【3】 -
ElasticSearch 映射模版 -
ElasticSearch 搜索入門 -
ElasticSearch 全文搜索怎麼玩? -
ElasticSearch 打錯字還能搜索到?試試 fuzzy query! -
ElasticSearch 複合查詢,理解 Es 中的文檔評分策略! -
想搜索附近評分較高的餐廳,ElasticSearch 大顯身手! -
ElasticSearch 如何像 MySQL 一樣做多表聯合查詢? -
ElasticSearch 地理位置查詢與特殊查詢 -
ElasticSearch 搜索高亮與排序 -
ElasticSearch 指標聚合 -
ElasticSearch 桶聚合 -
ElasticSearch 管道聚合 -
Java 操作 ElasticSearch,so easy! -
ElasticSearch Java 高級客戶端索引操作~ -
ElasticSearch Java 高級客戶端如何操作索引? -
使用 Java 客戶端添加 ElasticSearch 文檔 -
使用 Java 客戶端對 ElasticSearch 文檔進行刪改查
本文分享自微信公衆號 - 江南一點雨(a_javaboy)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。