安裝EKL

elasticsearch
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
 
/etc/yum.repos.d/elasticsearch.repo:
[elasticsearch-6.x]
1 name=Elasticsearch repository for 6.x packages
2 baseurl=https://artifacts.elastic.co/packages/6.x/yum
3 gpgcheck=1
4 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
5 enabled=1
6 autorefresh=1
7 type=rpm-md

 

配置/etc/elasticsearch/elasticsearch.yml
修改:network.host: 0.0.0.0
這個改動用於地址綁定,能夠實現監控多網卡(內網+外網)同一個端口,若是有需求得話。
驗證:curl localhost:9200
 
Logstash
 
/etc/yum.repos.d/logstash.repo:
1 [logstash-6.x]
2 name=Elastic repository for 6.x packages
3 baseurl=https://artifacts.elastic.co/packages/6.x/yum
4 gpgcheck=1
5 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
6 enabled=1
7 autorefresh=1
8 type=rpm-md

 

 
/etc/logstash/conf.d/fb-es.conf
input {
   beats {
      port => 5044
      ssl  => false
      client_inactivity_timeout => 86400
   }
}
filter {
    grok {
        match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}"}
       remove_field => ["message"]
    }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "nginx-%{+YYYY.MM.dd}"
    document_type => "nginx"
   }
 }
注意,我在配置match的時候,是由於我使用Ngnix的日誌內容:
55.3.244.1 GET /index.html 15824 0.043
其餘日誌內容要根據本身的日誌格式來設定。
 驗證:訪問curl localhost:9600
kibana
 
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
/etc/yum.repos.d/kibana.repo:
1 [kibana-6.x]
2 name=Kibana repository for 6.x packages
3 baseurl=https://artifacts.elastic.co/packages/6.x/yum
4 gpgcheck=1
5 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
6 enabled=1
7 autorefresh=1
8 type=rpm-md

 /etc/kibana/kibana.ymlhtml

配置:server.host: "0.0.0.0"nginx

另外注意須要在kibana的management面板中配置索引「Index Pattern」,只有這樣纔可以經過kibana的Discovery面板來監控到各個索引的狀況。git

驗證:經過網頁端訪問http://ip:5601github

 

說明:ELK若是採用這種rpm包(yum)安裝方式。默認配置文件在/etc/XX下面(XX表明elasticsearch/ logstash/ kibana);運行文件在/usr/share/XX下面。
注:看到這裏,其實仔細看你會官方教程給的yum源其實都是一個;咱們是否是隻須要寫好一個其餘就OK呢?其實能夠,可是對於新版本這樣搞是否能夠就不得而知了。
 
filebeat
1 curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.3.2-x86_64.rpm
2 sudo rpm -vi filebeat-6.3.2-x86_64.rpm
在/etc/filebeats文件夾下,編輯filebeats.yml,定義要採集(input)的文件信息:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/test.log  # 這裏能夠設置通配符,例如:*.log
同文件,配置輸出(output)目的地,能夠配置是es或者logstash(注意其餘不要的輸入配置須要最好註釋掉):
output.elasticsearch:
hosts: ["myEShost:9200"]
或者
output.logstash:
hosts: ["logstash_ip:5044"]
 
驗證&測試:
在部署了filebeat的機器上面,執行下面的命令:
  echo "55.3.244.1 GET /index.html 15824 0.043" >> /var/log/test.log  
此時經過kibana或者head插件既能夠看到索引的文檔數有增長;
關於head插件,github地址:https://github.com/mobz/elasticsearch-head;注意能夠做爲chrome的插件來部署,比較方便;固然也能夠搭建一個站點。
 
問題:
  發現外網訪問不了,原來須要設置監聽主機的IP爲0.0.0.0;eslasticsearch以及kibana很容就解決了這個問題;可是logstash上面就卡住了。5044端口沒法訪問;後來配置爲http.host: "0.0.0.0",問題解決
 
  io.netty.handler.codec.DecoderException: org.logstash.beats.BeatsParser$InvalidFrameProtocolException: Invalid Frame Type, received: 84
  感受上就是logstash和Filebeat什麼沒有配對上。這個問題其實並不知道怎麼解決的,反正按照上面的配置以後,就解決了。
 
  Failed to publish events caused by: read tcp 172.17.0.2:59030->52.50.63.141:5000: read: connection reset by peer
  再後來就是經過kibana看不到數據,由於看日誌一直髮現一個異常「logstash filebeat connection reset by peer」。
  發現這個異常其實能夠忽略;由於原本就是好用的,早就插入到了es裏面了;只不過我當時是在kibana裏面看到了數據沒有展現,可是其實你經過head來進行查看的時候,你就會發現其實已經插入到裏面了。head這個插件還要感謝遲永剛,是他和我閒聊的時候提到了這個組件。搞了一天半,終於發現問題原來就是他媽的kibana很差用。Kibana很差用是由於沒有配置Kibana的索引類型,由於我後來的索引類型都是nginx作開頭的(在logstash裏面配置的),須要配置一個nginx-*的索引,配置以後,便可以在discovery裏面看到了。
 
 
 
參考
https://www.elastic.co/guide/index.html 注意這個是elasticsearch技術棧文檔的入口;即頂部菜單的「learn」一項
http://blog.51cto.com/seekerwolf/2106509
https://www.cnblogs.com/spec-dog/p/6235866.html
相關文章
相關標籤/搜索