Docker 搭建ELK环境(版本7.7.0)
一. ElasticSearch7.7.0安装
-
下载镜像
docker pull elasticsearch:7.7.0 -
查看镜像
docker images -
配置文件
在/home/elk/elasticsearch.yml中增加配置
cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: [“node-1”] -
启动ES容器
docker run -di -p 9200:9200 -p 9300:9300 --name=elasticsearch -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -v /home/elk/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:7.7.0 -
进入ES容器内部
docker exec -it elasticsearch /bin/bash -
修改es配置文件,增加x-pack安全认证.在elasticsearch.yml增加下列配置。保存并退出容器,exit
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true -
重启es 并进入容器
docker restart elasticsearch
docker exec -it elasticsearch /bin/bash -
进入ES名录目录
cd /usr/share/elasticsearch/bin -
执行下列命令,交互式设置密码(注意保存好全部密码)
./elasticsearch-setup-passwords interactive -
URL访问验证
访问es http://ip:9200
用户名:elastic
密码:xxx(步骤9中设的密码) -
配置IK分词器
-
进入es容器内部,并创建插件目录
docker exec -it elasticsearch /bin/bash
cd plugins/
mkdir ik
cd ik
exit -
下载插件压缩包
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.0/elasticsearch-analysis-ik-7.7.0.zip -
将压缩包拷贝到es容器刚才创建的目录下
docker cp /home/elk/elasticsearch-analysis-ik-7.7.0.zip elasticsearch:/usr/share/elasticsearch/plugins/ik -
再次进入es容器内部,使用unzip命令将压缩包解压。
docker exec -it elasticsearch /bin/bash
cd plugins/ik/
unzip elasticsearch-analysis-ik-7.7.0.zip
rm -f elasticsearch-analysis-ik-7.7.0.zip
exit
-
-
重启es就可以了
异常解决:
ERROR: bootstrap checks failed
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决办法:
修改配置sysctl.conf
sudo vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p
然后,重新启动elasticsearch,即可启动成功。
二. Kibana7.7.0安装
1. 下载kibana镜像
docker pull kibana:7.7.0
2. 配置文件
在/home/elk下创建kibana.yml文件.在配置文件中加入如下配置:
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://elasticsearch_IP:9200"]
# 操作界面语言设置
i18n.locale: "zh-CN"
elasticsearch.username: "kibana"
elasticsearch.password: "xxx"
3. 启动容器
docker run -di --name kibana -p 5601:5601 -v /home/elk/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.7.0
4.URL访问验证
访问kibana http://host:5601
用户名:elastic
密码:xxx(之前设置的密码)
三. Logstash7.7.0安装
1. 下载logstash镜像
docker pull logstash:7.7.0
2. 配置文件
在home/elk下创建一个logstash.conf配置文件,添加配置如下:
input {
tcp {
port => 5044
codec => "json"
}
}
filter{
}
output {
# 这个是logstash的控制台打印(进行安装调试的开启,稍后成功后去掉这个配置即可)
stdout {
codec => rubydebug
}
# elasticsearch配置
elasticsearch {
hosts => ["elasticsearch的IP:9200"]
}
}
3. 启动
docker run -di -p 5044:5044 -v /home/elk/logstash.conf:/usr/share/logstash/pipeline/logstash.conf --name logstash logstash:7.7.0
4. 将微服务的日志推送到logstash中
添加maven依赖:
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.3</version>
</dependency>
5. 下面以springboot中logback作为日志处理,配置文件(logback-spring.xml)配置信息如下:
```xml
<configuration>
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{50}.%M.%L) - %highlight(%msg) %n</pattern>
</layout>
</appender>
<!--logback输出-->
<appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>logstash_server_ip:5044</destination>
<includeCallerData>true</includeCallerData>
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<includeCallerData>true</includeCallerData>
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80}.%M.%L - %msg %n</pattern>
</providers>
</encoder>
</appender>
<root level="INFO">
<!--本地开发调试将控制台输出打开,同时将日志文件输出关闭,提高日志性能;线上部署请务必将控制台输出关闭-->
<appender-ref ref="STDOUT"/>
<appender-ref ref="STASH"/>
</root>
</configuration>