簡介html
ELK由Elasticsearch、Logstash和Kibana三部分組件組成;docker
Elasticsearch是個開源分佈式搜索引擎,它的特色有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。tomcat
Logstash是一個徹底開源的工具,它能夠對你的日誌進行收集、分析,並將其存儲供之後使用restful
kibana 是一個開源和免費的工具,它能夠爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,能夠幫助您彙總、分析和搜索重要數據日誌。架構
配合Filebeat使用elasticsearch
基本架構圖分佈式
其中咱們用 Elasticsearch 做爲日誌的存儲和索引平臺;Logstash 依靠強大繁多的插件做爲日誌加工平臺,Kibana 用來從 Elasticsearch 獲取數據,進行數據可視化,定製數據報表;Filebeat 用來放到各個主機中收集指定位置的日誌,將收集到日誌發送到 Logstash;Log4j 直接與 Logstash 鏈接,將日誌直接發送到 Logstash(固然此處也能夠用 Filebeat 收集 tomcat 的日誌)。工具
一、首先安裝docker,這個並不在這裏細敘,並熟悉docker、docker-compose基本命令搜索引擎
二、建立Elasticsearch的docker-compose.yml文件插件
version: '2' services: elasticsearch: image: elasticsearch container_name: elasticsearch restart: always network_mode: "bridge" ports: - "9200:9200" #對外提供服務的 HTTP 端口 - "9300:9300" #做爲交互的 TCP 端口 volumes: - /本地磁盤目錄:/容器內目錄 #將日誌索引文件的存儲目錄掛載到主機的目錄,防止因容器掛掉活重啓致使歷史日誌文件丟失。
建立完成在文件目錄位置 運行命令 docker-compose up -d 其中 -d 表示後臺編排
三、建立Logstash的docker-compose.yml文件
version: '2' services: logstash: image: logstash container_name: logstash restart: always network_mode: "bridge" ports: - "5044:5044" - "4560:4560" - "8060:8060" volumes: - ./conf:/config #掛載關聯配置文件 - ./patterns:/tmp/patterns#掛載關聯配置文件 external_links: #external_links - elasticsearch:elasticsearch command: logstash -f /config #覆蓋容器啓動後默認執行的命令。
其中暴露的端口5044用於接收來着 Filebeat 收集的日誌數據;4560 用於接收來着 Log4j或logback 的日誌數據;8060用於接收來自插件 Logstash-input-http 的日誌數據;
external_links:連接到 docker-compose.yml 外部的容器,甚至 並不是 Compose 管理的容器。參數格式跟 links 相似。
具體功能做用請參考docker命令參考
3.1 在./conf目錄建立如下配置文件
input.conf
未完待續