前言
隨著分布式項(xiàng)目的集群部署,日志的存儲也分散開來,在日后出現(xiàn)問題進(jìn)行日志定位時就會出現(xiàn)很困難,服務(wù)器很多會做負(fù)載均衡,這樣最終請求所落在的服務(wù)器也隨機(jī)起來,所以好的方式就是集中收集起來,不需要一臺一臺服務(wù)器去查,方便查看。
一、ELFK是什么?
ELFK是Elasticsearch+Logstash+Filebeats+Kibana。
其中,ES是一個高度可擴(kuò)展的全文搜索和分析引擎,能夠?qū)Υ笕萘康臄?shù)據(jù)進(jìn)行接近實(shí)時的存儲、搜索和分析操作,通常會跟Kibana部署在一起,由Kibana提供圖形化的操作功能。LogStash是一個數(shù)據(jù)收集引擎,他可以動態(tài)的從各種數(shù)據(jù)源搜集數(shù)據(jù),并對數(shù)據(jù)進(jìn)行過濾、分析和統(tǒng)一格式等簡單操作,并將輸出結(jié)果存儲到指定位置上。但是LogStash服務(wù)過重,如果在每個應(yīng)用上都部署一個logStash,會給應(yīng)用服務(wù)器增加很大的負(fù)擔(dān)。因此,通常會在應(yīng)用服務(wù)器上,部署輕量級的filebeat組件。filebeat可以持續(xù)穩(wěn)定的收集簡單數(shù)據(jù),比如Log日志,統(tǒng)一發(fā)給logstash進(jìn)行收集后,再經(jīng)過處理存到ES。
二、搭建步驟
1.搭建的機(jī)器環(huán)境背景
我是拿了一臺Centos7的機(jī)器上用docker安裝了Elasticsearch+Logstash+Kibana,因?yàn)槲业囊恍?yīng)用部署的是在windows上,所以就把Filebeats安在了N個windows服務(wù)器上,所以這篇中filebeats安裝是windows,后續(xù)有機(jī)會再更新linux環(huán)境上。
2.安裝docker
略
3.拉取鏡像
docker pull elasticsearch:7.16.1
docker pull kibana:7.16.1
docker pull logstash:7.16.1
4.創(chuàng)建自定義網(wǎng)絡(luò)
docker network --subnet=172.18.0.0/16 create elk_net
查看創(chuàng)建的網(wǎng)絡(luò)
docker network ls
–subnet 自定義子網(wǎng)掩碼,不同的集群使用不同的網(wǎng)絡(luò),保證集群是健康和安全的
5.配置啟動Elasticsearch
建立下面文件結(jié)構(gòu)并在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 指定網(wǎng)絡(luò)
-ip 指定ip
-v 表示掛載自定義目錄,后續(xù)修改配置可以直接修改該文件進(jìn)行重啟生效。
docker ps -a
查看docker容器鏡像運(yùn)行狀況
6.配置啟動Kibana
建立下面文件結(jié)構(gòu)并在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
建立下面文件結(jié)構(gòu)并在config下
/mnt/logstash/config/pipelines.yml
/mnt/logstash/config/logstash.yml
/mnt/logstash/config/robotwx.conf(收集項(xiàng)目1)
/mnt/logstash/config/robottaskcenter.conf(收集項(xiàng)目2)
/mnt/logstash/config/robotoffice.conf(收集項(xiàng)目3)
/mnt/logstash/config/pipelines.yml
/mnt/logstash/config/logstash.yml
/mnt/logstash/config/robotwx.conf(收集項(xiàng)目1)
/mnt/logstash/config/robottaskcenter.conf(收集項(xiàng)目2)
/mnt/logstash/config/robotoffice.conf(收集項(xiàng)目3)
上述配置指的是我有3個收集的項(xiàng)目,一個項(xiàng)目使用一個管道,input 里的port是logstash的監(jiān)聽端口5044,如何在一個端口區(qū)分3個收集項(xiàng)目呢也就是3個filebeat?通過filebeat配置文件中設(shè)置[fields][name]進(jìn)行區(qū)分,下面講filebeat安裝時會說明。
1.一個filebeat對應(yīng)一個pipeline.id和一個path.config。
2.pipelines.yml中的[fields][name]對應(yīng)的是filebeat程序中的配置,path.config對應(yīng)的是robot.conf路徑。*
3.robot.conf中的address對應(yīng)的是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文件(用收集項(xiàng)目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后統(tǒng)一改成filestream
paths:對應(yīng)你想監(jiān)聽的log文件
fields:name: robottaskcenter對應(yīng)上面所講的
hosts:就是你的logstash啟動端口
其余配置見官網(wǎng)
windows下啟動filebeats
cd C:\Program Files\Elastic\Beats\7.16.1\filebeat
filebeat.exe -c filebeat.yml -e
打印沒有error就是成功了
三、Kibana中建立索引進(jìn)行查看
點(diǎn)擊discover可以看到你創(chuàng)建的索引,刷新就能看到日志了。文章來源:http://www.zghlxwxcb.cn/news/detail-719932.html
總結(jié)
到這就結(jié)束了,logstash+filebeat部署起來確實(shí)費(fèi)了些勁,涉及到對日志的過濾暫時還沒有研究,中間也遇到很多問題記錄一下,有問題的地方可以互相交流指正。文章來源地址http://www.zghlxwxcb.cn/news/detail-719932.html
到了這里,關(guān)于docker搭建最新ELFK分布式日志收集系統(tǒng)(elasticsearch+logstash+filebeats+kibana7.16.1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!