Docker構(gòu)建ELK Docker集群日志收集系統(tǒng)
當(dāng)我們搭建好Docker集群后就要解決如何收集日志的問題 ELK就提供了一套完整的解決方案 本文主要介紹使用Docker搭建ELK 收集Docker集群的日志
ELK簡介
ELK由ElasticSearch、Logstash和Kiabana三個(gè)開源工具組成
Elasticsearch是個(gè)開源分布式搜索引擎,它的特點(diǎn)有:分布式,零配置,自動(dòng)發(fā)現(xiàn),索引自動(dòng)分片,索引副本機(jī)制,restful風(fēng)格接口,多數(shù)據(jù)源,自動(dòng)搜索負(fù)載等。
Logstash是一個(gè)完全開源的工具,他可以對(duì)你的日志進(jìn)行收集、過濾,并將其存儲(chǔ)供以后使用
Kibana 也是一個(gè)開源和免費(fèi)的工具,它Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數(shù)據(jù)日志。
使用Docker搭建ELK平臺(tái)
首先我們編輯一下 logstash的配置文件 logstash.conf
input {
udp {
port => 5000
type => json
}
}
filter {
json {
source => "message"
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200" #將logstash的輸出到 elasticsearch 這里改成你們自己的host
}
}
然后我們還需要需要一下Kibana 的啟動(dòng)方式
編寫啟動(dòng)腳本 等待elasticserach 運(yùn)行成功后啟動(dòng)
#!/usr/bin/env bash # Wait for the Elasticsearch container to be ready before starting Kibana. echo "Stalling for Elasticsearch" while true; do nc -q 1 elasticsearch 9200 2>/dev/null && break done echo "Starting Kibana" exec kibana
修改Dockerfile 生成自定義的Kibana鏡像
FROM kibana:latest RUN apt-get update && apt-get install -y netcat COPY entrypoint.sh /tmp/entrypoint.sh RUN chmod +x /tmp/entrypoint.sh RUN kibana plugin --install elastic/sense CMD ["/tmp/entrypoint.sh"]
同時(shí)也可以修改一下Kibana 的配置文件 選擇需要的插件
# Kibana is served by a back end server. This controls which port to use. port: 5601 # The host to bind the server to. host: "0.0.0.0" # The Elasticsearch instance to use for all your queries. elasticsearch_url: "http://elasticsearch:9200" # preserve_elasticsearch_host true will send the hostname specified in `elasticsearch`. If you set it to false, # then the host you use to connect to *this* Kibana instance will be sent. elasticsearch_preserve_host: true # Kibana uses an index in Elasticsearch to store saved searches, visualizations # and dashboards. It will create a new index if it doesn't already exist. kibana_index: ".kibana" # If your Elasticsearch is protected with basic auth, this is the user credentials # used by the Kibana server to perform maintence on the kibana_index at statup. Your Kibana # users will still need to authenticate with Elasticsearch (which is proxied thorugh # the Kibana server) # kibana_elasticsearch_username: user # kibana_elasticsearch_password: pass # If your Elasticsearch requires client certificate and key # kibana_elasticsearch_client_crt: /path/to/your/client.crt # kibana_elasticsearch_client_key: /path/to/your/client.key # If you need to provide a CA certificate for your Elasticsarech instance, put # the path of the pem file here. # ca: /path/to/your/CA.pem # The default application to load. default_app_id: "discover" # Time in milliseconds to wait for elasticsearch to respond to pings, defaults to # request_timeout setting # ping_timeout: 1500 # Time in milliseconds to wait for responses from the back end or elasticsearch. # This must be > 0 request_timeout: 300000 # Time in milliseconds for Elasticsearch to wait for responses from shards. # Set to 0 to disable. shard_timeout: 0 # Time in milliseconds to wait for Elasticsearch at Kibana startup before retrying # startup_timeout: 5000 # Set to false to have a complete disregard for the validity of the SSL # certificate. verify_ssl: true # SSL for outgoing requests from the Kibana Server (PEM formatted) # ssl_key_file: /path/to/your/server.key # ssl_cert_file: /path/to/your/server.crt # Set the path to where you would like the process id file to be created. # pid_file: /var/run/kibana.pid # If you would like to send the log output to a file you can set the path below. # This will also turn off the STDOUT log output. log_file: ./kibana.log # Plugins that are included in the build, and no longer found in the plugins/ folder bundled_plugin_ids: - plugins/dashboard/index - plugins/discover/index - plugins/doc/index - plugins/kibana/index - plugins/markdown_vis/index - plugins/metric_vis/index - plugins/settings/index - plugins/table_vis/index - plugins/vis_types/index - plugins/visualize/index
好了下面我們編寫一下 Docker-compose.yml 方便構(gòu)建
端口之類的可以根據(jù)自己的需求修改 配置文件的路徑根據(jù)你的目錄修改一下 整體系統(tǒng)配置要求較高 請(qǐng)選擇配置好點(diǎn)的機(jī)器
elasticsearch: image: elasticsearch:latest command: elasticsearch -Des.network.host=0.0.0.0 ports: - "9200:9200" - "9300:9300" logstash: image: logstash:latest command: logstash -f /etc/logstash/conf.d/logstash.conf volumes: - ./logstash/config:/etc/logstash/conf.d ports: - "5001:5000/udp" links: - elasticsearch kibana: build: kibana/ volumes: - ./kibana/config/:/opt/kibana/config/ ports: - "5601:5601" links: - elasticsearch
#好了命令 就可以直接啟動(dòng)ELK了 docker-compose up -d
訪問之前的設(shè)置的kibanna的5601端口就可以看到是否啟動(dòng)成功了
使用logspout收集Docker日志
下一步我們要使用logspout對(duì)Docker日志進(jìn)行收集 我們根據(jù)我們的需求修改一下logspout鏡像
編寫配置文件 modules.go
package main import ( _ "github.com/looplab/logspout-logstash" _ "github.com/gliderlabs/logspout/transports/udp" )
編寫Dockerfile
FROM gliderlabs/logspout:latest COPY ./modules.go /src/modules.go
重新構(gòu)建鏡像后 在各個(gè)節(jié)點(diǎn)運(yùn)行即可
docker run -d --name="logspout" --volume=/var/run/docker.sock:/var/run/docker.sock \
jayqqaa12/logspout logstash://你的logstash地址
現(xiàn)在打開Kibana 就可以看到收集到的 docker日志了
注意Docker容器應(yīng)該選擇以console輸出 這樣才能采集到

好了我們的Docker集群下的ELK 日志收集系統(tǒng)就部署完成了
如果是大型集群還需要添加logstash 和elasticsearch 集群 這個(gè)我們下回分解。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
docker for windows 容器內(nèi)網(wǎng)通過獨(dú)立IP直接訪問的方法
這篇文章主要介紹了docker for windows 容器內(nèi)網(wǎng)通過獨(dú)立IP直接訪問的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Docker下安裝Mongo4.2及客戶端工具連接Mongo
這篇文章主要介紹了Docker下安裝Mongo4.2和客戶端工具連接Mongo數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01
docker安裝及運(yùn)行MySQL5.7容器完整腳本及說明
這個(gè)腳本用于在Docker中安裝和運(yùn)行MySQL 5.7容器,它首先創(chuàng)建必要的目錄和配置文件,然后刪除并強(qiáng)制停止現(xiàn)有的MySQL容器,最后啟動(dòng)一個(gè)新的MySQL容器,配置包括設(shè)置環(huán)境變量、端口映射、數(shù)據(jù)和配置文件目錄掛載等2025-01-01
docker實(shí)現(xiàn)重新打tag并刪除原tag的鏡像
這篇文章主要介紹了docker實(shí)現(xiàn)重新打tag并刪除原tag的鏡像,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-11-11
docker網(wǎng)卡的IP地址修改方法總結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于docker網(wǎng)卡的IP地址修改方法,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用docker具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-06-06
iptables如何限制宿主機(jī)跟Docker IP和端口訪問(安全整改)
本文詳細(xì)介紹了如何通過iptables對(duì)網(wǎng)絡(luò)訪問進(jìn)行限制,包括限制特定IP或網(wǎng)段訪問特定服務(wù),以及在Docker環(huán)境下,如何設(shè)置DOCKER-USER鏈限制IP和端口訪問,確保網(wǎng)絡(luò)安全2024-10-10
Docker鏡像修改hosts及dockerfile修改hosts文件的實(shí)現(xiàn)方式
這篇文章主要介紹了Docker鏡像修改hosts及dockerfile修改hosts文件的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
Docker及Docker-Compose的實(shí)例用法
在本篇文章里小編給大家整理的是關(guān)于Docker及Docker-Compose的實(shí)例用法,需要的朋友們可以學(xué)習(xí)參考下。2020-02-02
vscode 遠(yuǎn)程連接服務(wù)器docker容器的設(shè)置方法
本文主要介紹了vscode 遠(yuǎn)程連接服務(wù)器docker容器的設(shè)置方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
Elasticsearch/Kibana密碼設(shè)置方法
這篇文章主要介紹了Elasticsearch/Kibana密碼設(shè)置,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06

