centos7搭建EFK日志分析系統(tǒng)

前言

EFK可能都不熟悉,實際上EFK是大名鼎鼎的日志系統(tǒng)ELK的一個變種

在沒有分布式日志的時候戚篙,每次出問題了需要查詢?nèi)罩镜臅r候迹淌,需要登錄到Linux服務(wù)器,使用命令cat -n xxxx|grep xxxx 搜索出日志在哪一行剪芍,然后cat -n xxx|tail -n +n行|head -n 顯示多少行,這樣不僅效率低下窟蓝,而且對于程序異常也不方便查詢罪裹,日志少還好,一旦整合出來的日志達(dá)到幾個G或者幾十G的時候运挫,僅僅是搜索都會搜索很長時間了状共,當(dāng)然如果知道是哪天什么時候發(fā)生的問題當(dāng)然也方便查詢,但是實際上很多時候有問題的時候谁帕,是不知道到底什么時候出的問題峡继,所以就必須要在聚合日志中去搜索(一般日志是按照天來分文件的,聚合日志就是把很多天的日志合并在一起匈挖,這樣方便查詢)碾牌,而搭建EFK日志分析系統(tǒng)的目的就是將日志聚合起來康愤,達(dá)到快速查看快速分析的目的,使用EFK不僅可以快速的聚合出每天的日志舶吗,還能將不同項目的日志聚合起來征冷,對于微服務(wù)和分布式架構(gòu)來說,查詢?nèi)罩居葹榉奖憧泗妫乙驗槿罩颈4嬖贓lasticsearch中资盅,所以查詢速度非常之快

認(rèn)識EFK

EFK不是一個軟件调榄,而是一套解決方案踊赠,并且都是開源軟件,之間互相配合使用每庆,完美銜接筐带,高效的滿足了很多場合的應(yīng)用,是目前主流的一種日志系統(tǒng)缤灵。EFK是三個開源軟件的縮寫伦籍,分別表示:Elasticsearch , FileBeat, Kibana , 其中ELasticsearch負(fù)責(zé)日志保存和搜索,F(xiàn)ileBeat負(fù)責(zé)收集日志腮出,Kibana 負(fù)責(zé)界面,當(dāng)然EFK和大名鼎鼎的ELK只有一個區(qū)別帖鸦,那就是EFK把ELK的Logstash替換成了FileBeat,因為Filebeat相對于Logstash來說有2個好處:
1胚嘲、侵入低作儿,無需修改程序目前任何代碼和配置
2、相對于Logstash來說性能高馋劈,Logstash對于IO占用很大

當(dāng)然FileBeat也并不是完全好過Logstash攻锰,畢竟Logstash對于日志的格式化這些相對FileBeat好很多,F(xiàn)ileBeat只是將日志從日志文件中讀取出來妓雾,當(dāng)然如果你日志本身是有一定格式的娶吞,F(xiàn)ileBeat也可以格式化,但是相對于Logstash來說械姻,還是差一點

Elasticsearch

Elasticsearch是個開源分布式搜索引擎妒蛇,提供搜集、分析楷拳、存儲數(shù)據(jù)三大功能绣夺。它的特點有:分布式,零配置唯竹,自動發(fā)現(xiàn)乐导,索引自動分片,索引副本機制浸颓,restful風(fēng)格接口物臂,多數(shù)據(jù)源旺拉,自動搜索負(fù)載等。

FileBeat

Filebeat隸屬于Beats棵磷。目前Beats包含六種工具:
Packetbeat(搜集網(wǎng)絡(luò)流量數(shù)據(jù))
Metricbeat(搜集系統(tǒng)蛾狗、進程和文件系統(tǒng)級別的 CPU 和內(nèi)存使用情況等數(shù)據(jù))
Filebeat(搜集文件數(shù)據(jù))
Winlogbeat(搜集 Windows 事件日志數(shù)據(jù))
Auditbeat( 輕量型審計日志采集器)
Heartbeat(輕量級服務(wù)器健康采集器)

Kibana

Kibana可以為 Logstash 、Beats和 ElasticSearch 提供的日志分析友好的 Web 界面仪媒,可以幫助匯總沉桌、分析和搜索重要數(shù)據(jù)日志。

EFK架構(gòu)圖

EFK架構(gòu)圖

安裝Java JDK

Elasticsearch需要運行在Java 8 及以上算吩,所以需要先安裝Java8留凭,下載JavaJDK

wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz?AuthParam=1536892035_945cb24c750d0971b8c5b1925cc723a9

當(dāng)然如果要安裝其他Java版本,可以將wget后面的URL替換為其他版本的URL偎巢,只要版本不低于Java8就行蔼夜,下載完成后,需要查看下載的文件是后綴是tar.gz(只針對tar.gz压昼,如果是RPM或者其他格式的求冷,請自行安裝),如果文件后綴tar.gz還跟了一串代碼窍霞,則重命名文件

mv jdk-8u181-linux-x64.tar.gz\?AuthParam\=1536892035_945cb24c750d0971b8c5b1925cc723a9 jdk-8u181-linux-x64.tar.gz

解壓

tar -zxvf jdk-8u181-linux-x64.tar.gz

編輯環(huán)境變量

vi /etc/profile

在文件末尾加上

JAVA_HOME=/usr/local/jdk1.8.0_181/
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

其中/usr/local/jdk1.8.0_181/替換成自己Java jdk解壓出來的主目錄匠题,wq保存退出,使配置生效

source /etc/profile

查看是否安裝成功

java -version

如果正常輸出Java版本則安裝成功

安裝Elasticsearch

下載Elasticsearch但金,本文以Elasticsearch6.2.4為例韭山,當(dāng)前Elasticsearch最新版本為Elasticsearch6.4.0,注意Elasticsearch傲绣、Kibana掠哥、FileBeat一定要使用相同的版本

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz

解壓

tar -zxvf elasticsearch-6.2.4.tar.gz

進入Elasticsearch主目錄,修改配置

vi config/elasticsearch.yml

添加以下配置秃诵,或者將對應(yīng)的配置注釋取消修改

network.host: 0.0.0.0 
http.port: 9200

由于Elasticsearch不能使用root用戶打開续搀,所以需要專門創(chuàng)建一個用戶來啟動Elasticsearch

$ adduser elastic
#設(shè)置密碼
$ passwd elastic
#需要輸入2次密碼
#授權(quán)
$ chmod -R 777 /usr/local/elasticsearch-6.2.4
#切換用戶
$ su elastic

創(chuàng)建的用戶名為elastic,其中/usr/local/elasticsearch-6.2.4為解壓出來的Elasticsearch主目錄

啟動Elasticsearch

./bin/elasticsearch

如果遇到錯誤:max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]

vi /etc/security/limits.conf  

如果有 * soft nofile 65535 * hard nofile 65535 則將65535修改為65536菠净,如果沒有則在后面添加禁舷,注意此處的65535對應(yīng)descriptors [65535]中的65535,修改后的值65536對應(yīng)increase to at least [65536]毅往,所以當(dāng)提示不一致時牵咙,需要根據(jù)具體的錯誤提示具體修改

如果遇到錯誤: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

vi /etc/sysctl.conf

添加配置

vm.max_map_count=262144

并執(zhí)行命令

sysctl -p

以上2個修改需要在root用戶權(quán)限修改,如果是使用xshell開兩個窗口的話修改完成之后一定要斷開重新登錄一下攀唯,啟動成功用執(zhí)行命令

curl 127.0.0.1:9200  

會得到類似以下json

{
  "name" : "dQIO4Ad",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "P8KtmO3vQdactRW1jX9JnQ",
  "version" : {
    "number" : "6.2.4",
    "build_hash" : "ccec39f",
    "build_date" : "2018-04-12T20:37:28.497551Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

安裝Kibana

下載Kibana

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz

解壓

tar -zxvf kibana-6.2.4-linux-x86_64.tar.gz

進入主目錄洁桌,修改配置

vi config/kibana.yml

添加以下配置或者取消注釋并修改

elasticsearch.url: "http://localhost:9200"
server.host: "0.0.0.0"
kibana.index: ".kibana"

其中elasticsearch.url為Elasticsearch的地址,server.host默認(rèn)是localhost侯嘀,如果只是本地訪問可以默認(rèn)localhost另凌,如果需要外網(wǎng)訪問谱轨,可以設(shè)置為0.0.0.0
啟動Kibana

./bin/kibana

安裝FileBeat

下載FileBeat

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.4-linux-x86_64.tar.gz

解壓

tar -zxvf filebeat-6.2.4-linux-x86_64.tar.gz

進入主目錄,修改配置

vi filebeat.yml

找到類似以下的配置并修改


filebeat.prospectors:
- type: log
  enabled: true
  paths:
    - /var/xxx/*.log
    - /var/xxx/*.out
  multiline.pattern: ^\[
  multiline.negate: true
  multiline.match: after
setup.kibana:
  host: "localhost:5601"
output.elasticsearch:
  hosts: ["localhost:9200"]

配置一定要注意格式吠谢,是以2個空格為子級土童,里面的配置都在配置文件中,列出來的只是要修改的部分工坊,enabled默認(rèn)為false献汗,需要改成true才會收集日志。其中/var/xxx/*.log修改為自己的日志路徑王污,注意-后面有一個空格罢吃,
如果多個路徑則添加一行,一定要注意新行前面的4個空格玉掸,multiline開頭的幾個配置取消注釋就行了刃麸,是為了兼容多行日志的情況,setup.kibana中的host取消注釋司浪,根據(jù)實際情況配置地址,output.elasticsearch中的host也一樣把沼,根據(jù)實際情況配置

啟動FileBeat

./filebeat -c /usr/local/filebeat/filebeat.yml

/usr/local/filebeat/filebeat.yml為filebeat 的配置文件地址啊易,需要根據(jù)實際情況修改,啟動后FileBeat就會自動收集日志了

配置Kibana

打開瀏覽器進入http://127.0.0.1:5601饮睬,會出現(xiàn)如下頁面:

Kibana首頁

點擊Management進入配置
Kibana Management頁面

點擊進入Index Patterns
Kibana Index Patterns

如圖所示租谈,F(xiàn)ileBeat默認(rèn)創(chuàng)建的Elasticsearch索引格式為filebeat-版本號-日期,所以需要在第一個紅框的輸入框中輸入

filebeat-6.2.4-*

能匹配到Elasticsearch的索引捆愁,第二個紅框出會顯示出Elasticsearch中已有的索引割去,點擊Next step進入下一步


Kibana 選擇時間屬性

點擊Create index pattern完成配置,配置完成后點擊 Discover就能查看日志了昼丑,還能搜索呻逆,如下圖


Kibana效果圖

至此EFK就搭建完畢了
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市菩帝,隨后出現(xiàn)的幾起案子咖城,更是在濱河造成了極大的恐慌,老刑警劉巖呼奢,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宜雀,死亡現(xiàn)場離奇詭異,居然都是意外死亡握础,警方通過查閱死者的電腦和手機辐董,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來禀综,“玉大人简烘,你說我怎么就攤上這事他匪。” “怎么了夸研?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵邦蜜,是天一觀的道長。 經(jīng)常有香客問我亥至,道長悼沈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任姐扮,我火速辦了婚禮絮供,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘茶敏。我一直安慰自己壤靶,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布惊搏。 她就那樣靜靜地躺著贮乳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恬惯。 梳的紋絲不亂的頭發(fā)上向拆,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音酪耳,去河邊找鬼浓恳。 笑死,一個胖子當(dāng)著我的面吹牛碗暗,可吹牛的內(nèi)容都是我干的颈将。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼言疗,長吁一口氣:“原來是場噩夢啊……” “哼晴圾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起洲守,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤疑务,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后梗醇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體知允,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年叙谨,在試婚紗的時候發(fā)現(xiàn)自己被綠了温鸽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖涤垫,靈堂內(nèi)的尸體忽然破棺而出姑尺,到底是詐尸還是另有隱情,我是刑警寧澤蝠猬,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布切蟋,位于F島的核電站,受9級特大地震影響榆芦,放射性物質(zhì)發(fā)生泄漏柄粹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一匆绣、第九天 我趴在偏房一處隱蔽的房頂上張望驻右。 院中可真熱鬧,春花似錦崎淳、人聲如沸堪夭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽森爽。三九已至,卻和暖如春咐鹤,著一層夾襖步出監(jiān)牢的瞬間拗秘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工祈惶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扮匠。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓捧请,卻偏偏與公主長得像,于是被迫代替她去往敵國和親棒搜。 傳聞我的和親對象是個殘疾皇子疹蛉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容