rhel6.5-elk(elasticsearch、logstash、kibana)

一.ELK

        ELK提供了整套日志的解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多日志分析场合的应用。ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana,新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给LogstashElasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源,自动搜索负载等。Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。Kibana 也是一个开源和免费的工具,它 Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

二.ElasticSearch的分布式部署(es采用2.3版本

172.25.78.1
masternode
172.25.78.2
datanode
172.25.78.3
datanode

1.在每个节点部署ElasticSearch(需要java环境,在这里直接安装java的rpm包)

rhel6.5-elk(elasticsearch、logstash、kibana)_第1张图片

rhel6.5-elk(elasticsearch、logstash、kibana)_第2张图片

2.提前在每个节点做本地解析


3.masternode的配置/etc/elasticsearch/elasticsearch.yml        ##配置elasticsearch

(1)定义elasticsearch分布式集群名称、节点主机名、主机的身份

rhel6.5-elk(elasticsearch、logstash、kibana)_第3张图片

(2)日志以及数据目录默认

rhel6.5-elk(elasticsearch、logstash、kibana)_第4张图片

(3)锁定物理内存地址,防止elasticsearch内存被交换出去,也就是避免es使用swap交换分区

确保ES_HEAP_SIZE参数设置为系统可用内存的一半左右,当系统进行内存交换的时候,es的性能很差(如果内存不够就不要开启,否则服务无法启动)

rhel6.5-elk(elasticsearch、logstash、kibana)_第5张图片

(4)为es设置ip绑定

rhel6.5-elk(elasticsearch、logstash、kibana)_第6张图片

(5)当启动节点时,通过这个主机名列表进行节点发现,组建集群

rhel6.5-elk(elasticsearch、logstash、kibana)_第7张图片

4.启动es服务解决日志报错(/var/log/elasticsearch/my-elk.log)


vim /etc/security/limits.conf      ##编辑es的限制信息

rhel6.5-elk(elasticsearch、logstash、kibana)_第8张图片

5.datanode的配置(与masternode的node配置不同,开启数据存储,关闭master)

rhel6.5-elk(elasticsearch、logstash、kibana)_第9张图片

6.es的默认端口9200

7.本地安装head 插件,它是一个用浏览器跟 ES 集群交互的插件,可以查看集群状态、集群的 doc 内容、

执行搜索和普通的 Rest 请求。

rhel6.5-elk(elasticsearch、logstash、kibana)_第10张图片

查询es安装的插件

8.通过IP:9200/_plugin/head访问ES 集群状态

绿色正常、红色集群故障、黄色部分节点恢复

rhel6.5-elk(elasticsearch、logstash、kibana)_第11张图片

rhel6.5-elk(elasticsearch、logstash、kibana)_第12张图片

点击节点的info查看信息,也可以关闭节点,操作比较灵活

rhel6.5-elk(elasticsearch、logstash、kibana)_第13张图片

9.请求测试

rhel6.5-elk(elasticsearch、logstash、kibana)_第14张图片

rhel6.5-elk(elasticsearch、logstash、kibana)_第15张图片

三.Logstash的部署(Logstash把获取的日志发送到es所在主机)

Logstash的日志收集发送的过程:数据源输入,过滤后输出到指定的位置(redis,es等)

rhel6.5-elk(elasticsearch、logstash、kibana)_第16张图片

1.rpm包安装

2.Logstash收集日志发送到es

rhel6.5-elk(elasticsearch、logstash、kibana)_第17张图片

(1)标准输入输出

rhel6.5-elk(elasticsearch、logstash、kibana)_第18张图片

(2)以键值对形式显示

rhel6.5-elk(elasticsearch、logstash、kibana)_第19张图片

(3)日志由Logstash收集后显示在终端的同时也发送到es上以web页面呈现

rhel6.5-elk(elasticsearch、logstash、kibana)_第20张图片

由于日志太多,删除日志,用命令进行测试

-f指定配置文件开启Logstash服务

rhel6.5-elk(elasticsearch、logstash、kibana)_第21张图片

在web页面查看日志

rhel6.5-elk(elasticsearch、logstash、kibana)_第22张图片

3.每次读取日志都会在用户家目录生成.since文件(Logstash收集的日志来源以及读取到什么位置,如果要重新读取日志并发送到es,需要删除此文件)

读取日志的节点号与.since文件相同


4.把其他节点的日志同步到master节点

(1)在server2指定日志接受方的IP:514,并重启rsyslog服务

rhel6.5-elk(elasticsearch、logstash、kibana)_第23张图片

(2)编辑Logstash配置文件

rhel6.5-elk(elasticsearch、logstash、kibana)_第24张图片

(3)-f指定配置文件开启服务,同时java会伪装514端口去接受server2的日志

rhel6.5-elk(elasticsearch、logstash、kibana)_第25张图片

(4)在server2进行logger测试,server1成功接受到server2的日志

rhel6.5-elk(elasticsearch、logstash、kibana)_第26张图片

rhel6.5-elk(elasticsearch、logstash、kibana)_第27张图片

(5)es成功接受日志,web页面也成功显示

rhel6.5-elk(elasticsearch、logstash、kibana)_第28张图片

5.过滤出有多行的一条日志

(1)Logstash配置文件

rhel6.5-elk(elasticsearch、logstash、kibana)_第29张图片

(2)日志成功过滤

rhel6.5-elk(elasticsearch、logstash、kibana)_第30张图片

(3)web页面显示

6.过滤httpd日志

(1)server3安装Logstash和httpd,进行日志过滤

rhel6.5-elk(elasticsearch、logstash、kibana)_第31张图片

httpd的截取的部分日志

rhel6.5-elk(elasticsearch、logstash、kibana)_第32张图片

(2)Logstash过滤httpd的日至并发送到sever1的es,httpd的Logstash配置文件如下:

rhel6.5-elk(elasticsearch、logstash、kibana)_第33张图片

Logstash自带了过滤模块在以下路径:

rhel6.5-elk(elasticsearch、logstash、kibana)_第34张图片

(3)server1上面的es成功获取到日志

rhel6.5-elk(elasticsearch、logstash、kibana)_第35张图片

rhel6.5-elk(elasticsearch、logstash、kibana)_第36张图片

四.Kibana的部署(Elasticsearch+Logstash+Kibana的结合使用,Kibana部署于server1)

Logstash把收集到的日志信息进行过滤发送到Elasticsearch,Elasticsearch把日志发送到Kibana用web页面来呈现日志详细信息

1.配置Kibana主机/opt/kibana/config/kibana.yml

指定Kibana接收的es信息主机IP以及端口

创建Kibana的索引

rhel6.5-elk(elasticsearch、logstash、kibana)_第37张图片

2.Kibana默认开启5601端口

3.Kibana的使用

(1)创建索引的内容(也就是Kibana要监控的es上面哪个日志,Kibana会自动去请求es)

下面监控的是apache的日志

rhel6.5-elk(elasticsearch、logstash、kibana)_第38张图片

(2)设置要监控的选项(柱状图、饼状图等,下面是访问量和IP主机的柱状图)

rhel6.5-elk(elasticsearch、logstash、kibana)_第39张图片

(3)把要实时查看的信息添加到仪表盘上(总访问量、故障联系人、访问峰值、访问量最高的三个IP)

rhel6.5-elk(elasticsearch、logstash、kibana)_第40张图片

五.用redis做ELK的加速访问

数据流:Logstash-->redis-->Logstash-->Elasticsearch-->Kibana

172.25.78.1(server1)
Elasticsearch、Kibana、Logstash
172.25.78.2(server2)
redis
172.25.78.3(server3)
Logstash

1.server2安装redis(redis的详细安装在之前的博客)

2.server3收集httpd的日志以列表的形式发送到server2上面的redis

rhel6.5-elk(elasticsearch、logstash、kibana)_第41张图片

3.server1把server2上面redis缓存的httpd日志发送到server1的Elasticsearch,不用

rhel6.5-elk(elasticsearch、logstash、kibana)_第42张图片

4.查看server2上面redis的日志已经与172.25.78.3建立连接

5.Elasticsearch已经成功收到server3上的httpd的日志信息(有apache:redis的日志)

rhel6.5-elk(elasticsearch、logstash、kibana)_第43张图片

6.查看apache:redis的日志信息(根据日志的名称,类型等来查看日志,比如要查看httpd的4XX状态码的报错,可以直接过滤出来4XX报错)

rhel6.5-elk(elasticsearch、logstash、kibana)_第44张图片

7.在测试的时候可以把日志信息打印到终端,这样也能及时发现是那个部分的错误,当时我做的时候日志始终发送不到es上,后来发现是server3之前的家目录下的.sincedb文件没有删除,以为之前已经读取了httpd的日志不再重复读取。

你可能感兴趣的:(ELK,redis+ELK,.sincedb)