您的位置:首页 > 数据库 > Redis

Filebeat,Redis和ELK6.x集中式日志解决方案

2018-01-22 13:20 561 查看

简介

         
 ELK 不是一款软件,而是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack。而redis作为一款性能优良的消息队列。更是适合用在此场景中。

         下面是针对每个技术我的博客详解。

          1.Elasticsearch6.x介绍

          2.Logstash6.x介绍

           3.Kibana6.x 介绍

          4.redis基础介绍

  filebeat就在这里介绍了。

        Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到elasticsearch或者logstarsh中存放。所以说filebeat就是logstash-agent端的取代产品。且性能优良。

基本架构

 下图是经典的日志收集流程,只不过我们这次要在filebeat与Logstash之间加上一个消息队列redis,Logstash服务端只需要从redis中获取想要的数据。而所有的客户端直接将数据发往redis。


 准备环境。

 Centos7 3台,Elasticsearch6.1,logstash6.1,kibana6.1,filebeat安装包。epel的yum源

1.首先配置 filebeat。

  安装filebeat。只需 yum -y install filebeat 。安装完成后,修改配置文件 /etc/filebeat/filebeat.yml

内容如下:

filebeat.prospectors:
- type: log
enabled: true
paths:
- /var/log/nginx/*.log
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 3
setup.kibana:
output.redis:
hosts: ["192.168.40.133"]
port: 6379
key: "nginx-log"
这样的配置是 从 /var/log/nginx下读取所有以.log结尾的文件。且发送到redis。且redis中以list方式存储。键名为 nginx-log

配置完成后。启动redis。再启动filebeat。

systemctl start redis

systemctl start filebeat

接下来应该让logstash从redis中间键中读取数据。那么配置logstash。配置文件为 /etc/logstash/conf.d/nginx.conf

input {
redis {
port => "6379"
host => "192.168.40.133"
data_type => "list"
type => "log"
key => "nginx-log"
}
}
filter {
grok {
match => {
"message" => '%{IPORHOST:remote_ip} - %{DATA:user_name} \[%{HTTPDATE:time}\] "%{WORD:request_action} %{DATA:request} HTTP/%{NUMBER:http_version}" %{NUMBER:response} %{NUMBER:bytes} "%{DATA:referrer}" "%{DATA:agent}"'
}
}
date {
match => [ "time", "dd/MMM/YYYY:HH:mm:ss Z" ]
locale => en
}
geoip {
source => "remote_ip"
target => "geoip"
}
useragent {
source => "agent"
target => "user_agent"
}
}
output {
elasticsearch {
hosts => "192.168.40.133:9200"
index => "logstash-%{+YYYY.MM.dd}"
}
}


配置完成后,启动logstash。 logstash -f /etc/logstash/conf.d/nginx.conf。或systemctl start logstash
这里logstash从redis中读取数据。而将数据过滤后再发送至Elasticsearch。过滤时用到了grok将数据格式化。user_agent,geoip等等插件。

再启动Elasticsearch和kibana。

在浏览器访问kibana所在主机的5601端口。选择Management。创建index parttern。



创建 logstash-*

好了,大功告成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: