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端口,可能会出现
等待即可。
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页面
原文:https://www.cnblogs.com/olda/p/13588786.html