前言
随着分布式项目的集群部署,日志的存储也分散开来,在日后出现问题进行日志定位时就会出现很困难,服务器很多会做负载均衡,这样最终请求所落在的服务器也随机起来,所以好的方式就是集中收集起来,不需要一台一台服务器去查,方便查看。
一、ELFK是什么?
ELFK是Elasticsearch+Logstash+Filebeats+Kibana。
其中,ES是一个高度可扩展的全文搜索和分析引擎,能够对大容量的数据进行接近实时的存储、搜索和分析操作,通常会跟Kibana部署在一起,由Kibana提供图形化的操作功能。LogStash是一个数据收集引擎,他可以动态的从各种数据源搜集数据,并对数据进行过滤、分析和统一格式等简单操作,并将输出结果存储到指定位置上。但是LogStash服务过重,如果在每个应用上都部署一个logStash,会给应用服务器增加很大的负担。因此,通常会在应用服务器上,部署轻量级的filebeat组件。filebeat可以持续稳定的收集简单数据,比如Log日志,统一发给logstash进行收集后,再经过处理存到ES。
二、搭建步骤
1.搭建的机器环境背景
我是拿了一台Centos7的机器上用docker安装了Elasticsearch+Logstash+Kibana,因为我的一些应用部署的是在windows上,所以就把Filebeats安在了N个windows服务器上,所以这篇中filebeats安装是windows,后续有机会再更新linux环境上。
2.安装docker
略
3.拉取镜像
docker pull elasticsearch:7.16.1
docker pull kibana:7.16.1
docker pull logstash:7.16.1
4.创建自定义网络
docker network --subnet=172.18.0.0/16 create elk_net
查看创建的网络
docker network ls
–subnet 自定义子网掩码,不同的集群使用不同的网络,保证集群是健康和安全的
5.配置启动Elasticsearch
建立下面文件结构并在config下新建elasticsearch.yml
接着启动es
docker run -it --privileged=true -d -p 9200:9200 -p 9300:9300 --name es --net elk_net --ip 172.18.0.2 -v /mnt/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /mnt/elasticsearch/data:/usr/share/elasticsearch/data -v /mnt/elasticsearch/logs:/usr/share/elasticsearch/logs -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" elasticsearch:7.16.1
-name 取别名
–net 指定网络
-ip 指定ip
-v 表示挂载自定义目录,后续修改配置可以直接修改该文件进行重启生效。
docker ps -a
查看docker容器镜像运行状况
6.配置启动Kibana
建立下面文件结构并在config下新建kibana.yml
启动kibana
docker run -d --privileged=true --name kibana -p 5601:5601 --net elk_net --ip 172.18.0.4 -v /mnt/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.16.1
浏览器访问kibana成功!
7.配置启动Logstash
建立下面文件结构并在config下
/mnt/logstash/config/pipelines.yml
/mnt/logstash/config/logstash.yml
/mnt/logstash/config/robotwx.conf(收集项目1)
/mnt/logstash/config/robottaskcenter.conf(收集项目2)
/mnt/logstash/config/robotoffice.conf(收集项目3)
/mnt/logstash/config/pipelines.yml
/mnt/logstash/config/logstash.yml
/mnt/logstash/config/robotwx.conf(收集项目1)
/mnt/logstash/config/robottaskcenter.conf(收集项目2)
/mnt/logstash/config/robotoffice.conf(收集项目3)
上述配置指的是我有3个收集的项目,一个项目使用一个管道,input 里的port是logstash的监听端口5044,如何在一个端口区分3个收集项目呢也就是3个filebeat?通过filebeat配置文件中设置[fields][name]进行区分,下面讲filebeat安装时会说明。
1.一个filebeat对应一个pipeline.id和一个path.config。
2.pipelines.yml中的[fields][name]对应的是filebeat程序中的配置,path.config对应的是robot.conf路径。*
3.robot.conf中的address对应的是pipelines.yml中的output中的send_to。*
配置好filebeats后启动logstash。
docker run -d -it --privileged=true --name=logstash --net elk_net
--ip 172.18.0.3 -p 5047:5047 -p 5044:5044 -p 9600:9600
-v /mnt/logstash/config/:/usr/share/logstash/config
-v /mnt/nginx/logs/:/usr/share/logs/ logstash:7.16.1
8.配置启动filebeat(windows)
下载filebeat-7.16.1安装
在C:\Program Files\Elastic\Beats\7.16.1\filebeat中修改filebeat.yml文件(用收集项目2举例)
###################### Filebeat Configuration Example #########################
# This file is an example configuration file highlighting only the most common
# options. The filebeat.reference.yml file from the same directory contains all the
# supported options with more comments. You can use it as a reference.
#
# You can find the full configuration reference here:
# https://www.elastic.co/guide/en/beats/filebeat/index.html
# For more available modules and options, please see the filebeat.reference.yml sample
# configuration file.
# ============================== Filebeat inputs ===============================
filebeat.inputs:
# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.
# filestream is an input for collecting log messages from files.
- type: filestream
# Change to true to enable this input configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- C:\Users\Administrator\Desktop\wxTest\taskCenter_robot.log
fields:
name: robottaskcenter
# ================================== Outputs ===================================
# Configure what output to use when sending the data collected by the beat.
# ------------------------------ Logstash Output -------------------------------
output.logstash:
# The Logstash hosts
hosts: ["10.12.2.113:5044"]
type:7.16后统一改成filestream
paths:对应你想监听的log文件
fields:name: robottaskcenter对应上面所讲的
hosts:就是你的logstash启动端口
其余配置见官网
windows下启动filebeats
cd C:\Program Files\Elastic\Beats\7.16.1\filebeat
filebeat.exe -c filebeat.yml -e
打印没有error就是成功了
三、Kibana中建立索引进行查看
点击discover可以看到你创建的索引,刷新就能看到日志了。文章来源:https://www.toymoban.com/news/detail-719932.html
总结
到这就结束了,logstash+filebeat部署起来确实费了些劲,涉及到对日志的过滤暂时还没有研究,中间也遇到很多问题记录一下,有问题的地方可以互相交流指正。文章来源地址https://www.toymoban.com/news/detail-719932.html
到了这里,关于docker搭建最新ELFK分布式日志收集系统(elasticsearch+logstash+filebeats+kibana7.16.1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!