添加yum数据源查看我另一篇博客:yum源安装html
(1)两台服务器 (2)CentOS6.5 (3)Filebeat5.6 (4)Redis4.0.9 (5)Logstash5.6.8 (6)elasticsearch5.6.8 (7)Kibana5.6.8 (windows系统下启动) (8)grafana6.2.5(windows系统下启动)java
设计流程图: node
注意⚠️:全部的版本必定要保持一致,高版本跟低版本之间会出现兼容性问题,好比我遇到的是elasticsearch7部署在服务器上,能够运行,可是在Kibana上显示时会要求密钥信息。linux
(1) Filebeatnginx
工做原理: 1)filebeat用于本地日志数据采集,因为只申请到两台服务器,因此只用一台启动filebeat。 2)每一个filebeat主要由两个部分组成,prospector和harvester,经过这两个部分来实现指定文件的查找与输出。 3)当启动filebeat后,prospector会查找配置的本地文件,对于查找到的文件,prospector会启动harvester,harvester会打开这个日志文件,并发送到libbeat,而后经过libbeat聚合数据后发送到redis数据库(本文output是redis) redis
-图片来自网络- 4)若是在log文件中持续输入数据,那么harvester只会读取没有读过的数据,由于每次读完会在注册表中添加偏移量信息,这样每次读的时候就能知道跑,数据已读到哪一个位置了。
数据库
data下面有一个registry,里面存放的已读数据的信息bootstrap
参考文档:filebeat原理windows
配置: 1)安全
修改filebeat.yml中的input和output配置,input为本地日志文件的地址,output为redis的地址。 2)
input地址:/opt/logs 3)
redis output须要本身手动添加 hosts:ip为第二台服务器的ip地址,端口6379为redis的端口 key:因为redis是(k,v)格式,因此这边规定一下key,与后面配置的logstash中配置的key要一致。
(2)Redis 工做原理:(K,V)类型基于内存的数据库,处理数据量大,IO大的状况,支持每秒十几万的读写,有效的解决了数据库不能快速IO的问题。并且支持持久化到硬盘。
配置: 参考文档:Redis配置
除了以上博客中的内容,修改如下配置: 修改redis.conf
目的:redis监听全部的链接,redis其实只要监听来自filebeat服务器的数据便可,因此也能够改为filebeat服务器的ip地址
(3)logstash 工做原理:实时数据采集引擎,
处理流程:input(redis)—— Filter —— Output(elasticsearch) Input:从数据源获取数据 Filter:处理数据,如格式转换 Output:数据输出到相应插件,如elasticsearch 在对logstash进行调优的时候主要是pipeline的线程数,因为没有接触调优,暂时挂一张图。
配置: 1)在安装目录的bin目录下添加一个新的文件,名字任意,个人叫redis.log,由于数据来自于redis 在里面添加 input {
redis {
host => "127.0.0.1"
port => "6379"
data_type => "list"
db => 2
batch_count => 1
#type => "log"
key => "nginx-log"
}
}
filter {
grok {
match => { "message" => "%{IPORHOST:remote_addr} - - [%{HTTPDATE:time_local}] "%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{INT:status} %{INT:body_bytes_sent} %{QS:http_referer} %{QS:http_user_agent}"
}
}
}
output {
elasticsearch {
hosts => "127.0.0.1:9200"
index => "nginx-log"
}
}
Input:表示数据输入来源的信息,127.0.0.1是由于在同一个服务器中,key与filebeat中的key保持一致 filter:处理数据,转换格式 Output:表示数据输出的信息,index是以后在Kibana中须要用到的索引名,从logstash过去的数据索引名为nginx-log
遇到的问题:Logstash could not be started because there is already another instance using the configured data directory. If you wish to run multiple instances, you must change the "path.data" setting. 缘由:以前运行的instance有缓冲,保存在path.data里面有.lock文件,删除掉就能够。 解决方法:data目录下经过ls -alh找到.lock文件并删除
(4)elasticsearch 工做原理:看个人另一篇博客elastisearch分布式原理
配置: 这是出于系统安全考虑设置的条件。因为ElasticSearch能够接收用户输入的脚本而且执行,为了系统安全考虑,建议建立一个单独的用户用来运行ElasticSearch。
1)修改elasticsearch.yml文件 添加数据地址、日志地址,去掉注释,这两个地址须要本身新建
修改绑定ip,容许任何ip访问
其余问题能够在如下两个博客找到解答: 常见问题解决 报bootstrap checks failed错误
2)若是遇到lock的状况,须要杀死进程从新运行,由于elasticsearch基于java 因此能够用jps查看进程 kill -9 杀死进程
(5)kibana可视化界面 由于Kibana基于node,因此须要先配置nodejs环境,其余过程很简单,也不会遇到什么问题,我就直接贴图了
(6)grafana图像化界面 过程一样简单,直接经过如下连接配置 1)在windows下安装运行grafana 2)grafana与elasticsearch结合
(1) filebeat 1)cd /usr/local/install/filebeat-5.6.8-linux-x86_64 2)./filebeat -e
(2) redis 配置中的一个问题 vi /etc/redis/redis.conf
bind 0.0.0.0表示能够监听来自任何地址的内容 由于个人数据是从filebeat发送到redis,全部bind能够改为filebeat的地址,只监听来自filebeat的数据
1)cd /etc/redis/ 2)redis-server redis.conf //运行redis.conf的配置文件 3)ps -ef | grep redis //查看redis进程,检查是否启动 4)redis-cli //客户端链接
(3) logstash 1)cd /usr/local/install/logstash-5.6.8/bin
2)./logstash -f redis.conf
(4)elasticsearch 注意:为了安全,只能使用普通用户启动 1)cd /usr/local/install/elasticsearch 2) ./elasticsearch 3)测试:ip:9200
(5) kibana 在windows系统中安装