EFK(Elasticsearsh+Filebeat+Kibana)——分布式日志收集系统(三)之示例说明

0 说明

本次EFK分布式日志收集系统节点安排如下:

主机名主机ip部署情况
chen-1192.168.218.100Elasticsearsh Logstash Filebeat Namenode ResourceManager ZK
chen-2192.168.218.101Elasticsearsh SecondaryNamenode Datanode Nodemanager ZK
chen-3192.168.218.102Elasticsearsh Datanode Nodemanager ZK
chen-4192.168.218.103Kibana Datanode Nodemanager
chen-5192.168.218.104Datanode Nodemanager

Filebeat和Logstash都具有日志采集功能,不同的是Filebeat是轻量级的,Logstash运行在JVM上,但其功能更强大。本文采用Filebeat+Logstash方式采集日志。

1 logstash介绍

Logstash是一个开源的数据收集引擎,它具有备实时数据传输能力。它可以统一过滤来自不同源的数据,并按照开发者制定的规范输出到目的地,支持正则表达式。
由于日志文件来源多(如:系统日志、服务器日志、tomcat日志、nginx日志等),且内容杂乱,不便于人类进行观察。因此,我们可以使用 Logstash 对日志文件进行收集和统一过滤,变成可读性高的内容
下载对应的Logstash-6.6.2版本,并解压安装。

2 案例1

Filebeat采集数据放入Lostash中过滤,再存入Elasticsearsh中,最后通过Kibana进行页面展示。
启动

./logstash -e 'input {stdin{}} output{stdout{}}' 表示标准输入和标准输出

在这里插入图片描述
此时,启动成功。我们在控制台输入内容就会打印出相应的内容
在这里插入图片描述

2.1 配置文件

logstash -f logstash.conf
input {
    # 从文件读取日志信息
    file {
        path => "/var/log/messages"
        type => "system"
        start_position => "beginning"
    }
}

filter {
}

output {
    # 标准输出
    stdout {}
}

插件分类:
inputs 输入
codecs 解码
filters 过滤
outputs 输出
在这里插入图片描述
指定日志路径,日志类型和起始位置;没有过滤;输出为标准输出。

logstash -f logstash.conf启动

可以看到采集的日志如下
在这里插入图片描述
Gemfile中内置了Logstash内置的插件,根据不同的插件,我们可以将采集不同类型的日志文件,并进行过滤输出等操作。
如使用filter插件,更改配置文件,写入如下内容

input {
    stdin {
    }
}

filter {
   mutate {
        split => ["message", "|"]
    }
}

output {
    stdout {
    }
}

在这里插入图片描述
此时会把“|”过滤掉,并得到相应的数组。
在这里插入图片描述
数据处理流程:
input->解码->filter->编码->output

输出到elasticsearch:

input {
    # 从文件读取日志信息
    file {
        path => "/var/log/messages-20200906"
        type => "system"
        start_position => "beginning"
    }
}

filter {
}

output {
    elasticsearch {
        hosts => ["192.168.218.100:9200"]
        index => "msg-%{+YYYY.MM.dd}"
    }
}

启动
在这里插入图片描述
此时进入kibana中查看,发现在es的索引中已经新建了一个msg-*的索引
在这里插入图片描述
可以对其内容进行查询
在这里插入图片描述
在这里插入图片描述

4 案例2

使用Logstash收集nginx的日志
新建配置文件,并输入如下内容:在这里插入图片描述

启动./bin/logstash -f ./config/logstash-nginx.conf

在这里插入图片描述
可以看到logstash已经把nginx中的日志输出来了。
再页面重新访问
http://192.168.218.100/chen/hello
在这里插入图片描述
增加nginx日志输出,查看是否是实时输出的。在这里插入图片描述
可以看到其实时输出了日志
接下来,我们再把nginx的输出日志存入es中

input {
    file {
        path => "/usr/local/nginx/logs/access.log"
        type => "nginxaccess"
        start_position => "beginning"
    }
}

filter {
    grok {  
      match => { "message" => "%{HTTPD_COMBINEDLOG}" }
    }
}

output {
    elasticsearch {
        hosts => ["192.168.218.100:9200"]
        index => "nginx-%{+YYYY.MM.dd}"
    }
}

修改logstash-nginx.conf配置文件,再重新启动,刷新kibana页面。可以看到es的索引中新增加了nginx标签
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值