ELK簡介
ELK主要由ElasticSearch、Logstash和Kibana三個開源工具組成,還有其他專門由於收集數據的輕量型數據采集器Beats。
Elasticsearch :分布式搜索引擎。具有高可伸縮、高可靠、易管理等特點。可以用於全文檢索、結構化檢索和分析,並能將這三者結合起來。Elasticsearch 是用Java 基於 Lucene 開發,現在使用最廣的開源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基於它來構建自己的搜索引擎。
Logstash :數據收集處理引擎。支持動態的從各種數據源搜集數據,並對數據進行過濾、分析、豐富、統一格式等操作,然后存儲以供后續使用。
Kibana :可視化化平台。它能夠搜索、展示存儲在 Elasticsearch 中索引數據。使用它可以很方便的用圖表、表格、地圖展示和分析數據。
Filebeat:輕量級數據收集引擎。相對於Logstash所占用的系統資源來說,Filebeat 所占用的系統資源幾乎是微乎及微。它是基於原先 Logstash-fowarder 的源碼改造出來。
版本
Elasticsearch、Logstash、Kibana、Filebeat安裝的版本號必須全部一致,不然會出現kibana無法顯示web頁面。
編寫docker-compose文件
准備工作:
-
創建elk目錄,並在elk目錄下創建四個子文件夾
- es
- logstash
- kibana
- filebeat
-
安裝docker及docker-compose
安裝方法網上自行搜索,本文不做介紹
-
分別拉取所需鏡像,命令如下
docker pull elasticsearch:7.5.0 docker pull logstash:7.5.0 docker pull kibana:7.5.0 docker pull elastic/filebeat:7.5.0
編寫配置文件
filebeat配置文件
進入filebeat目錄,創建filebeat.yml文件,內容如下:
filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
processors:
- add_cloud_metadata: ~
filebeat.inputs:
- type: log
paths:
-/*.log
output.logstash:
hosts: ["logstash:5044"]
logstash配置文件
進入logstash目錄,創建logstash_stdout.conf文件,內容如下:
input {
beats {
port=>5044
host=>"0.0.0.0"
}
}
output {
stdout {codec=>rubydebug}
}
yml文件
進入到elk文件夾,創建docker-compose.yml文件,文件內容如下
version: "3.0"
services:
elasticsearch:
image: elasticsearch:7.5.0
environment:
- "discovery.type=single-node"
volumes:
- ./es/data:/usr/share/elasticsearch/data
- ./es/plugins:/usr/share/elasticsearch/plugins
container_name: es
restart: always
ports:
- "9200:9200"
- "9300:9300"
networks:
- elk
filebeat:
image: elastic/filebeat:7.5.0
volumes:
- type: bind
source: "./filebeat/test.log"
target: "/test.log"
- type: bind
source: "./filebeat/filebeat.yml"
target: "/usr/share/filebeat/filebeat.yml"
networks:
- "elk"
depends_on:
- "logstash"
logstash:
image: logstash:7.5.0
container_name: logstash
volumes:
- type: bind
source: "./logstash/logstash_stdout.conf"
target: "/usr/share/logstash/pipeline/logstash.conf"
networks:
- "elk"
kibana:
image: kibana:7.5.0
ports:
- "5601:5601"
networks:
- "elk"
networks:
elk:
driver: bridge
啟動容器
在文件夾里運行docker-compose up -d,運行完成后訪問:http://localhost:9200 ,顯示如下頁面表示安裝完成
{
"name" : "e6c6ab6978c3",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "EmFmVBwBQzqHCE3xtDaRYA",
"version" : {
"number" : "7.5.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "e9ccaed468e2fac2275a3761849cbee64b39519f",
"build_date" : "2019-11-26T01:06:52.518245Z",
"build_snapshot" : false,
"lucene_version" : "8.3.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
驗證Kibana
訪問http://localhost:5601,顯示kibana主界面