ELK环境搭建与测试

ELK环境搭建与测试

1、本文所需软件版本:

添加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

2、原理以及配置:

(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结合

3、启动

(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系统中安装

  1. 运行kibana.bat
  2. 访问:localhost:5601
相关文章
相关标签/搜索