一、安装镜像
docker pull elasticsearch:7.2.0
docker pull mobz/elasticsearch-head:5
docker pull kibana:7.2.0
docker pull logstash:7.2.0
二、安装ElasticSearch
1.
docker run -d --restart=always --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.2.0 docker exec -it es /bin/bash #进入配置文件夹 cd config #修改配置文件 vi elasticsearch.yml #加入跨域配置 http.cors.enabled: true http.cors.allow-origin: "*" #开启账户密码验证 http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type #设置密码 xpack.security.enabled: true xpack.security.transport.ssl.enabled: true #保存一下然后 exit #重新启动一下容器 docker restart es
2.进入elasticsearch容器内部进行密码设置
docker exec -it es /bin/bash /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive #退出容器 exit #重新启动一下容器 docker restart es
注:elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user 密码最好设置一致避免后续忘记
3.浏览器直接访问http://ip:9200,会出现输入用户名、密码的弹窗,输入用户名:elastic 和 自己设置的密码 才能登录
登录之后显示
4.修改密码
curl -H "Content-Type:application/json" -XPOST -u elastic 'http://ip:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "test123" }'
或者
- 进入容器修改elasticsearch.yml 配置文件将身份验证相关配置屏蔽掉;
- 重启ES服务,查看下索引,发现多了一个.security-7索引,将其删除掉;
- 这样ES就没有密码
5.访问 http://localhost:9100/?auth_user=elastic&auth_password=xxx 可查看elasticsearch
6.访问 http://localhost:9200/_cat/indices?v 可查看所有索引
三、ElasticSearch安装ik分次器
#进入容器 docker exec -it es /bin/bash #进入 plugins目录 cd plugins/ #创建ik文件夹 mkdir ik #若没有wget、unzip则需安装 yum -y install wget yum -y install unzip zip #进入ik目录 cd ik #拉取elasticsearch-analysis-ik-7.2.0 wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.0/elasticsearch-analysis-ik-7.2.0.zip #解压elasticsearch-analysis-ik-7.2.0.zip unzip elasticsearch-analysis-ik-7.2.0.zip #移除elasticsearch-analysis-ik-7.2.0.zip rm -f elasticsearch-analysis-ik-7.2.0.zip #退出容器 exit #重新启动一下容器 docker restart es
四、运行Head容器
docker run -d --restart=always --name es_head -p 9100:9100 mobz/elasticsearch-head:5
五、运行 kibana 容器
# 进入容器 docker exec -it kibana /bin/bash # 进入配置文件夹 cd config # 修改配置文件 vi kibana.yml # 修改elasticsearch连接(如果是本机部署,ip需填写内网ip) elasticsearch.hosts: [ "http://elasticsearch的ip地址:9200" ] # 加入中文配置(保存后重启kibana) i18n.locale: "zh-CN" # 设置elasticsearch用户名密码 elasticsearch.username: "elastic" elasticsearch.password: "xxxx"
#保存之后,退出容器 exit #重新启动一下容器 docker restart kibana
六、运行 LogStash 容器
docker run -d --restart=always --name logstash -p 5044:5044 -p 9600:9600 logstash:7.2.0 # 进入容器 docker exec -it logstash /bin/bash # 修改 config 下的 logstash.yml 文件 vi config/logstash.yml # 修改里面的IP地址,以及添加最后两行的elasticsearch的账号密码 http.host: "0.0.0.0" xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch的ip:9200" ] elasticsearch.username: "elastic" elasticsearch.password: "xxxx" # 修改 pipeline 下的 logstash.conf 文件 vi pipeline/logstash.yml # 修改内容如下 input { tcp { mode => "server" host => "0.0.0.0" # 允许任意主机发送日志 port => 5066 codec => json_lines # 数据格式 } } output { elasticsearch { hosts => ["http://192.168.12.58:9200"] # ElasticSearch 的地址和端口(如果是本机部署,ip需填写内网ip) index => "elk" # 指定索引名 codec => "json" user => "elastic" # 账号 password => "xxx" # 密码 } stdout { codec => rubydebug } } #保存之后,退出容器 exit #重新启动一下容器 docker restart logstash
七、扩展补充
1.elasticsearch-head无法创建索引的问题
将容器内的vendor.js拿出来。
docker cp es_head:/usr/src/app/_site/vendor.js D:\DockerFile\es_head\
然后修改D:\DockerFile\es_head\vendor.js。将6886行
contentType: "application/x-www-form-urlencoded
改成
contentType: "application/json;charset=UTF-8"
将7573行
var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
修改为
var inspectData = s.contentType === "application/json;charset=UTF-8" &&
修改完之后在覆盖回去。
docker cp D:\DockerFile\es_head\vendor.js es_head:/usr/src/app/_site
然后重启es_head
docker restart es_head
2.windows 下logstash通过input收集日志配置
- logstash导入的数据必须是es上已存在的索引,所以可以通过 es_head 自己先创建好索引。
- windows下文件目录写法问题,D:/PublishSpace/xxx 格式
- 文件读取位置不正确,读取一个已经存在内容的文件则需设置 start_position => "beginning"
- 日志中文乱码的问题 ,charset => "GB2312"
input { file { path => ["D:/PublishSpace//logs/*.log"] start_position => "beginning" codec => plain { # 设置读取编码 charset => "GB2312" } } } output { elasticsearch { hosts => ["http://192.168.12.58:9200"] # ElasticSearch 的地址和端口(如果是本机部署,ip需填写内网ip) index => "test" # 指定索引名,没有需自己创建 codec => "json" user => "elastic" # 账号 password => "123456" # 密码 } stdout { codec => rubydebug } }
标签:ELK,head,容器,elasticsearch,docker,logstash,es From: https://www.cnblogs.com/yan0720/p/17844489.html