linux EFK搭建教程

1,700 阅读2分钟

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

image.png

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 命令查看容器状态

image.png

3.3、访问 Elasticsearch 地址(注:访问前先关闭防火墙)

image.png

安装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

image.png

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.ymlpipelines.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

image.png

image.png

2、进入Discover

image.png 可以看到收集的日志信息

image.png