ELK6.0部署:Elasticsearch+Logstash+Kibana搭建分布式日志平臺(tái)

一城须、前言

1次洼、ELK簡介

ELK是Elasticsearch+Logstash+Kibana的簡稱

ElasticSearch是一個(gè)基于Lucene的分布式全文搜索引擎,提供 RESTful API進(jìn)行數(shù)據(jù)讀寫

Logstash是一個(gè)收集,處理和轉(zhuǎn)發(fā)事件和日志消息的工具

Kibana是Elasticsearch的開源數(shù)據(jù)可視化插件搓译,為查看存儲(chǔ)在ElasticSearch提供了友好的Web界面,并提供了條形圖锋喜,線條和散點(diǎn)圖些己,餅圖和地圖等分析工具

總的來說,ElasticSearch負(fù)責(zé)存儲(chǔ)數(shù)據(jù)嘿般,Logstash負(fù)責(zé)收集日志段标,并將日志格式化后寫入ElasticSearch,Kibana提供可視化訪問ElasticSearch數(shù)據(jù)的功能炉奴。

2逼庞、ELK工作流

應(yīng)用將日志按照約定的Key寫入Redis,Logstash從Redis中讀取日志信息寫入ElasticSearch集群瞻赶。Kibana讀取ElasticSearch中的日志静尼,并在Web頁面中以表格/圖表的形式展示滓玖。

二、準(zhǔn)備工作

1、服務(wù)器&軟件環(huán)境說明

服務(wù)器

一共準(zhǔn)備3臺(tái)CentOS7 Server

服務(wù)器名IP說明

es1192.168.1.31部署ElasticSearch主節(jié)點(diǎn)

es2192.168.1.32部署ElasticSearch從節(jié)點(diǎn)

elk192.168.1.21部署Logstash + Kibana + Redis

這里為了節(jié)省恬口,只部署2臺(tái)Elasticsearch痴施,并將Logstash + Kibana + Redis部署在了一臺(tái)機(jī)器上津滞。

如果在生產(chǎn)環(huán)境部署类早,可以按照自己的需求調(diào)整。

軟件環(huán)境

項(xiàng)說明

Linux ServerCentOS 7

Elasticsearch6.0.0

Logstash6.0.0

Kibana6.0.0

Redis4.0

JDK1.8

2篓像、ELK環(huán)境準(zhǔn)備

由于Elasticsearch动知、Logstash、Kibana均不能以root賬號(hào)運(yùn)行遗淳。

但是Linux對(duì)非root賬號(hào)可并發(fā)操作的文件拍柒、線程都有限制。

所以屈暗,部署ELK相關(guān)的機(jī)器都要調(diào)整:

修改文件限制

# 修改系統(tǒng)文件vi /etc/security/limits.conf#增加的內(nèi)容* soft nofile 65536* hard nofile 65536* soft nproc 2048* hard nproc 4096

調(diào)整進(jìn)程數(shù)

#修改系統(tǒng)文件vi /etc/security/limits.d/20-nproc.conf#調(diào)整成以下配置*? ? ? ? ? soft? ? nproc? ? 4096root? ? ? soft? ? nproc? ? unlimited

調(diào)整虛擬內(nèi)存&最大并發(fā)連接

#修改系統(tǒng)文件vi /etc/sysctl.conf#增加的內(nèi)容vm.max_map_count=655360fs.file-max=655360

保存之后執(zhí)行 sysctl -p 生效

JDK8安裝

CentO安裝JDK8:https://ken.io/note/centos-java-setup

創(chuàng)建ELK專用用戶

useradd elk

創(chuàng)建ELK相關(guān)目錄并賦權(quán)

#創(chuàng)建ELK APP目錄mkdir /usr/elk#創(chuàng)建ELK 數(shù)據(jù)目錄mkdir /elk#更改目錄Ownerchown -R elk:elk /usr/elkchown -R elk:elk /elk

下載ELK包并解壓

https://www.elastic.co/downloads

#打開文件夾cd/home/download#下載wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.tar.gzwget https://artifacts.elastic.co/downloads/logstash/logstash-6.0.0.tar.gzwget wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-linux-x86_64.tar.gz#解壓tar -zvxf elasticsearch-6.0.0.tar.gztar -zvxf logstash-6.0.0.tar.gztar -zvxf kibana-6.0.0-linux-x86_64.tar.gz

三拆讯、Elasticsearch 部署

本次一共要部署兩個(gè)Elasticsearch節(jié)點(diǎn),所有文中沒有指定機(jī)器的操作都表示每個(gè)Elasticsearch機(jī)器都要執(zhí)行該操作

1养叛、準(zhǔn)備工作

移動(dòng)Elasticsearch到統(tǒng)一目錄

#移動(dòng)目錄mv /home/download/elasticsearch-6.0.0 /usr/elk#賦權(quán)chown -R elk:elk /usr/elk/elasticsearch-6.0.0/

開放端口

#增加端口firewall-cmd --add-port=9200/tcp --permanentfirewall-cmd --add-port=9300/tcp --permanent#重新加載防火墻規(guī)則firewall-cmd --reload

切換賬號(hào)

#賬號(hào)切換到 elksu - elk

數(shù)據(jù)&日志目錄

創(chuàng)建Elasticsearch主目錄mkdir /elk/es#創(chuàng)建Elasticsearch數(shù)據(jù)目錄mkdir /elk/es/data#創(chuàng)建Elasticsearch日志目錄mkdir /elk/es/logs

2种呐、Elasticsearch 配置

修改配置

#打開目錄cd/usr/elk/elasticsearch-6.0.0#修改配置vi config/elasticsearch.yml

主節(jié)點(diǎn)配置(192.168.1.31)

cluster.name: es node.name: es1path.data: /elk/es/datapath.logs: /elk/es/logsnetwork.host: 192.168.1.31http.port: 9200transport.tcp.port: 9300node.master:truenode.data:truediscovery.zen.ping.unicast.hosts: ["192.168.1.31:9300","192.168.1.32:9300"]discovery.zen.minimum_master_nodes: 1

從節(jié)點(diǎn)配置(192.168.1.32)

cluster.name: es node.name: es2path.data: /elk/es/datapath.logs: /elk/es/logsnetwork.host: 192.168.1.32http.port: 9200transport.tcp.port: 9300node.master:falsenode.data:truediscovery.zen.ping.unicast.hosts: ["192.168.1.31:9300","192.168.1.32:9300"]discovery.zen.minimum_master_nodes: 1

配置項(xiàng)說明

項(xiàng)說明

cluster.name集群名

node.name節(jié)點(diǎn)名

path.data數(shù)據(jù)保存目錄

path.logs日志保存目錄

network.host節(jié)點(diǎn)host/ip

http.portHTTP訪問端口

transport.tcp.portTCP傳輸端口

node.master是否允許作為主節(jié)點(diǎn)

node.data是否保存數(shù)據(jù)

discovery.zen.ping.unicast.hosts集群中的主節(jié)點(diǎn)的初始列表,當(dāng)節(jié)點(diǎn)(主節(jié)點(diǎn)或者數(shù)據(jù)節(jié)點(diǎn))啟動(dòng)時(shí)使用這個(gè)列表進(jìn)行探測

discovery.zen.minimum_master_nodes主節(jié)點(diǎn)個(gè)數(shù)

2、Elasticsearch啟動(dòng)&健康檢查

啟動(dòng)

#進(jìn)入elasticsearch根目錄cd/usr/elk/elasticsearch-6.0.0#啟動(dòng)./bin/elasticsearch

查看健康狀態(tài)

curl http://192.168.1.31:9200/_cluster/health

如果返回status=green表示正常

{"cluster_name":"esc","status":"green","timed_out":false,"number_of_nodes":2,"number_of_data_nodes":2,"active_primary_shards":0,"active_shards":0,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":0,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":100.0}

四弃甥、Logstash 配置

1爽室、準(zhǔn)備工作

部署Redis

Redis4 安裝與配置:https://ken.io/note/centos7-redis4-setup

由于本次核心是ELK搭建,所以ken.io偷懶淆攻,Redis沒有部署集群阔墩,采用的單節(jié)點(diǎn)嘿架。

移動(dòng)Logstash到統(tǒng)一目錄

#移動(dòng)目錄mv /home/download/logstash-6.0.0 /usr/elk#賦權(quán)chown -R elk:elk /usr/elk/logstash-6.0.0/

切換賬號(hào)

#賬號(hào)切換到 elksu - elk

數(shù)據(jù)&日志目錄

#創(chuàng)建Logstash主目錄mkdir /elk/logstash#創(chuàng)建Logstash數(shù)據(jù)目錄mkdir /elk/logstash/data#創(chuàng)建Logstash日志目錄mkdir /elk/logstash/logs

2、Logstash配置

配置數(shù)據(jù)&日志目錄

#打開目錄cd/usr/elk/logstash-6.0.0#修改配置vi config/logstash.yml#增加以下內(nèi)容path.data: /elk/logstash/datapath.logs: /elk/logstash/logs

配置Redis&Elasticsearch

vi config/input-output.conf#配置內(nèi)容input {? redis {? ? data_type =>"list"key =>"logstash"host =>"192.168.1.21"port => 6379? ? threads => 5? ? codec =>"json"}}filter {}output {? elasticsearch {? ? hosts => ["192.168.1.31:9200","192.168.1.32:9200"]? ? index =>"logstash-%{type}-%{+YYYY.MM.dd}"document_type =>"%{type}"}? stdout {? }}

該配置就是從redis中讀取數(shù)據(jù)啸箫,然后寫入指定的elasticsearch

Redis核心配置項(xiàng)說明:

配置項(xiàng)說明

data_type => “l(fā)ist”數(shù)據(jù)類型為list

key => “l(fā)ogstash”緩存key為:logstash

codec => “json”數(shù)據(jù)格式為:json

啟動(dòng)

#進(jìn)入Logstash根目錄cd/usr/elk/logstash-6.0.0#啟動(dòng)./bin/logstash -f config/input-output.conf

啟動(dòng)成功后耸彪,在啟動(dòng)輸出的最后一行會(huì)看到如下信息:

[INFO ][logstash.pipeline? ? ? ? ] Pipeline started {"pipeline.id"=>"main"}[INFO ][logstash.agent? ? ? ? ? ] Pipelines running {:count=>1, :pipelines=>["main"]}

五、Kibana 配置

移動(dòng)Kibana到統(tǒng)一目錄

#移動(dòng)目錄mv /home/download/kibana-6.0.0-linux-x86_64 /usr/elk/kibana-6.0.0#賦權(quán)chown -R elk:elk /usr/elk/kibana-6.0.0/

開放端口

#增加端口firewall-cmd --add-port=5601/tcp --permanent#重新加載防火墻規(guī)則firewall-cmd --reload

切換賬號(hào)

#賬號(hào)切換到 elksu - elk

修改配置

#進(jìn)入kibana-6.0.0根目錄cd/usr/elk/kibana-6.0.0#修改配置vi config/kibana.yml#增加以下內(nèi)容server.port: 5601server.host:"192.168.1.21"elasticsearch.url:"http://192.168.1.31:9200"

啟動(dòng)

#進(jìn)入kibana-6.0.0根目錄cd /usr/elk/kibana-6.0.0#啟動(dòng)./bin/kibana

訪問

瀏覽器訪問: 192.168.1.21:5601

警告提示:No default index pattern. You must select or create one to continue.

錯(cuò)誤提示:Unable to fetch mapping. do you have indices matching the pattern?

不用擔(dān)心忘苛,這是因?yàn)檫€沒有寫入日志

六蝉娜、測試

1、日志寫入

日歷寫入的話扎唾,寫入到logstash監(jiān)聽的redis即可召川。

數(shù)據(jù)類型之前在/usr/elk/logstash-6.0.0/config/input-uput.conf中有配置

redis命令方式

#啟動(dòng)redis客戶端#執(zhí)行以下命令lpushlogstash '{"host":"127.0.0.1","type":"logtest","message":"hello"}'

Java代碼批量寫入(引入Jedis)

Jedis jedis =newJedis("192.168.1.21",6379);for(inti =0; i <1000; i++) {? ? jedis.lpush("logstash","{\"host\":\"127.0.0.1\",\"type\":\"logtest\",\"message\":\""+ i +"\"}");}

2、Kibana使用

瀏覽器訪問:192.168.1.21:5601

此時(shí)會(huì)提示:?Configure an index pattern

直接點(diǎn)擊create即可

瀏覽器訪問:192.168.1.21:5601/app/kibana#/discover 即可查看日志

大功告成胸遇!

七荧呐、備注

1、Kibana使用教程

https://segmentfault.com/a/1190000002972420

2狐榔、 ELK開機(jī)啟動(dòng)

ELK開機(jī)啟動(dòng)坛增,需要學(xué)習(xí)下以下知識(shí)

nohup命令使用:https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html

自定義系統(tǒng)服務(wù),可以參考Redis的開機(jī)啟動(dòng):https://ken.io/note/centos7-redis4-setup

本文由?ken.io?創(chuàng)作薄腻,采用CC BY 3.0 CN協(xié)議?進(jìn)行許可。 可自由轉(zhuǎn)載届案、引用庵楷、甚至修改,但需署名作者且注明出處楣颠。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末尽纽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子童漩,更是在濱河造成了極大的恐慌弄贿,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矫膨,死亡現(xiàn)場離奇詭異差凹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)侧馅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門危尿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人馁痴,你說我怎么就攤上這事谊娇。” “怎么了罗晕?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵济欢,是天一觀的道長赠堵。 經(jīng)常有香客問我,道長法褥,這世上最難降的妖魔是什么茫叭? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮挖胃,結(jié)果婚禮上杂靶,老公的妹妹穿的比我還像新娘。我一直安慰自己酱鸭,他們只是感情好吗垮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凹髓,像睡著了一般烁登。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蔚舀,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天饵沧,我揣著相機(jī)與錄音,去河邊找鬼赌躺。 笑死狼牺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的礼患。 我是一名探鬼主播是钥,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼缅叠!你這毒婦竟也來了悄泥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤肤粱,失蹤者是張志新(化名)和其女友劉穎弹囚,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體领曼,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鸥鹉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悯森。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宋舷。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瓢姻,靈堂內(nèi)的尸體忽然破棺而出祝蝠,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布绎狭,位于F島的核電站细溅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏儡嘶。R本人自食惡果不足惜喇聊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蹦狂。 院中可真熱鬧誓篱,春花似錦、人聲如沸凯楔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽摆屯。三九已至邻遏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間虐骑,已是汗流浹背准验。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留廷没,地道東北人糊饱。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像颠黎,于是被迫代替她去往敵國和親济似。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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