linux EFK搭建教程(Elasticsearch+Filebeat+Logstash+Kibana)
官网链接
创建一个docker network用于efk各组件间网络的互通
docker network create efk
安装Elasticsearch
1、拉取镜像
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.15.1
2、查看镜像
docker images
3、运行容器启动 Elasticsearch
docker run -d --name es --net=efk -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" fa601f7c24cb
3.1、参数解释:
-d:后台启动
--name:容器名称
-p:端口映射
-e:设置环境变量
--net: 指定docker network
discovery.type=single-node:单机运行
fa601f7c24cb:镜像id
如果启动不了,可以加大内存设置:-e ES_JAVA_OPTS="-Xms512m -Xmx512m"
3.2、使用 docker ps 命令查看容器状态
3.3、访问 Elasticsearch 地址(注:访问前先关闭防火墙)
安装kibana
1、拉取镜像
docker pull docker.elastic.co/kibana/kibana:7.15.1
2、启动镜像
docker run --name kib --net efk -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://es:9200" 9871707dda25
3、访问kibana
Logstash安装
1、拉取镜像
docker pull docker.elastic.co/logstash/logstash:7.15.1
2、新建目录放置logstash配置文件
mkdir /usr/local/docker/efk/logstash/config /usr/local/docker/efk/logstash/pipeline /usr/local/docker/efk/logstash/config/patterns
3、配置yml文件
- 在config目录进行新建
logstash.yml和pipelines.yml,logstash.conf文件 - 在config/patterns目录新建
patterns文件 logstash.yml配置内容
config:
reload:
automatic: true
interval: 3s
xpack:
management.enabled: false
monitoring.enabled: false
pipelines.yml配置内容
- pipeline.id: logstash
path.config: "/usr/share/logstash/config/logstash.conf"
logstash.conf配置内容
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
beats {
port => 5044
}
}
filter {
if "slf4j-log" in [tags] {
grok {
patterns_dir => ["/usr/share/logstash/config/patterns"]
match => {
"message" => "%{DATE:time} %{JAVA_SOURCE:source1} %{LEVEL:level} %{JAVALOGMESSAGE:doc}"
}
}
}
}
output {
if "slf4j-log" in [tags] {
elasticsearch {
hosts => ["http://es:9200"]
index => "%{[fields][app_id]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
}
patterns配置内容
DATE [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}
LEVEL (INFO)|(DEBUG)|(ERROR)|(WARN)|(FATAL)
JAVA_SOURCE [a-zA-Z.<>():0-9]*
4、启动镜像
docker run -d -it --restart=always --privileged=true --name=logstash --net efk -p 5047:5047 -p 9600:9600 -v /usr/local/docker/efk/logstash/pipeline:/usr/share/logstash/pipeline/ -v /usr/local/docker/efk/logstash/config:/usr/share/logstash/config/ 852762e1f73f
安装Filebeat
1、拉取镜像
docker pull docker.elastic.co/beats/filebeat:7.15.1
2、新建配置文件filebeat.docker.yml,内容如下:
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/docker/efk/log/*.log
fields:
app_id: pay
tags: [slf4j-log]
multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
#日志输出配置(采用 logstash 收集日志,5044为logstash端口)
output.logstash:
hosts: ['logstash:5044']
3.启动镜像
docker run --restart=always --net=efk --name filebeat -d -v /usr/local/docker/efk/log:/usr/local/docker/efk/log -v /usr/local/docker/efk/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml 311985fdcf7c
配置数据可视化
1、打开kibana配置页面创建index patterns
2、进入Discover
可以看到收集的日志信息