基於docker部署ELK


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頁面

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM