话不多说,直奔主题

因为kibana要依赖ES所以要先启动ES在启动kibana
首先执行

docker pull elasticsearch:7.0.0

下载好了ES的镜像然后继续执行下面代码 注意:(ES和kibana的版本要一致不然可能会出现问题)

docker pull logstash:7.0.0

然后继续执行下面代码

docker pull kibana:7.0.0

然后先启动ES

docker run -d -e ES_JAVA_POTS="-Xms256m -Xmx256m" -e "discovery.type=single-node"   -p 9200:9200 -p 9300:9300 --name es01 8f46db60ddd6

然后在浏览器输入云服务器的ip地址加9200端口访问出现下面就为启动成功
在这里插入图片描述
接下来执行下面命令启动kibana

docker run --name kiba -e ELASTICSEARCH_HOSTS=http://192.168.111.136:9200 -e SERVER_PORT=5601  -e SERVER_HOST=0.0.0.0 -p 5601:5601 -d 7f92ab934206

等待一会,然后进入浏览器访问出现下列现象就代表搭建好了
在这里插入图片描述
接下来最复杂的地方配置logstash

docker pull Filebeat

新建logstash文件夹,并在其下新建config、pipeline两个文件夹其中config文件夹下有文件logstash.conf、filebeat.yml。内容分别为:

logstash.conf

input {
  beats {
    host => "localhost"
    port => "5043"
  }
}
filter {
   if [fields][doc_type] == 'order' {
    grok {
            match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{JAVALOGMESSAGE:msg}" }
        }
   }

   if [fields][doc_type] == 'customer' { # 这里写两个一样的grok,实际上可能出现多种不同的日志格式,这里做个提示而已,当然如果是相同的格式,这里可以不写的
    grok {
            match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{JAVALOGMESSAGE:msg}" }
        }
   }
}

output {
  stdout { codec => rubydebug }
  elasticsearch {
        hosts => [ "localhost:9200" ]
        index => "%{[fields][doc_type]}-%{+YYYY.MM.dd}"
    }
}

filebeat.yml

filebeat.prospectors:
- paths:
    - /home/user/elk/logs/order/*.log
  multiline:
      pattern: ^\d{4}
      negate: true
      match: after
  fields:
    doc_type: order
- paths:
    - /home/user/elk/logs/customer/*.log
  multiline:
      pattern: ^\d{4}
      negate: true
      match: after
  fields:
    doc_type: customer
output.logstash: # 输出地址
  hosts: ["logstash:5043"]

然后执行下面代码启动

docker run --rm -it --name logstash --link elasticsearch -d -v ~/elk/logstash/config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf logstash

接下来执行下列代码

docker run --name filebeat -d --link logstash -v ~/elk/logstash/config/filebeat.yml:/usr/share/filebeat/filebeat.yml -v ~/elk/logs/:/home/logs/ filebeat

注意下-v参数挂载的几个本地盘的地址。还有filebeat收集的地址。
好了,本期的内容就到这里了!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐