基于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