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裏面看到了。
參考
http://blog.51cto.com/seekerwolf/2106509
https://www.cnblogs.com/spec-dog/p/6235866.html