ELK+Filebeat主要用于日志系统,主要包括四大组件:Elasticsearch、Logstash、Kibana以及Filebeat,也统称为Elastic Stack。
大体的一个架构流程:
下面详细介绍 docker-compose 安装的过程(单机版),经测试可适用6.8.1
以及7.8.0
版本!
(一)创建相关目录路径
先上整体的一个目录结构:
创建一个elk目录:
mkdir elk
执行命令cd elk
切换到elk目录下,然后在其下分别创建 elasticsearch、logstash、kibana、filebeat 目录以及各目录相关的需要挂载到容器中的配置文件:
mkdir elasticsearch logstash kibana filebeat
1)elasticsearch 配置
切换进去 elasticsearch 目录,创建 conf、data、logs 文件夹用于挂载容器中的数据卷:
mkdir conf data logs
在 conf 文件夹下新建一个 elasticsearch.yml 文件:
touch elasticsearch.yml
编辑并添加以下内容:
# default configuration in docker
cluster.name: "elasticsearch" #集群名
network.host: 0.0.0.0 #主机ip
#network.bind_host: 0.0.0.0
#cluster.routing.allocation.disk.threshold_enabled: false
#node.name: es-master
#node.master: true
#node.data: true
http.cors.enabled: true #允许跨域,集群需要设置
http.cors.allow-origin: "*" #跨域设置
#http.port: 9200
#transport.tcp.port: 9300
#discovery.zen.minimum_master_nodes: 1
#discovery.zen.ping.unicast.hosts: *.*.*.*:9300, *.*.*.*:9301, *.*.*.*:9302
说明:
- conf :用于挂载 elasticsearch 相关配置
- data:用于挂载 elasticsearch 的数据,比如索引;运行一段时间后会存在elasticsearch磁盘占满的问题,所以可自行了解清除数据策略
- logs:用于挂载 elasticsearch 的日志信息
2)logstash 配置
切换进去 logstash 目录,创建 conf 文件夹用于挂载容器中的数据卷:
mkdir conf
在 conf 文件夹下分别新建一个 logstash.yml 文件:
touch logstash.yml
编辑并添加以下内容:
## 和kibana的host一样,也需要设置成0.0.0.0才能启动成功
http.host: "0.0.0.0"
## 除了可以使用docker-compose.yml中elasticsearch的容器名如 "http://elasticsearch:9200"(前提是同属于一个docker network,且类型为bridge),也可以直接改成公网ip
xpack.monitoring.elasticsearch.hosts: [ "http://106.52.202.31:9200" ]
以及新建一个 logstash.conf 文件:
touch logstash.conf
编辑并添加以下内容:
##input输入日志 beats用于接收filebeat的插件 codec设置输入日志的格式 port端口为logstash的端口
input {
beats {
port => 5044
}
}
##filter对数据过滤操作
filter {
}
##output配置输出elasticsearch地址 可配多个 index为elasticsearch的索引,通过在kibana中Create index pattern去匹配
#hosts 的公网ip,也可以填写docker-compose.yml中logstash的容器名如 "http://elasticsearch:9200"(前提是同属于一个docker network,且类型为bridge)
output {
elasticsearch {
hosts => ["106.52.202.31:9200"]
index => "test-%{+YYYY.MM.dd}"
}
stdout {codec => rubydebug}
}
说明:
- lo