通过docker在Linux系统下搭建ELK

参考文档:https://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-docker.html

1. docker安装elasticsearch

1.1 docker命令下载elasticsearch image

docker pull registry.docker-cn.com/library/elasticsearch:latest

1.2 从命令行,docker命令启动elasticsearch

docker run -d --name es-zulan -p 9400:9200 -p 9500:9300 -v /yourpath/ELK/elasticsearch/data:/usr/share/elasticsearch/data -e "discovery.type=single-node" registry.docker-cn.com/library/elasticsearch:latest

1.3 访问  http://10.50.40.226:9400/ ,出现以下内容则证明elasticsearch启动成功

10.50.180.226是docker所在的Linux server的IP。

2. docker安装kibana

2.1 下载kibana image

docker pull docker.elastic.co/kibana/kibana:5.6.14

2.2 docker启动kibana

docker run -d --name kb-zulan -p 9600:5601 --link es-zulan:registry.docker-cn.com/library/elasticsearch -e ELASTICSEARCH_URL=http://10.50.40.226:9400 docker.elastic.co/kibana/kibana:5.6.14

2.3 修改kibana的config

以交互方式进入已启动的kibana container:

docker exec -it kb-zulan /bin/sh

修改config文件,如图注释掉默认的针对elasticsearch的配置:

vi config/kibana.yml

 

重启kibana container:

docker restart kb-zulan

2.4 浏览器访问http://10.50.40.226:9600

出现一个登陆页面,但是无法输入。

造成这个现象的原因是docker启动的elasticsearch image没有x-pack,而用的kibana image中有x-pack。

有两种解决方法:

(1)将kibana里面的x-pack卸载掉

使用到的docker指令:

docker exec -it kb-zulan /bin/sh

cd bin

./kibana-plugin remove x-pack

Exit

docker restart kb-zulan

(2)在elasticsearch中安装上x-pack

使用到的docker指令:

docker exec -it es-zulan /bin/bash

cd bin

./elasticsearch-plugin install x-pack

Exit

docker restart es-zulan

x-pack默认有一个30天的试用期,试用到期后,就需要购买license。

Note:重启kibana或elasticsearch后,需要等待一段时间。

2.5 进入kibana后,首先需要新建一个index pattern。

但是,此时会弹出error提示“Unable to fetch mapping. Do you have indices matching the pattern?”。

这需要安装logstash,向elasticsearch写data。

3. docker安装logstash

3.1 docker下载logstash image

docker pull docker.elastic.co/logstash/logstash:5.6.14

3.2 docker启动logstash

docker run -d --name ls-zulan -p 9700:5044 -p 9800:9600 -v /yourpath/ELK/logstash/eventslogfiles:/usr/share/logstash/eventslogfiles docker.elastic.co/logstash/logstash:5.6.14

log文件放在/yourpath/ELK/logstash/eventslogfiles下。

3.3 浏览器访问http://10.50.40.226:9800 ,出现以下内容说明logstash启动成功

3.4 修改logstash的config

以交互方式进入logstash container:

docker exec -it ls-zulan /bin/sh

修改config/logstash.yml和pipeline/logstash.conf:

pipeline/logstash.conf的修改如下:

input {
  file{
    path => "/usr/share/logstash/eventslogfiles/*/*/*"
    start_position => "beginning"
  }
}

filter {
  grok {
    match => { "message" => "%{YEAR:ma_year}-%{WORD:ma_month}-%{WORD:ma_day},%{TIME:ma_time},%{WORD:ma_label} ,\[%{WORD:ma_title}\],%{WORD:ma_event}, ip: %{IP:ma_ip},%{WORD:ma_basePcn},%{WORD:ma_baseSN},%{WORD:ma_psdPcn},%{WORD:ma_psdSN},%{WORD:ma_bpn},\"%{DATA:ma_info}\"" }
    add_field => { "full_time" => "%{ma_year}%{ma_month}%{ma_day} %{ma_time}" }
  }
  date{

    match => ["full_time","yyyyMMdd HH:mm:ss,SSS"]

  }
}

output {
  elasticsearch {
    hosts => ["10.50.40.226:9400"]
    index => "logstash-ls-%{+YYYY-MM-DD}"
    user => elastic
    password=> changeme
  }
stdout { codec => rubydebug }

}

 

docker restart ls-zulan

Note:logstash中index是不能包含大写字母的,除了Logstash。

 4. 浏览器访问kibana http://10.50.40.226:9600

(1) 在kibana中,创建同logstash的index对应的index pattern。

(2)在Linux server上,将log文件复制到logstash挂在的文件夹/yourpath/ELK/logstash/eventslogfiles。logstash会自动将log data写入elasticsearch。

(3)在kibana中,在Management中刷新Index Patterns的field list,它会parse在pipeline/logstash.conf中配置的字段。

(4)在kibana中,点击Discover,查看数据。

猜你喜欢

转载自www.cnblogs.com/4-army/p/11277831.html