1. 程式人生 > 實用技巧 >系統龐大卻沒有日誌收集?多LOW啊(一)

系統龐大卻沒有日誌收集?多LOW啊(一)

前言

當你做過程式碼冗餘卻沒有註釋沒有日誌的系統,你就越發明白日誌的重要性!一個完善的日誌體系應該是如下這樣:

大型網際網路公司後端日誌收集系統架構

FileBeat是一個日誌檔案託運工具,在你的伺服器上安裝客戶端後,filebeat會監控日誌目錄或特定的日誌檔案,追蹤讀取這些檔案

Kafka是一種高吞吐量的分散式釋出訂閱訊息系統,它可以消費者規模的網站中所有動作流量

Logstash是一根具備實時資料傳輸能力的管道,負責將資料資訊從管道的輸入端傳輸到管道的輸出端;與此同時,這根管道還可以讓你根據自己的需求在中間加上濾網,logstash提供很多功能強大的濾網

ElasticSearch提供了一個分散式多使用者能力的全文搜尋引擎,基於REESTful web介面

Kibana是elasticSearch的使用者介面

在實際場景下,為了滿足大資料實時檢索的場景,利用filebeat去監控日誌檔案,將Kafka作為filebeat的輸出端,Kafka實時接收filebeat後以logstash作為輸出端輸出,到logstash的資料也許還不是我們想要的格式或特定的業務資料,這時可以通過logstash的一些過濾外掛對資料進行過濾最後達到想要的資料格式以elasticSearch作位輸出端輸出,資料到elasticSearch就可以進行豐富的分散式檢索了。kibana可以將elasticSearch裡的資料很好地展示給使用者使用。

正文

Docker一鍵安裝ELK(博主提示:請注意修改安裝目錄,與下文docker compose檔案種的配置的volumes一致)

轉載連線:https://mp.weixin.qq.com/s/bvmKAIMhljL3z8vqOeIsAQ

安裝配置ELK日誌收集系統

ELK即Elasticsearch、Logstash、Kibana,組合起來可以搭建線上日誌系統,本文主要講解使用ELK來收集SpringBoot應用產生的日誌。 即Elasticsearch、Logstash、Kibana,組合起來可以搭建線上日誌系統,本文主要講解使用ELK來收集SpringBoot應用產生的日誌。 Elasticsearch:用於儲存收集到的日誌資訊; Logstash:用於收集日誌,SpringBoot應用整合了Logstash以後會把日誌傳送給Logstash,Logstash再把日誌轉發給Elasticsearch; Kibana:
通過Web端的視覺化介面來檢視日誌。 使用Docker Compose 搭建ELK環境,docker compose檔案內容如下:
 1  version: '3' 
 2  services: 
 3  elasticsearch: 
 4  image: elasticsearch:6.4.0 
 5  container_name: elasticsearch 
 6  environment: 
 7  ‐ "cluster.name=elasticsearch" #設定叢集名稱為elasticsearch 
 8  ‐ "discovery.type=single‐node" #以單一節點模式啟動 
 9  ‐ "ES_JAVA_OPTS=‐Xms512m ‐Xmx512m" #設定使用jvm記憶體大小,稍微配置大點,不然有可能啟動不成功 
10  volumes: 
11  ‐ /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #外掛檔案掛載 
12  ‐ /mydata/elasticsearch/data:/usr/share/elasticsearch/data #資料檔案掛載 
13  ports: 
14  ‐ 9200:9200 
15  ‐ 9300:9300 
16  kibana: 
17  image: kibana:6.4.0 
18 container_name: kibana 
19  links: #同一個compose檔案管理的服務可以直接用服務名訪問,如果要給服務取別名則可以用links實現,如下面的es就是elasticsearch 服務的別名
20 
21  ‐ elasticsearch:es #可以用es這個域名訪問elasticsearch服務 
22  depends_on: 
23  ‐ elasticsearch #kibana在elasticsearch啟動之後再啟動 
24  environment: 
25  ‐ "elasticsearch.hosts=http://es:9200" #設定訪問elasticsearch的地址 
26  ports: 
27  ‐ 5601:5601 
28  logstash: 
29  image: logstash:6.4.0 
30  container_name: logstash 
31  volumes: 
32  ‐ /mydata/logstash/logstash‐springboot.conf:/usr/share/logstash/pipeline/logstash.conf #掛載logstash的配置檔案,dock er對單個檔案的掛載需要先在宿主機建好對應檔案才能掛載成功 
33  depends_on: 
34  ‐ elasticsearch #kibana在elasticsearch啟動之後再啟動 
35  links: 
36  ‐ elasticsearch:es #可以用es這個域名訪問elasticsearch服務 
37  ports: 
38  ‐ 4560:4560