使用Docker搭建ELK日志系統(tǒng)的方法示例
以下安裝都是以 ~/ 目錄作為安裝根目錄。
ElasticSearch
下載鏡像:
$ sudo docker pull elasticsearch:5.5.0
運(yùn)行ElasticSearch容器:
$ sudo docker run -it -d -p 9200:9200 -p 9300:9300 \ -v ~/elasticsearch/data:/usr/share/elasticsearch/data \ --name myes elasticsearch:5.5.0
特別注意的是如果使用v6以上版本會出現(xiàn)jdk的錯誤,我們查看日志
$ docker logs -f myes
查看日志:
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
網(wǎng)上找到大概的意思是:
jdk9對elasticSearch不太友好(版本太新),必須使用JDK8,本人使用的是JDK8u152(jdk-8u152-windows-x64.exe)。如果使用JDK9,使用elasticSearch-rtf(v5.1.1),會出現(xiàn)下面的錯誤,請?zhí)貏e注意,elasticSearch6.0的版本則必須使用JDK9,否則官網(wǎng)下載的msi不能安裝成功,原因還沒有去仔細(xì)檢查。
所以也是一個很坑的問題,所以我直接就安裝v5.5.0穩(wěn)定版本吧。
Logstash
下載鏡像:
$ sudo docker pull logstash:5.5.0
新建配置文件:
$ mkdir ~/logstash/conf.d && cd logstash/conf.d $ vim logstash.conf
logstash.conf:
input {
beats {
port => 5044 # 此端口需要與 filebeat.yml 中的端口相同
}
file {
path => "/data/logs"
# start_position => "beginning"
}
}
filter {
#grok {
# match => { "message" => "%{COMBINEDAPACHELOG}" }
#}
#date {
# match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]
#}
grok {
patterns_dir => "/etc/logstash/conf.d/patterns"
match => {"message" => "%{TIMESTAMP_ISO8601:time}\S%{MYSELF:msgid}%{MYSELF:method}%{MYDATA:data}%{MYSELF:UserInfo}\S%{LOGLEVEL:level}\S%{MYSELF:thread}%{MYSELF:application}%{MYSELF:ip}"}
}
date {
#match => [ "time", "YYYY-MM-dd HH:mm:ss,SSS" ]
match => [ "time", "ISO8601" ]
target => "@timestamp"
timezone => "Asia/Phnom_Penh"
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
action => "index"
hosts => ["172.17.10.114:9200"]
index => "%{[fields][indexname]}-%{+YYYY.MM.dd}"
}
}
運(yùn)行Logstash容器:
$ sudo docker run -it -d -p 5044:5044 \ -v ~/logstash/conf.d:/etc/logstash/conf.d \ -v ~/logstash/data/logs:/data/logs \ --name logstash logstash:5.5.0 \ -f /etc/logstash/conf.d/logstash.conf
Kibana
下載鏡像:
$ sudo docker pull kibana:5.5.0
新建配置文件:
$ mkdir ~/kibana && cd ~/kibana $ vim kibana.yml
kibana.yml:
server.port: 5601 server.host: "0.0.0.0" elasticsearch.url: "http://172.17.10.114:9200"
運(yùn)行Kibana容器:
$ sudo docker run -it -d -p 5601:5601 \ -v ~/kibana:/etc/kibana \ --name kibana kibana:5.5.0
Filebeat
Filebeat需要部署在需要收集日志的服務(wù)器上。
下載鏡像:
$ sudo docker pull docker.elastic.co/beats/filebeat:5.5.0
新建配置文件:
filebeat.prospectors:
- type: log
paths:
- ~/filebeat/logs # 指定需要收集的日志文件的路徑
fields:
indexname: xxx # 這里填寫項(xiàng)目名稱,對應(yīng)index => "%{[fields][indexname]}-%{+YYYY.MM.dd}"
output.logstash:
hosts: ["172.17.10.114:5044"]
運(yùn)行Filebeat容器:
$ sudo docker run -it -d \ -v ~/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \ --name filebeat docker.elastic.co/beats/filebeat:5.5.0
附上一張ELK結(jié)構(gòu)流程圖:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
docker-compose管理容器network與ip問題
這篇文章主要介紹了docker-compose管理容器network與ip問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
Docker部署Prometheus的實(shí)現(xiàn)示例
Prometheus是一款開源的監(jiān)控和告警工具,它可以收集系統(tǒng)的各種指標(biāo)數(shù)據(jù),如CPU使用率、內(nèi)存使用量等,本文主要介紹了Docker部署Prometheus的實(shí)現(xiàn)示例,感興趣的可以了解一下2024-08-08
在Docker中部署Confluence和jira-software的方法步驟
這篇文章主要介紹了在Docker中部署Confluence和jira-software的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06
在Docker中的ubuntu中安裝Python3和Pip的問題
這篇文章主要介紹了在Docker中的ubuntu中安裝Python3和Pip的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
docker kubernetes dashboard安裝部署詳細(xì)介紹
這篇文章主要介紹了docker kubernetes dashboard安裝部署詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-10-10

