ELK日志处理方案及环境搭建

组件介绍

Elasticsearch

是一个基于Lucene的搜索服务器。提供搜集、分析、存储数据三大功能。
Elasticsearch是用java开发的,并作为apache许可条款下的开源项目发布。

Logstash

主要用来日志的搜集、分析、过滤;可以用它收集日志、转换日志、解析日志并将
他们作为数据提供给其他模块调用;以及将数据发送到向Elasticsearch等数据库中。

Filebeat

Fielbeat是用于转发和采集日志数据的轻量级服务,能监视指定的文件或位置,收集日志信息,
并将数据转发到es等。
相比于Logstash,Filebeat所占系统的cpu和内存几乎可以忽略不计。
可以用Filebeat代替logstash。

Kibana

可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。

Kafka

适合做大吞吐数据的临时队列,将它放在filebeat和logstash中可以起到一个缓冲的作用,通常用于集群服务中。


ELK、EFK

ELK
Elasticsearch: 简称es,用来存储数据
Logstash: 收集网络中各个服务上的数据,将收集的数据存储到es中
Kibana:用于展示数据,数组源自es
注意三者版本号需要相同

EFK
Elasticsearch: 简称es,用来存储数据
Filebeat: 收集网络中各个服务上的数据,将收集的数据存储到es、logstash中
Kibana:用于展示数据,数组源自es
注意三者版本号需要相同

注意有时会将filebeat、kafka、logstash、elasticsearch、Kibana穿成一条链。
filebeat放在需要收集数据的机器上,另一个节点kafka缓冲将filebeat推过来的数据发送到logstash,然后logstash再将数据出入到es中,最后Kibana将日志信息做可视化。


ELK搭建

由于目前不会写logstash的配置文件实现把log文件导入一个还没有定义index的elasticsearch中,所以就暂时让logstash从一个es中读入到另一个es中。

环境准备

ubuntu虚拟机:ip=192.168.71.177, elasticsearch容器映射出端口9200
kali虚拟机:ip=192.168.71.128,logstash容器、elasticsearch容器映射端口9200,kibana容器映射端口5601
请添加图片描述
请添加图片描述

ubuntu中的es容器先准备好lab_index索引

kali中es容器不需要改动

修改kali中kibana容器
sudo vim /etc/kibana/kibana.yml,修改elasticsearch.url为要关联的es的url
请添加图片描述
重启容器docker restart es_kibanadocker logs -f es_kibana | grep Unable如果没有unable之类的信息说明修改成功。并且可以访问ip:5601查看页面。

修改logstash容器

/usr/share/logstash/bin/写一个配置文件lab.conf

input{
    
    
    elasticsearch{
    
    
        hosts => '192.168.71.177:9200'
        index => 'lab_index'
        query => '{"query":{"match_all":{}}}'
        size => 30
        scroll => '5s'
        docinfo => true
    }
}
output {
    
    
    elasticsearch {
    
    
        hosts => "192.168.71.128:9200"
        index => "%{[@metadata][_index]}"
        document_type => "%{[@metadata][_type]}"
        document_id => "%{[@metadata][_id]}"
    }
}

然后清除缓存rm /var/lib/logstash/.lock
运行./logstash -f test.conf

之后就可以在kibana网页看到相关信息,
但是kibana会报错Unable to fetch mapping. Do you have indices matching the pattern?

Kibana想映射es的一个索引,需要指定一个在es中已存在的索引,在页面中,有一个默认索引logstash-*,只有安装了logstash才会有这个索引。

本实验是把不同服务放到不同容器中,所以kibana容器不会装logstash索引。这里直接改成es中一个存在的索引就行。

猜你喜欢

转载自blog.csdn.net/weixin_42172261/article/details/120948063