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

时间:2024-04-05 13:28:16

一.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)

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

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

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

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

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

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

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

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

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

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

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

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

(4)为es设置ip绑定

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

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

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

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

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

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

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

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

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

6.es的默认端口9200

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

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

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

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

查询es安装的插件

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

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

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

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

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

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

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

9.请求测试

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

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

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

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

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

1.rpm包安装

2.Logstash收集日志发送到es

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

(1)标准输入输出

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

(2)以键值对形式显示

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

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

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

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

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

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

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

在web页面查看日志

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

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

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

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

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

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

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

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

(2)编辑Logstash配置文件

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

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

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

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

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

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

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

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

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

(1)Logstash配置文件

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

(2)日志成功过滤

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

(3)web页面显示

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

6.过滤httpd日志

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

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

httpd的截取的部分日志

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

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

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

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

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

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

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

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

四.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)

2.Kibana默认开启5601端口

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

3.Kibana的使用

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

下面监控的是apache的日志

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

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

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

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

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

五.用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)

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

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

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

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

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

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

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

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

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