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