一、安装ES
1、创建elk网络组
docker network create elk
2、在dockerhub上搜索es,找到需要的es版本
拉取镜像 docker pull elasticsearch:tag
3、以单机模式启动es镜像
docker run -d --name elasticsearch --net elk -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
启动之后访问localhost:9200,有数据返回说明启动成功
4、修改es配置,进入容器docker exec -it a804 /bin/sh
在config目录下的elasticsearch.yml文件添加允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
修改完配置之后,退出容器并重启
5、可以通过以下命令获取容器ip
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器ID
二、安装kibana
1、从dockerhub拉取与es对应版本的kibana docker pull kibana:tag
启动kibana docker run --name kibana --net elk -d -p 5601:5601 kibana:tag
2、进入到kibana容器,切换到/usr/share/kibana/config目录,修改kibana.yml文件中es的ip地址为第一步5中获取的地址
修改完kibana.yml之后重启kibana容器
访问kibanalocalhost:5601
三、安装logstash
1、从dockerhub拉取与es对应版本的logstash docker pull logstash:tag
启动docker run -d --name logstash --net elk -p 5044:5044 logstash:tag
2、进入容器修改配置输入输出
2.1修改配置(不挂载文件的方式)
vim /usr/share/logstash/config/logstash.yml(修改es地址)
vim /usr/share/logstash/pipeline/logstash.conf
input {
#http方式写入数据
http{
host => "0.0.0.0"
port => 4560 #http启动端口
additional_codecs => {"text/plain"=>"json"} #接受JSON数据
}
#文件同步方式写入数据
file {
path => "/user/data/*/*.log" #必填同步的文件路径
start_position => "beginning" #选填,默认end,从文件头或尾部读取
}
}
output {
elasticsearch {
action => "index" #增加文档的方式,index,create,update,delete四种
hosts => "172.18.0.2:9200" #es的地址
index => "logdata-%{+yyyy.MM.dd}" #索引名
}
}
2.2修改配置(挂载文件的方式)-未实测
mkdir /www/server/logstash/logstash.yml
mkdir /www/server/logstash/conf.d/logstash.conf #将步骤2.1的配置添加进去
#启动容器时 增加挂载
docker run -d --name logstash -p 5044:5044 -v /www/server/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml -v /www/server/logstash/conf.d/:/usr/share/logstash/conf.d/ logstash:tag
退出容器重启
四、测试
1、查看logstash日志是否有报错
docker logs -f --tail=50 logstash
2、进入其他网络组容器测试是否写入成功
curl 'http://172.18.0.4:4560' \
-H "Content-Type:application/json" \
-H 'Authorization:bearer' \
-X POST \
-d '{"Id":"qweqweqwe","visitTimes":1,"docType":"都发发顺丰","docId":"36e5854f5f0e4f80b7ccc6c52c063243"}'
3、通过kibana查询es数据
GET _search
{
"query": {
"match": {
"_index":"logdata-*"#logstash中定义的索引名称
}
}
}