序
因为工作需要打算搭建一个数据抽取平台,发现Elastic Stack能满足。同时为了方便部署,故此采用docker来搭建。本次搭建为单机部署。
1 准备工作
下载顺序:
- Elasticsearch(其中包含X-Pack for Elasticsearch)
- Kibana(包含X-Pack for Kibana)
- Logstash
- Beats
- Elasticsearch Hadoop(用不到,官网有,就先放着)
elasticsearch作为数据中心,kibana是页面显示,logstash是数据过滤,filebeat是日志文件数据提取。
使用Docker下载3个镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.1
docker pull docker.elastic.co/logstash/logstash:6.3.1
docker pull docker.elastic.co/kibana/kibana:6.3.1
2 启动容器
2.1 启动es
添加配置文件elasticsearch.yml
http.port: 9200
cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.type: "single-node"
再启动ES
docker run -d -p 9200:9200 -p 9300:9300 --name container-es -v ~/elk/es/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml docker.elastic.co/elasticsearch/elasticsearch:6.3.1
2.2 启动Kibana
同样添加配置文件kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://172.17.0.2:9200"
elasticsearch.url对应具体的IP和端口,然后启动kibana:
docker run -d -e ELASTICSEARCH_URL=http://172.17.0.2:9200 -p 5601:5601 --name container-kibana -v ~/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml docker.elastic.co/kibana/kibana:6.3.1
其中ELASTICSEARCH_URL即为es的URL地址
2.3 启动Logstash
添加配置文件pipeline/logstash.conf,使用json解析日志
input {
beats {
port => 5044
}
}
filter {
json {
source => "message"
}
}
output {
elasticsearch {
hosts => ["172.17.0.2:9200"]
}
}
启动
docker run -d --name logstash -p 3456:3456 -p 5044:5044 -v ~/elk/logstash/pipeline/:/usr/share/logstash/pipeline/ docker.elastic.co/logstash/logstash:6.3.1
此时,logstash以5044端口启动
2.4 下载Filebeat
Filebeat下载地址 filebeat上传至logstash,配置文件如下,将ES部分注释掉,并打开logstash部分,并修改为logstash所在地址
filebeat.inputs:
- type: log
enabled: true
paths:
#- /var/log/*.log
#- c:\programdata\elasticsearch\logs\*
- D:\test\logs\*
#output.elasticsearch:
# Array of hosts to connect to.
#hosts: ["localhost:9200"]
output.logstash:
hosts: ["192.168.0.51:5044"]
3 注意点
3.1 总是没有接收最后一条日志
filebeat通过换行符来作为EOF,所以需要在最后加上换行
来源:oschina
链接:https://my.oschina.net/u/271522/blog/855809