本次构架图如下

  说明:

  1,前端服务器只启动轻量级日志收集工具filebeat(不需要JDK环境)

  2,收集的日志不进过处理直接发送到redis消息队列

  3,redis消息队列只是暂时存储日志数据,不需要进行持久化

  4,logstash从redis消息队列读取数据并且按照一定规则进行过滤然后存储至elasticsearch

  5,前端通过kibana进行图形化展示

  环境查看

  服务器客户段安装filebeat

rpm -ivh filebeat-6.2.4-x86_64.rpm

  修改配置文件/etc/filebeat/filebeat.yml(本次以收集系统日志及nginx访问日志为例)

filebeat.prospectors:
- type: log
enabled: true
paths:
- /var/log/*.log
- /var/log/messages
tags: ["system-log-5611"]
- type: log
enabled: true
paths:
- /data/logs/nginx/http-access.log
tags: ["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.logstash:
hosts: ["localhost:5044"]

  PS:系统日志打一个tags 同理nginx日志也打一个tags便于后面过滤

     输出至logstash(本次试验logstash搭建在同一台主机,生产是单独的主机)

  修改logstash配置文件/etc/logstash/conf.d/beat-redis.conf(这个logstash至进行日志收集不进行任何处理根据tags的不同过滤放置在不同的redis库)

  为了便于排查错误还使用的标准输出

input{
beats{
port => 5044
}
} output{
if "system-log-5611" in [tags]{
redis {
host => "192.168.56.11"
port => "6379"
password => "123456"
db => "3"
data_type => "list"
key => "system-log-5611"
} stdout{
codec => rubydebug
}
}
if "nginx-log" in [tags]{
redis {
host => "192.168.56.11"
port => "6379"
password => "123456"
db => "4"
data_type => "list"
key => "nginx-log"
} stdout{
codec => rubydebug
}
}
}

  启动检查配置是否正确

systemctl start filebeat
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/beat-redis.conf

  输出如下(同时输出至redis了)

  系统日志输出

  nginx输出(可以看到nginx的message的输出格式为json但是logstash没有进行处理)

  配置redis主机过程不详述

  在另外一台主机修改logstash配置文件用于从redis读取日志数据并且进行过滤后输出至elasticsearch

  redis-elastic.conf

input{
redis {
host => "192.168.56.11"
port => "6379"
password => "123456"
db => "3"
data_type => "list"
key => "system-log-5611"
}
redis {
host => "192.168.56.11"
port => "6379"
password => "123456"
db => "4"
data_type => "list"
key => "nginx-log"
}
} filter{
if "nginx-log" in [tags] {
json{
source => "message"
}
if [user_ua] != "-" {
useragent {
target => "agent" #agent将过来出的user agent的信息配置到了单独的字段中
source => "user_ua" #这个表示对message里面的哪个字段进行分析
}
}
}
} output{
stdout{
codec => rubydebug
}
}

  PS:因为不同的日志收集至不同的redis所以输入有多个redis库

    因为nginx是json格式需要通过filter进行过滤输出json格式

    首先判断tag是是否nginx日志如果是则以json格式输出,并且再次判断客户端信息如果不为空则再次使用useragent过滤出详细的访问客户端信息

  启动查看输出

  系统日志(输出和收集日志logstash的格式一样)

  nginx访问日志(输出为json格式)

  标准输出没有问题修改配置文件输出至elasticsearch

input{
redis {
host => "192.168.56.11"
port => "6379"
password => "123456"
db => "3"
data_type => "list"
key => "system-log-5611"
}
redis {
host => "192.168.56.11"
port => "6379"
password => "123456"
db => "4"
data_type => "list"
key => "nginx-log"
}
} filter{
if "nginx-log" in [tags] {
json{
source => "message"
}
if [user_ua] != "-" {
useragent {
target => "agent" #agent将过来出的user agent的信息配置到了单独的字段中
source => "user_ua" #这个表示对message里面的哪个字段进行分析
}
}
}
} output{
if "nginx-log" in [tags]{
elasticsearch{
hosts => ["192.168.56.11:9200"]
index => "nginx-log-%{+YYYY.MM}"
}
}
if "system-log-5611" in [tags]{
elasticsearch{
hosts => ["192.168.56.11:9200"]
index => "system-log-5611-%{+YYYY.MM}"
}
}
}

  刷新访问日志

  通过head访问查看

ELK之生产日志收集构架(filebeat-logstash-redis-logstash-elasticsearch-kibana)的更多相关文章

  1. ELK+kafka构建日志收集系统

    ELK+kafka构建日志收集系统   原文  http://lx.wxqrcode.com/index.php/post/101.html   背景: 最近线上上了ELK,但是只用了一台Redis在 ...

  2. 快速搭建应用服务日志收集系统(Filebeat + ElasticSearch + kibana)

    快速搭建应用服务日志收集系统(Filebeat + ElasticSearch + kibana) 概要说明 需求场景,系统环境是CentOS,多个应用部署在多台服务器上,平时查看应用日志及排查问题十 ...

  3. ELK+Kafka 企业日志收集平台(一)

    背景: 最近线上上了ELK,但是只用了一台Redis在中间作为消息队列,以减轻前端es集群的压力,Redis的集群解决方案暂时没有接触过,并且Redis作为消息队列并不是它的强项:所以最近将Redis ...

  4. 基于Centos 7.4 搭建ELK整合SpringBoot日志收集

    基于Centos 7.4搭建es7.12.0+logstash-7.12.0+kibana-7.12.0(ELK)整合SpringBoot日志收集 注:Skywalking和logstash可共用一个 ...

  5. ELK日志框架(2):log4net.ElasticSearch+ Kibana实现日志记录和显示

    环境说明 1. windows server 2012 R2 64位 2. log4net.ElasticSearch 3. kibana-5.5.0-windows-x86.zip 架构说明 数据采 ...

  6. 日志分析平台ELK之日志收集器filebeat

    前面我们了解了elk集群中的logstash的用法,使用logstash处理日志挺好的,但是有一个缺陷,就是太慢了:当然logstash慢的原因是它依赖jruby虚拟机,jruby虚拟机就是用java ...

  7. MySQL日志收集之Filebeat和Logstsh的一键安装配置(ELK架构)

    关于ELK是什么.做什么用,我们不在此讨论.本文重点在如何实现快速方便地安装logstash和filebeat组件,特别是在近千台DB Server的环境下(为了安全保守,公司DB Server 目前 ...

  8. 转: 基于elk 实现nginx日志收集与数据分析

    原文链接:https://www.cnblogs.com/wenchengxiaopenyou/p/9034213.html 一.背景 前端web服务器为nginx,采用filebeat + logs ...

  9. 日志收集之filebeat

    一,软件介绍 Filebeat是一个轻量级日志传输Agent,可以将指定日志转发到Logstash.Elasticsearch.Kafka.Redis等中.Filebeat占用资源少,而且安装配置也比 ...

随机推荐

  1. application/x-www-form-urlencoded 的contentType,POST数据内容过大,导致tomcat的request取不到参数

    如题, 可通过设置tomcat的connector的参数 server.xml中的connector中加上属性 maxPostSize="20971520" maxPostSize ...

  2. go语言中文网中的资源

    https://studygolang.com/subject/2     Go 系列教程 https://studygolang.com/subject/74   Go 语言机制 https://s ...

  3. javascript的闭包计数器实现,python实现各种方法来实现计数器

    菜鸟教程的javascript闭包章节中,演示了js计数器的实现.    教程地址 http://www.runoob.com/js/js-function-closures.html 代码1 var ...

  4. Python一个简单的数据库类封装

    #encoding:utf-8 #name:mod_db.py '''使用方法:1.在主程序中先实例化DB Mysql数据库操作类.      2.使用方法:db=database()  db.fet ...

  5. Uva--11324--The Largest Clique【有向图强连通分量】

    链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&am ...

  6. ios开发之--把秒转换为天时分秒

    把秒转换成时分秒: - (NSString *)timeFormatted:(int)totalSeconds { ; ) % ; ; return [NSString stringWithForma ...

  7. Waf-Bypass-Learning

    WAF Bypass 综合篇: WAF攻防研究之四个层次Bypass WAF Bypass WAF Cookbook - MayIKissYou My Waf Bypass Series Articl ...

  8. AE插件开发的一些总结

    首先会遇到第一个问题,为什么输出的aex文件不在bin目录下,而在别的目录下.其实问题出在链接器的设置里.把这个改成自己想要的目录就OK 然后一些object的报错,直接把警告等级改成0就可以了.属性 ...

  9. 基于Elasticsearch 5.4.3的商品搜索系统

    源码已提交至http://github.com

  10. com.baidu.mapapi.CoordType

    2.2.2升级到3.0.1百度报错了, 一:请检查.jar,.so是否是最新的 二:clear