系统环境谷歌云香港服务器centos7 ,2cpu 7.5G
废话不多说,先安装docker
一、docker
使用yum安装
yum -y install docker
启动docker
systemctl start docker
二、elasticsearch
拉取镜像,这里使用6.6.1版本,也可以使用其他版本,但elk版本最好相差不要太大
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.6.1
启动es镜像
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.6.1
elasticsearch的默认端口是9200,要把docker容器内的9200端口映射到宿主环境,这样才能访问到容器内的es服务
配置跨域,es是启动的容器名称
docker exec -it es /bin/bash
修改elasticsearch.yml
cd config
vi elasticsearch.yml
# 加入跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
重启容器
docker restart es
访问 http://你的ip:9200,显示如下就成功了
{
"name": "ZcPQVTh",
"cluster_name": "docker-cluster",
"cluster_uuid": "UNpmsEFiQheO78o-MEhshw",
"version": {
"number": "6.6.1",
"build_flavor": "default",
"build_type": "tar",
"build_hash": "1fd8f69",
"build_date": "2019-02-13T17:10:04.160291Z",
"build_snapshot": false,
"lucene_version": "7.6.0",
"minimum_wire_compatibility_version": "5.6.0",
"minimum_index_compatibility_version": "5.0.0"
},
"tagline": "You Know, for Search"
}
三、logstash
拉取并启动镜像,并将pipeline端口暴露出来
docker run -d --name es_logstash -p 4560:4560 docker.elastic.co/logstash/logstash:6.6.1
进入容器
docker exec -it es_logstash /bin/bash
修改logstash.yml配置文件
cd config
vi logstash.yml
# 改成如下配置
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.url: http://es所在的ip:9200
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: changme
修改pipeline下的logstash.conf文件
cd pipeline
vi logstash.conf
# 改为如下配置
input {
tcp {
#模式选择为server
mode => "server"
#ip和端口根据自己情况填写,端口默认4560,对应下文logback.xml里appender中的destination
host => "logstash所在的ip地址"
port => 4560
#格式json
codec => json_lines
}
}
filter {
#过滤器,根据需要填写
}
output {
elasticsearch {
action => "index"
#这里是es的地址,多个es要写成数组的形式
hosts => "es所在的ip地址:9200"
#用于kibana过滤,可以填项目名称
index => "springboot-logstash"
}
}
重启logstash
docker restart es_logstash
四、kibana
拉取镜像
docker pull kibana:6.6.2
启动容器
docker run --name es_kibana -p 5601:5601 -d -e ELASTICSEARCH_URL=http://es所在的ip:9200 kibana:6.6.2
访问地址:http://kibana所在的ip:5601。如果你的kibana版本高于ES的版本,访问后会报错 "Kibana server is not ready yet"。因此在安装前务必下载版本比ES低。
五、整合springboot
添加依赖
<properties>
<ch.qos.logback.version>1.2.3</ch.qos.logback.version>
</properties>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${ch.qos.logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${ch.qos.logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>${ch.qos.logback.version}</version>
</dependency>
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.1</version>
</dependency>
添加logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false" scan="true" scanPeriod="1 seconds">
<include resource="org/springframework/boot/logging/logback/base.xml" />
<contextName>logback</contextName>
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>logstash所在的ip地址:4560</destination>
<!-- encoder必须配置,有多种可选 -->
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<root level="info">
<appender-ref ref="stash" />
</root>
</configuration>