2017 12-01 ELK的應(yīng)用

一.搜索引擎的介紹

(1)索引組件:獲取數(shù)據(jù)-->建立文檔-->文檔分析-->文檔索引(倒排索引)
(2)搜索組件:用戶搜索接口-->建立查詢(將用戶鍵入的信息轉(zhuǎn)換為可處理的查詢對象)-->搜索查詢-->展現(xiàn)結(jié)果
索引組件:Lucene(apache 旗下的產(chǎn)品)
Lucene Core:Apache Lucene? 是一個高性能仅胞,全功能的文本搜索引擎庫,全部由Java編寫。其技術(shù)上幾乎適合任何需要全文搜索的應(yīng)用程序藐翎,尤其是對跨平臺的應(yīng)用碌更。
(3)搜索組件:Solr, ElasticSearch(基于Lucene core來工作的搜索組件)

  • Solr(企業(yè)級搜索應(yīng)用服務(wù)器):是一個高性能溉跃,采用Java5開發(fā)引润,基于Lucene的全文搜索服務(wù)器宪赶。同時(shí)對其進(jìn)行了擴(kuò)展鹤树,提供了比Lucene更為豐富的查詢語言,同時(shí)實(shí)現(xiàn)了可配置逊朽、可擴(kuò)展并對查詢性能進(jìn)行了優(yōu)化罕伯,并且提供了一個完善的功能管理界面,是一款非常優(yōu)秀的全文搜索引擎叽讳。
  • ElasticSearch: 是一個分布式的 RESTful 風(fēng)格的搜索和數(shù)據(jù)分析引擎追他,能夠解決不斷涌現(xiàn)出的各種用例。作為 Elastic Stack 的核心岛蚤,它集中存儲數(shù)據(jù)邑狸,可以發(fā)現(xiàn)意料之中以及意料之外的情況。

二.Elastic Stack

(1)ELK的組成

1.ElasticSearch
2.Logstash:
Logstash 是開源的服務(wù)器端數(shù)據(jù)處理管道涤妒,能夠同時(shí) 從多個來源采集數(shù)據(jù)单雾、轉(zhuǎn)換數(shù)據(jù),然后將數(shù)據(jù)發(fā)送到指定的的 “存儲庫” 中她紫。
3.Kibana:
Kibana 讓您能夠可視化 Elasticsearch 中的數(shù)據(jù)并操作 Elastic Stack硅堆,因此您可以在這里解開任何疑問。
4.Beats:
平臺集合了多種單一用途數(shù)據(jù)采集器贿讹。這些采集器安裝后可用作輕量型代理渐逃,從成百上千或成千上萬臺機(jī)器向 Logstash 或 Elasticsearch 發(fā)送數(shù)據(jù)。

(2)ELS集群的工作邏輯

1.多播民褂,單播:9300(集群端口)/tcp茄菊,服務(wù)器端口:9200
2.關(guān)鍵因素:clustername
所有的節(jié)點(diǎn)選舉一個主節(jié)點(diǎn)疯潭,負(fù)責(zé)管理整個集群狀態(tài)以及各shards(切片,默認(rèn)切為5個分片)的分布式方式
三種狀態(tài):green yellow red
green:健康狀態(tài)面殖,所有主副切片都存在
Yellow:缺少某些切片竖哩,但是可以恢復(fù)
red:缺少某些切片,并且不可恢復(fù)

3.實(shí)驗(yàn):創(chuàng)建一個小的集群
步驟:
(1)配置三個節(jié)點(diǎn)并安裝ES,官方下載地址:www.elastic.co選擇download——選擇rpm包進(jìn)行下載
因?yàn)樵撍阉饕媸腔趈ava語言開發(fā)的所以要安裝jvm
yum install java-1.8.0-openjdk-devel,其他兩個節(jié)點(diǎn)做相同操作
(2)創(chuàng)建新的目錄
mkdir -pv /els/{data,logs}
chown -R /els/*
(3)修改配置文件
vim /etc/elasticsearch/elasticsearch.yml
修改如下

cluster.name: myels1
node.name: node1
path.data: /els/data
path.logs: /els/logs
network.host: 172.18.254.242
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node1", "node3","node4"]
discovery.zen.minimum_master_nodes: 2——選舉機(jī)制防止腦裂脊僚,同意機(jī)制必須超過半數(shù)

其他節(jié)點(diǎn)同上相叁,只需要將節(jié)點(diǎn)名和network.host修改即可
啟動之前還要vim jvm.options


搜狗截圖20171206204908.png

修改完成后systemctl start elasticsearch.service
觀察9200和9300端口是否打開


搜狗截圖20171206205102.png

(4)使用curl進(jìn)行測試
curl -XGET '172.18.254.242:9200/'


搜狗截圖20171206205307.png

curl -XGET '172.18.250.223:9200/'


搜狗截圖20171206205340.png

curl -XGET '172.18.254.242:9200/_cluster/?pretty'——漂亮模式顯示

4.三個特殊端點(diǎn)
(1)/_cluster
curl -XGET '172.18.254.242:9200/_cluster/?pretty'——漂亮模式顯示
(2),/_cat
curl -XGET '172.18.254.242:9200/_cat/indices?pretty'
查看文檔命令,正常為空吃挑,所以可以使用-XPUT來創(chuàng)建文檔
實(shí)驗(yàn)創(chuàng)建一個書的文檔钝荡,名字為computer(分類名)
curl -XGET '172.18.254.242:9200/books/computer/1' -d '{
"name": "Elasticsearch in Action",——書的名字
"date": "DEC3,2015",——日期
"author": "Radu"——作者
}'
(3)/_search
curl -XGET '172.18.254.242:9200'/books/computer/_search?pretty' ——查看有關(guān)computer的所有匹配到文檔


搜狗截圖20171206225020.png

curl -XGET '172.18.254.242:9200/books/computer/_search?pretty' -d '
{
"query": {
"match_all": {}
}
}'
屬于query模式的全部匹配模式


搜狗截圖20171207091224.png

curl -XGET '172.18.254.242:9200/books/computer/_search?q=elasticsearch&pretty=true'
搜狗截圖20171207091947.png

curl -XGET '172.18.254.242:9200/books/computer/_search?q=_all:kubernete&pretty=true'——查詢一本名叫kubernete的書
搜狗截圖20171207092143.png

curl -XGET '172.18.254.242:9200/books/computer/_search?q=_all:kubernete~&pretty=true'——加入波浪符代表模糊匹配允許字符有一個不相同

(3)安裝elasticsearch-head插件

通過該插件可以實(shí)現(xiàn)在web端對elasticsearch集群的管理
1.vim /etc/elasticsearch/elasticsearch.yml

搜狗截圖20171207093004.png

2.安裝head
git clone htttp://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
執(zhí)行npm install npm run start &——后臺啟動并運(yùn)行
ss -ntl 發(fā)現(xiàn)9100端口被打開
重啟elasticsearch.service
此時(shí)可以在web頁面上管理集群
搜狗截圖20171207095659.png

三.logstash

在上述中已經(jīng)介紹了logstash的作用街立,其主要的作用就是對來源數(shù)據(jù)采集(input),轉(zhuǎn)換數(shù)據(jù)(filter),發(fā)送數(shù)據(jù)(output)到指定的存儲庫
在官網(wǎng)上下載www.ealstic.co/download/logstash-5.5.1.rpm
然后rpm -ivh logstash-5.5.1.rpm
rpm -ql logstash |less

搜狗截圖20171207101025.png

/usr/share/logstash/bin/logstash --help來查看幫助
其中最常用的是-t和-f,-t用來檢查語法舶衬,-f指定要啟動哪個文件

  • 例:
    cd /etc/logstash/conf.d
vim  test.conf
 input {

     stdin {}
}


output {

   stdout {}

}

搜狗截圖20171207101025.png

vim test.conf

 input {

     stdin {}
}


output {

   stdout {

     codec => rubydebug
  }

}
搜狗截圖20171207102323.png

logstash中三個重要的插件

1.input plugins


搜狗截圖20171207102829.png

[圖片上傳中...(搜狗截圖20171207103040.png-91526f-1512613953070-0)]
2.filter plugins


搜狗截圖20171207103040.png

3.output plugins
搜狗截圖20171207103148.png

主要查件的介紹與使用

(1)input中的file方式來獲取數(shù)據(jù)
vim test.conf

input {

     file {
     path => ["/var/log/httpd/access_log"]
     start_position => "beginning"


  }
}


output {

   stdout {

     codec => rubydebug
  }

}

在另一個客戶端訪問node4的httpd
curl http//:172.18.250.89/
執(zhí)行/usr/share/logstash/bin/logstash -f ./test.conf


搜狗截圖20171207104831.png

(2)filter查件——grok
grok的作用是將各種描述信息按照需要進(jìn)行切分


搜狗截圖20171207105355.png

vim test.conf
加入filter
input {

     file {
     path => ["/var/log/httpd/access_log"]
     start_position => "beginning"


  }
}


filter {

    grok {
   match => {

     "message" => "%{COMBINEDAPACHELOG}"

        }
    }


}

output {

   stdout {

     codec => rubydebug
  }

}

/usr/share/logstash/bin/logstash -f ./test.conf


搜狗截圖20171207110050.png

(3)output的file文件
指定輸出內(nèi)容到某指定的路徑文件中去
vim test.conf
將output修改即可

output {

  file {

  path => ["/tmp/httpd_access_log.json"]
  }

}

檢查語法沒有錯誤后,執(zhí)行test.conf


搜狗截圖20171207111131.png

(4)output elasticsearch

output {

  elasticsearch{
     hosts=> ["http://172.18.254.242:9200","http://172.18.250.223:9200"]
    index => "logstash-%{+YYYY.MM.dd}"
    action => "index"——構(gòu)建索引
  }

}

檢查語法正確就可以執(zhí)行
輸出的數(shù)據(jù)就會存儲到elasticsearch集群的并新建了一個logstash
在elasticsearch集群中使用curl命令來訪問node3


搜狗截圖20171207113458.png

此時(shí)在elasticsearch集群中就可以查詢訪日的內(nèi)容


搜狗截圖20171207113734.png

只搜索集群的某個地址
curl -XGET '172.18.250.223:9200/logstash-*/_search?q=clientip=172.18.250.223&pretty'
搜狗截圖20171207113931.png

(5)beats插件

Beats 平臺集合了多種單一用途數(shù)據(jù)采集器赎离。這些采集器安裝后可用作輕量型代理逛犹,從成百上千或成千上萬臺機(jī)器向 Logstash 或 Elasticsearch 發(fā)送數(shù)據(jù)。
官網(wǎng)下載beats
rpm -ql filebeat
注意:filebeat本身可以直接將輸出數(shù)據(jù)輸送到elasticsearch中梁剔,也可以先發(fā)送到logstash.service虽画,然后由logstash發(fā)送到elasticsearch中
本實(shí)驗(yàn)為了方便將filebeat和logstash放在同一主機(jī)上進(jìn)行運(yùn)行測試
配置文件 /etc/filebeat/filebeat.yml
vim /etc/filebeat/filebeat.yml

-input_type: log
paths:
  - /var/log/httpd/access_log*
output.elasticsearch:
 hosts: ["172.18.254.242:9200", "172.18.250.223:9200"]
 protocol: "http"

上述配置是將輸出數(shù)據(jù)直接發(fā)送到elasticsearch中
curl命令測試一下


搜狗截圖20171207150841.png

搜狗截圖20171207151022.png

再次編輯filebeat.yml配置文件進(jìn)行修改,實(shí)現(xiàn)基于filebeat通過Logstash.service將數(shù)據(jù)發(fā)送到elasticsearch中
vim filebeat.yml

output.logstash:
hosts: ["172.18.250.89:5044"]

輸入不變荣病,只改變輸出類型即可
并且還要修改/etc/logstash/conf.d/test.conf

 input {

   beats {
   port => 5044

 }

}

此時(shí)不需要執(zhí)行/usr/share/logstash/bin/logstash -f ./test.conf
而是直接執(zhí)行
systemctl start logstash.service
systemctl restart filebeat.service
ss -ntl 5044端口打開


搜狗截圖20171207151829.png

搜狗截圖20171207152259.png

curl -XGET '172.18.250.223:9200/logstash-*/_search?pretty'


搜狗截圖20171207152444.png

(6)mutate插件

filter {

    grok {
   match => {
   
     "message" => "%{COMBINEDAPACHELOG}"
     
        }
    }    
   mutate  {
   
              rename => {
                "clientip" => "client_ip"
     }          
   }
 date {

       match => ["timestamp","dd/MMM/YYYY:H:m:s Z"]
  }

}

curl -XGET '172.18.250.223:9200/logstash-*/_search?q=clientip=172.18.250.223&pretty'


搜狗截圖20171207175636.png

(7)geoip
vim geoip.conf

 input {
   
   beats { 
   port => 5044
 }
}

filter {

   match => {
     "message" => "%{COMBINEDAPACHELOG}"
     
        }
    }    
   date {
   
     match => ["timestamp","dd/MMM/YYYY:H:m:s Z"]
 }   
 
   geoip {
   
       source => "clientip"
       target => "geoip"
       database => "/etc/logstash/GeoLite2-City.mmdb"
  }    
  
} 

output {

  elasticsearch{
     hosts=> ["http://172.18.254.242:9200","http://172.18.250.223:9200"]
    index => "logstash-%{+YYYY.MM.dd}"
    action => "index"
  } 
  
}

echo '72.18.250.223 - - [07/Dec/2017:18:13:41 +0800] "GET / HTTP/1.1" 200 16 "-" "curl/7.29.0" >> /var/log/httpd/access_log
echo 202.18.250.223 - - [07/Dec/2017:18:13:41 +0800] "GET / HTTP/1.1" 200 16 "-" "curl/7.29.0" '>> /var/log/httpd/access_log
將公網(wǎng)ip追加到httpd的日志文件中码撰,否則用私網(wǎng)ip訪問是無法顯示ip地址的來源地區(qū)的


搜狗截圖20171207220017.png

四.集群方式實(shí)現(xiàn)

搜狗截圖20171207203542.png

具體實(shí)施步驟
(1)在node5上yum install java-1.8.0-openjdk-devel
rpm -ivh logstash-5.5.1.rpm
將之前的test.conf腳本復(fù)制到本機(jī)上
(2)在node6上 yum install httpd
rpm -ivh filebeat-5.5.1-x86_64.rpm
systemctl start httpd
vim /var/www/html/index.html
test node7
在elasticsearch中的服務(wù)上訪問Node6的http服務(wù)
(3)編輯filebeat的配置文件
paths

  • /var/log/httpd/access_log
    開啟output.logstash
    hosts: ["172.18.250.62:5044"]——node5的ip地址
    (4)在node5上配合redis服務(wù)
    yum install redis
    vim /etc/redis.conf
    bind 0.0.0.0
    requirepass magedu
    啟動redis
    (5)編輯redis-input.conf
    vim /etc/logstash/conf.d/redis-input.conf
    修改input即可
input {
     redis{
       host => "172.18.250.89"
       port => 6379
       data_type => "list"
       db   => "0"
       key => "filebeat"
       password => "magedu"
 }

}

在Node6 vim /etc/filebeat/filebeat.yml
自定義output.redis


搜狗截圖20171207210123.png

重啟filebeat.service
(6)在客戶端多訪問幾次Node6的http服務(wù)
redis-cli -a magedu
LINDEX filebeat 0
LINDEX filebeat 1
LINDEX filebeat 2


搜狗截圖20171207214017.png
搜狗截圖20171207214105.png

在node5上檢查redis.conf腳本沒有錯誤后
執(zhí)行該腳本

此時(shí)發(fā)現(xiàn)LINDEX中的filebeat文件消失了,這是因?yàn)閞edis中的filebeat數(shù)據(jù)被elasticsearch集群提走
綜上可以將上述中的geoip.conf最為conf.d的配置守護(hù)文件个盆,將其他文件移除到/root/目錄下脖岛,然后開啟logstash服務(wù)

五.基于kibana的集群訪問

搜狗截圖20171207220648.png

(1)在node5上rpm -ivh kibana-5.5.1-x86_64.rpm
vim /etc/kibana/kibana.yml


搜狗截圖20171207221503.png

開啟服務(wù)發(fā)現(xiàn)5601端口被打開
在web頁面打開kibana


搜狗截圖20171208204319.png

(2)在node6上

cd /var/log/httpd/
while true; do echo "$[$RANDOM%224+1].$[$RANDOM%256].$[$RANDOM%256].$[$RANDOM%255+1] - - [07/Dec/2017:22:32:53 +0800] "GET / HTTP/1.1" 200 16 "-" "curl/7.29.0"" >> access_log;sleep 1;done


搜狗截圖20171207224808.png

在kibana界面可以查詢訪問情況


搜狗截圖20171208204543.png

此時(shí)就可以在kibana界面上來管理elasticsearch集群了
在kibana界面上可以觀察geoip的相關(guān)信息
搜狗截圖20171208204543.png

也可以通過圖形的方式來進(jìn)行監(jiān)控和觀察


搜狗截圖20171208204919.png

根據(jù)自身要求來創(chuàng)建圖形的顯示方式
搜狗截圖20171208205206.png

創(chuàng)建新的視圖來顯示客戶端ip地址的地理位置
搜狗截圖20171208205412.png

根據(jù)需要創(chuàng)建后來查看顯示結(jié)果
搜狗截圖20171208205708.png

以上圖形如果想要以后繼續(xù)查看可以點(diǎn)擊save,并命令后保存即可
搜狗截圖20171208210057.png

為了更好地視圖的體驗(yàn)颊亮,可以通過編輯Dashbord來中和兩個圖形
搜狗截圖20171208211105.png

其他選項(xiàng)柴梆,如在Visualize中,選擇markdown進(jìn)行文本編輯


搜狗截圖20171208212211.png

搜狗截圖20171208212309.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末终惑,一起剝皮案震驚了整個濱河市绍在,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雹有,老刑警劉巖偿渡,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異霸奕,居然都是意外死亡卸察,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門铅祸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坑质,“玉大人合武,你說我怎么就攤上這事∥卸螅” “怎么了稼跳?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吃沪。 經(jīng)常有香客問我汤善,道長,這世上最難降的妖魔是什么票彪? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任红淡,我火速辦了婚禮,結(jié)果婚禮上降铸,老公的妹妹穿的比我還像新娘在旱。我一直安慰自己,他們只是感情好推掸,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布桶蝎。 她就那樣靜靜地躺著,像睡著了一般谅畅。 火紅的嫁衣襯著肌膚如雪登渣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天毡泻,我揣著相機(jī)與錄音胜茧,去河邊找鬼。 笑死仇味,一個胖子當(dāng)著我的面吹牛呻顽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邪铲,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼芬位,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了带到?” 一聲冷哼從身側(cè)響起昧碉,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎揽惹,沒想到半個月后被饿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搪搏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年狭握,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疯溺。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡论颅,死狀恐怖哎垦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情恃疯,我是刑警寧澤漏设,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站今妄,受9級特大地震影響郑口,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盾鳞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一犬性、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腾仅,春花似錦乒裆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽日裙。三九已至吹艇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間昂拂,已是汗流浹背受神。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留格侯,地道東北人鼻听。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像联四,于是被迫代替她去往敵國和親撑碴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

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