系統龐大卻沒有日誌收集?多LOW啊(一)
阿新 • • 發佈:2020-10-10
前言
當你做過程式碼冗餘卻沒有註釋沒有日誌的系統,你就越發明白日誌的重要性!一個完善的日誌體系應該是如下這樣:
大型網際網路公司後端日誌收集系統架構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: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