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包)



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


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

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

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


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

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


(4)为es设置ip绑定


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

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


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

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


6.es的默认端口9200

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

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

查询es安装的插件

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

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

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

9.请求测试

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

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


1.rpm包安装

2.Logstash收集日志发送到es

(1)标准输入输出

(2)以键值对形式显示

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

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

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

在web页面查看日志

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

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


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

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

(2)编辑Logstash配置文件

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


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


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

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

(1)Logstash配置文件

(2)日志成功过滤

(3)web页面显示

6.过滤httpd日志

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

httpd的截取的部分日志


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

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


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

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

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

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

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

创建Kibana的索引

2.Kibana默认开启5601端口

3.Kibana的使用

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

下面监控的是apache的日志

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


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


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

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

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

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

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值