一、环境
服务器ip:10.144.213.27
elk镜像版本:7.1.1 (版本保持一致,避免出现问题)
elk配置文件存放目录:/home/elk/config
二、安装ElasticSearch
1.因为elasticsearch占用内存较高,官方要求max_map_count需要配置到最小262144,所以执行如下命令:
sysctl -w vm.max_map_count=262144
2.创建elasticsearch.yml配置文件,内容如下
1) network.bing_host:0.0.0.0 表示任何ip都能访问
2) bootstrap.system_call_filter: false 避免出现如下错误:
3.拉取镜像
docker pull elasticsearch:7.1.1
network.bing_host:0.0.0.0 表示任何ip都能访问
4.运行容器
docker run -d --name es -p 9200:9200 -p 9300:9300 -v /home/elk/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -e "discovery.type=single-node" elasticsearch:7.1.1
5.校验
1) 使用docker ps查询容器是否运行正常
2)在浏览器中输入http://10.144.213.27:9200 ,若出现下列内容,表示启动成功
三、安装logstash
1.拉取镜像
docker pull logstash:7.1.1
2.创建logstash.yml配置文件,内容如下
1) http://10.144.213.27:9200 配置成ElasticSearch服务地址
3.创建logstash-sample.conf配置文件,内容如下
1)设置tcp收集方式:端口为5044,ip为任何ip
2) http://10.144.213.27:9200 配置成ElasticSearch服务地址
4.运行容器
docker run -d --name logstash -p 5044:5044 -p 9600:9600 -v /home/elk/config/logstash.yml:/usr/share/logstash/config/logstash.yml -v /home/elk/config/logstash-sample.conf:/usr/share/logstash/config/logstash-sample.conf logstash:7.1.1 logstash -f /usr/share/logstash/config/logstash-sample.conf
5.校验
1)使用docker ps查询容器是否运行正常
2)在浏览器中输入http://10.144.213.27:9600,若出现如下内容,表示启动成功
四、安装kibana
1.拉取镜像
docker pull logstash:7.1.1
2.创建kibana.yml配置文件,内容如下
1)http://10.144.213.27:9200 配置成ElasticSearch服务地址
3.运行容器
docker run --name kibana -p 5601:5601 -d -v /home/elk/config/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.1.1
4.校验
1) 使用docker ps查询容器是否运行正常
2) 在浏览器中输入http://10.144.213.27:5601,若出现如下内容,表示启动成功
五、代码集成elk
1.在pom.xml中增加elk依赖
<dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>5.1</version> </dependency>
2.在logback.xml中加入
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>10.144.213.27:5044</destination> <!-- 日志输出编码 --> <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "logLevel": "%level", "serviceName": "fishcms", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "rest": "%message" } </pattern> </pattern> </providers> </encoder> </appender>
<root level="info"> <appender-ref ref="LOGSTASH" /> </root>
3.验证
在kibana中点击Discover模块,输入关键字查询日志信息,若存在,则表示配置成功