Linux搭建ELK日志收集系統(tǒng)構(gòu)建:Filebeat+Redis+Logstash+Elasticse
一、ELK概述:
ELK是一組開源軟件的簡稱,其包括Elasticsearch、Logstash 和 Kibana。ELK最近幾年發(fā)展迅速,已經(jīng)成為目前最流行的集中式日志解決方案。
Elasticsearch: 能對大容量的數(shù)據(jù)進行接近實時的存儲,搜索和分析操作。 本項目中主要通過Elasticsearch存儲所有獲取的日志。
Logstash: 數(shù)據(jù)收集引擎,它支持動態(tài)的的從各種數(shù)據(jù)源獲取數(shù)據(jù),并對數(shù)據(jù)進行過濾,分析,豐富,統(tǒng)一格式等操作,然后存儲到用戶指定的位置。
Kibana: 數(shù)據(jù)分析與可視化平臺,對Elasticsearch存儲的數(shù)據(jù)進行可視化分析,通過表格的形式展現(xiàn)出來。
Filebeat: 輕量級的開源日志文件數(shù)據(jù)搜集器。通常在需要采集數(shù)據(jù)的客戶端安裝Filebeat,并指定目錄與日志格式,Filebeat就能快速收集數(shù)據(jù),并發(fā)送給logstash進行解析,或是直接發(fā)給Elasticsearch存儲。
Redis:NoSQL數(shù)據(jù)庫(key-value),也數(shù)據(jù)輕型消息隊列,不僅可以對高并發(fā)日志進行削峰還可以對整個架構(gòu)進行解耦。
二、新型ELK框架
?
三、部署過程
1、客戶端安裝filebeat
早期的ELK架構(gòu)中使用Logstash收集、解析日志,但是Logstash對內(nèi)存、cpu、io等資源消耗比較高。相比Logstash,Beats所占系統(tǒng)的CPU和內(nèi)存幾乎可以忽略不計。
Filebeat是用于轉(zhuǎn)發(fā)和集中日志數(shù)據(jù)的輕量級傳送工具。Filebeat監(jiān)視您指定的日志文件或位置,收集日志事件,并將它們轉(zhuǎn)發(fā)到Elasticsearch或 Logstash進行索引。
(2)filebeat的工作原理
啟動Filebeat時,它將啟動一個或多個輸入,這些輸入將在為日志數(shù)據(jù)指定的位置中查找。對于Filebeat所找到的每個日志,F(xiàn)ilebeat都會啟動收集器。每個收集器都讀取單個日志以獲取新內(nèi)容,并將新日志數(shù)據(jù)發(fā)送到libbeat,libbeat將聚集事件,并將聚集的數(shù)據(jù)發(fā)送到為Filebeat配置的輸出。
工作流程圖如下。
?
從圖中所示,filebeat結(jié)構(gòu):由兩個組件構(gòu)成,分別是inputs(輸入)和harvesters(收集器),這些組件一起工作來跟蹤文件并將事件數(shù)據(jù)發(fā)送到您指定的輸出,harvester負責(zé)讀取單個文件的內(nèi)容。harvester逐行讀取每個文件,并將內(nèi)容發(fā)送到輸出。為每個文件啟動一個harvester。harvester負責(zé)打開和關(guān)閉文件,這意味著文件描述符在harvester運行時保持打開狀態(tài)。如果在收集文件時刪除或重命名文件,F(xiàn)ilebeat將繼續(xù)讀取該文件。這樣做的副作用是,磁盤上的空間一直保留到harvester關(guān)閉。默認情況下,F(xiàn)ilebeat保持文件打開,直到達到close_inactive。
關(guān)閉harvester可以會產(chǎn)生的結(jié)果:
文件處理程序關(guān)閉,如果harvester仍在讀取文件時被刪除,則釋放底層資源。
只有在scan_frequency結(jié)束之后,才會再次啟動文件的收集。
如果該文件在harvester關(guān)閉時被移動或刪除,該文件的收集將不會繼續(xù)。
(3)filebeat的安裝
通過wget獲取filebeat的tar.gz包。
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.2-linux-x86_64.tar.gz
命令執(zhí)行結(jié)果如下。
?
在/home目錄下建立filebeat目錄,然后把filebeat的壓縮包解壓到目錄filebeat下。
?
解壓后,在/usr/filebeat的對應(yīng)版本filebeat目錄下,編輯file--beat.yml文件。
修改的內(nèi)容有加幾個字段。
enabled:true
paths:程序日志路徑
output.redis:日志輸出地方
hosts:redis所在服務(wù)器IP
port:redis端口
key:redis中的key
①filebeat.input中的enabled改為true
②注意input的paths:-/var/log/*.log,其目的監(jiān)控var中的log日志。
③將output.elasticsearch內(nèi)容注釋。將輸出內(nèi)容輸出到redis中,redis數(shù)據(jù)的key值是filebeat,輸出參數(shù)中的db是寫入redis數(shù)據(jù)庫中是哪一個庫。
內(nèi)容如下。
?
?
接下來停止防火墻。
systemctl disable firewalld.service
systemctl stop firewalld.service
?
再關(guān)閉selinux。
進入到etc,再進入到selinux目錄下,編輯config文件,注釋掉SELINUX相關(guān)內(nèi)容。
?
2、安裝redis
yum install -y redis
?
安裝成功后,如下圖。
?
然后,進入etc目錄下,編輯redis.conf文件。
?
將地址綁定設(shè)定為0.0.0.0,即任何地址IP都可以登錄redis。
?
啟動filebeat。
在filebeat的目錄下執(zhí)行:
./filebeat -e -c filebeat.yml
?
然后啟動redis,主要是查看filebeat的log數(shù)據(jù)是否被redis接收。
?
redis-cli進入redis 的命令行方式。
?
進入redis查看是否有數(shù)據(jù)
keys *可以看看所有key,此操作為慢查詢,若redis跑了大量線上業(yè)務(wù)請不要進行此操作。
?
lrange filebeat 0 -1 查詢key所有的數(shù)據(jù),若filebeat啟動時間過長請勿進行此操作。
?
3、安裝jdk
首先在/usr中創(chuàng)建目錄java。如下圖所示。
?
然后在/home/soft目錄下將jdk的tar包解壓到/usr的java目錄下。
在/etc目錄下編輯profile文件,設(shè)置環(huán)境變量。?
接下來,source一下profile文件,使設(shè)置生效。
?
4、安裝elasticsearch
在/home/soft 目錄下拷貝elasticsearch文件夾,將文件夾拷貝到/usr目錄下并重命名elasticsearch。
?
因為root用戶不能啟動,所以需要創(chuàng)建一個ES用戶。
創(chuàng)建用戶使用
useradd es
如下圖。
?
給用戶添加密碼使用
passwd es
如下圖。
?
給用戶授權(quán)。
chown -R es:es elasticsearch
?
接下來切換用戶。
su es
?
在elasticsearch目錄下編輯文件elasticsearch.yml
將xpack.security.enabled和xpack.security.http.ssl設(shè)為false
如下圖。
#ES監(jiān)聽地址任意IP都可訪問
network.host: 0.0.0.0
http.port: 9200
?
#若是集群,可在里面引號中添加,逗號隔開
discovery.zen.ping.unicast.hosts: [“192.168.3.205”]
?
# enable cors,保證_site類的插件可以訪問es
http.cors.enabled: true #手動添加
http.cors.allow-origin: “*” #手動添加
進入elasticsearch的文件夾,啟動elasticsearch,需要注意的是啟動elasticsearch需要注意bin下面elasticsearch文件的執(zhí)行權(quán)限。
兩點:
(1)切換到es用戶。su es
(2)為elasticsearch添加執(zhí)行權(quán)限
Chmod +X elasticsearch
?
接下來,啟動elasticsearch就可以啟動elasticsearch程序了。
?
不過啟動時,報錯。
?
其原因在于虛擬機內(nèi)存太小。需要設(shè)置etc下的文件sysctl.conf文件。
?
在文件的最后一行添加內(nèi)容,vm.maxmapcount=262144
設(shè)置虛擬機內(nèi)存的大小后,再次重啟機器,啟動./elasticsearch,最終啟動elasticsearch的結(jié)果如下圖所示。
?
至此,elasticsearch已啟動成功。
5、安裝logstash
首先在usr的目錄下建立文件夾logstash
?
把home目錄下soft目錄下的logstash的壓縮包解壓到/usr/logstash目錄下。
?
解壓后可以測試logstash,測試腳本如下。
logstash -e “input {stdin{}} output {stdout{}}”
Stdin是基本的輸入,stdout是基本的輸出。
注意,logstash也需要jdk8.0的支持。在centos中的logstash目錄的bin目錄下,執(zhí)行./logstash。執(zhí)行測試指令如下。
?
此時輸入任何一個語句,輸出當前時間及后面的語句。如下圖。
?
這里可以將輸出限定為指定的格式。
logstash -e “iniput{stdin{}} output {stdout{codec=>rubydebug}}”
這里的輸出code=>rubydebug指出了一種特定的輸出格式。
如下圖所示。
?
從圖中所示,logstash已經(jīng)顯示Successfully started,表示logstash已經(jīng)啟動成功。
輸入”this is a book”,輸出會有一定的格式,如下圖所示。
?
設(shè)定logstash的輸入為Redis,輸出為ES,將此設(shè)置存儲成文件,文件內(nèi)容如下。
input{
redis{
port=>”6379”
host=>”192.168.110.150”,
data_type=>”list”,
type=>”log”,
key=>”filebeat”
}
}
output{
elasticsearch{
host=>”192.168.110.150:9200”
index=>”logstash1-%{+YYYY.MM.dd}”
}
}
logstash加載文件可以通過-f來實現(xiàn)。具體執(zhí)行指令如下。
?
最終顯示started,如下圖所示。
?
6、檢查redis中的keys值,是否被logstash取走。
打開終端,進入redis-cli,在命令行中輸入keys *,可以查看log日志是否被logstash取走。如下圖所示。
?
可以發(fā)現(xiàn),redis終端中的“filebeat”鍵已經(jīng)被logstash取走。
7、驗證ES是否接收到數(shù)據(jù)。
使用curl指令查看ES中是否已接收到數(shù)據(jù)。
curl http://192.168.110.150:9200/_search?pretty
如下圖所示。
?
從結(jié)果上看,logstash已經(jīng)把數(shù)據(jù)推送到ES中。
8、安裝node.
安裝node是安裝elasticsearch-head的前提條件。
安裝node可以使用yum install -y nodejs,如下圖。
?
安裝后,可以使用node -v查看安裝是否成功。
?
安裝nodejs后,安裝npm
yum install -y npm
?
安裝后,可以驗證npm的版本號
npm -v
?
9、安裝elasticsearch-head插件
進入home/soft中的elasticsearch-head-master的文件夾。
?
?
然后執(zhí)行npm install方法,安裝elasticsearch-head插件。
安裝結(jié)束后,npm run start啟動elasticsearch-head的服務(wù)。
10、安裝kibana
解壓目錄文件,把home/soft目錄中的kibana壓縮文件解壓到/usr的kibana目錄下。
?
解壓成功后,在usr/kibana目錄下有一個文件kibana-5.3.1-x86_64,在其目錄下有一個配置目錄config。編輯其下面的配置文件kibana.yml。
?
在kabana.yml打開一些配置前的#號,并修改內(nèi)容如下。
??
?
?
?
注意配置文件中,每個“:”號后面有空格。
最后啟動kibana服務(wù),進入到/usr/kibana目錄下,再進入kibana-5.3.1-linux-x86_64,再進入bin目錄中,使用./kibana命令,啟動kibana。
?
訪問http://192.168.110.150:5601,出現(xiàn)kibaba的界面如下。
過一陣,kibana頁面發(fā)生變化。如下圖所示。
?
在Index name or pattern中輸入與ES中索引相匹配的ES數(shù)據(jù)。同時選擇Time-fileld-name,Time-field-name會存在默認項。點擊“create”進入下一項。
?
通過地址http://192.168.110.150:5601/status可以查看kibana的運行情況。
?
正常情況下,點擊Discover可以顯示具體的圖像。
?
異常情況如下圖。
文章來源:http://www.zghlxwxcb.cn/news/detail-527581.html
至此,設(shè)置結(jié)束。?文章來源地址http://www.zghlxwxcb.cn/news/detail-527581.html
到了這里,關(guān)于Linux搭建ELK日志收集系統(tǒng)構(gòu)建:Filebeat+Redis+Logstash+Elasticse的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!