ELK:使用docker搭建elk平台

1.安装ElasticSearch

1.docker pull elasticsearch  //拉取镜像

2.find /var/lib/docker/overlay2/ -name jvm.options  //找到es启动时的jvm配置

3.vim /var/lib/docker/overlay2/988da6b3d15ba2cd936752ad4b4f624b45107b34bbb5b2e76f1dc64c4a1dd172/diff/etc/elasticsearch/jvm.options

  说明:es5.0以后默认启动时会使用2G内存,所以会导致启动失败,这里我们修改为512m或者更低

  参考:https://blog.csdn.net/qq_35022052/article/details/81584014

4.docker run -d -p 9200:9200 -p 9300:9300 --name myelasticsearch -e "discovery.type=single-node"   elasticsearch  //启动es

 

ps:当然也可以使用参数限制

docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name myelasticsearch  elasticsearch

2.安装Kibana

1.docker pull kibana  //拉取镜像

2.docker run -d -p 5601:5601 --name mykibana --link myelasticsearch -e ELASTICSEARCH_URL=tanghu.tk:9200 kibana

  使用link参数,会在kibana容器hosts文件中加入elasticsearch ip地址,这样我们就直接通过定义的name来访问es服务了。

  link后面的参数名是我们刚刚启动es时自定义的名称

3.安装Logstash

1.docker pull logstash

2.新建一个配置文件

input {
  beats {
    host => "http://tanghu.tk"
    port => "5044"
  }
}
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 => [ "http://tanghu.tk:9200" ]
        index => "%{[fields][doc_type]}-%{+YYYY.MM.dd}"
    }
}

关于logstash的数据来源有多种beats 是自身,通过logback传输到节点上

还有file直接拉去本地文件,以及redis、es等等

详见:https://www.elastic.co/guide/en/logstash/current/input-plugins.html

3.docker run --rm -it --name mylogstash --link myelasticsearch -d -v /myfile/config/logstash.conf:/usr/share/logstash/pipeline/logstash.conf logstash

 

posted @ 2019-02-20 16:16  市井俗人  阅读(605)  评论(0编辑  收藏  举报