ELK功能在這里不做介紹,如果需要了解可以去ELK官網進行學習,這里主要是介紹怎么部署elk。
1 創建一個網絡,后邊涉及到的容器全部運行在該網絡之上
docker network create somenetwork
默認driver為bridge
[root@elk ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 46d8da97d41a bridge bridge local 696913a6e238 host host local 234f7d1fbb31 none null local c33e9f355b8a somenetwork bridge local
2 安裝elasticsearch
docker run -d --name elasticsearch --network somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.io/elasticsearch:7.1.1
某些鏡像不支持使用latest標簽下載,盡量使用確切的版本編號
discovery.type=single-node表示單節點部署,避開引導檢查
3 安裝kibana
在本地root用戶家目錄下創建文件kibana.yml,並加入如下內容:
server.name: kibana server.host: "0" elasticsearch.hosts: [ "http://172.18.0.2:9200" ] xpack.monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.hosts對應的IP地址修改為,elasticsearch容器的IP地址/或者服務器本機IP地址,
查看elasticsearch容器地址可以執行docker inspect elasticsearch | grep -i ipaddr

啟動kibana容器:
docker run -d --name kibana --network somenetwork --privileged=true -p 5601:5601 -v /root/kibana.yml:/usr/share/kibana/config/kibana.yml docker.io/kibana:7.1.1
如果不加--privileged=true,會報錯,沒有權限操作/usr/share/kibana/config/kibana.yml
-v /root/kibana.yml:/usr/share/kibana/config/kibana.yml 是指將本地文件映射至容器內的文件
查看容器啟動后,在瀏覽器訪問服務器IP地址加5601端口,可能會出現
Kibana server is not ready yet
等待即可。
4 安裝logstash
在本地root用戶家目錄下創建文件logstash.yml,並加入如下內容:
path.config: /usr/share/logstash/conf.d/*.conf path.logs: /var/log/logstash
root下創建conf.d目錄,並進入目錄創建test.conf文件,寫入如下內容:
input { beats { port => 5044 codec => "json" } } output { elasticsearch { hosts => ["172.18.0.2:9200"] } stdout { codec => rubydebug } }
elasticsearch hosts對應的IP地址修改為,elasticsearch容器的IP地址/或者服務器本機IP地址,
查看elasticsearch容器地址可以執行docker inspect elasticsearch | grep -i ipaddr
啟動容器
docker run -it -d -p 5044:5044 --name logstash --network somenetwork --privileged=true -v /root/logstash.yml:/usr/share/logstash/config/logstash.yml -v /root/conf.d/:/usr/share/logstash/conf.d/ logstash:7.1.1
5 安裝filebeat
root下創建filebeat目錄,進入目錄執行如下命令,下載配置文件:
curl -L -O https://raw.githubusercontent.com/elastic/beats/7.1/deploy/docker/filebeat.docker.yml
修改配置文件:
filebeat.config: modules: path: ${path.config}/modules.d/*.yml reload.enabled: false filebeat.autodiscover: providers: - type: docker hints.enabled: true processors: - add_cloud_metadata: ~ filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/*.log # json.keys_under_root: true # json.overwrite_keys: true output.logstash: hosts: ['172.18.0.4:5044']
output.logstash對應的IP地址填寫logstash容器對應的IP地址。
filebeat.inputs對應日志路徑填寫nginx對應的路徑(下一步驟將安裝nginx服務,進行日志分析)
啟動filebeat容器
docker run --name filebeat --user=root -d --network somenetwork --privileged=true --volume="/var/log/nginx:/var/log/nginx/" --volume="/root/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" --volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" --volume="/var/run/docker.sock:/var/run/docker.sock:ro" docker.io/elastic/filebeat:7.1.1
6 安裝nginx,並壓測數據進行分析
yum install nginx httpd-tools -y
ab -n 100 -c 100 http://{your_ip}:80/
7 進入kibana web頁面