在有些不需要安装java环境的服务器如Nginx,php等为主的web 应用可以使用filebeat来对这些服务日志进行收集。
Filebeat用于收集本地文件的日志数据。 它作为服务器上的代理安装,Filebeat监视日志目录或特定的日志文件,尾部文件,并将它们转发到Elasticsearch或Logstash进行索引。
logstash 和filebeat都具有日志收集功能,filebeat更轻量,使用go语言编写,占用资源更少,可以有很高的并发,但logstash 具有filter功能,能过滤分析日志。一般结构都是filebeat采集日志,然后发送到消息队列,如redis,kafka。然后logstash去获取,利用filter功能过滤分析,然后存储到elasticsearch中。
Kafka是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache定级项目。Kafka主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。
node1: Elasticsearch, zookeeper, Kafka,Nginx,Kibana,filebeat
node2: Elasticsearch, zookeeper,Kafka, logstash
node3: zookeeper,Kafka
这里介绍一下 zookeeper和 kafka配置步骤,node1和node2上关于ES,logstash,Kibana,Nginx的配置可以参考之前的文章。node1上使用nginx代理本地Kibana。
在配置之前,需要在每台机器是做好主机名解析:
zookeeper依赖java环境,需要安装openjdk:
在三台节点上解压安装,执行如下操作:
修改zookeeper的配置文件为如下内容:
配置zookeeper集群节点ID
在node1上执行:
在node2上执行:
在node3上执行:
在三个节点上启动zookeeper:
查看三个节点的启动状态:
对zookeeper集群进行操作验证:
在任意节点上执行:
在其他节点上获取:
在三台节点上安装Kafka集群,进行如下操作:
node1上修改配置文件的如下选项,系统默认选项这里没有列出:
node2上修改kafka配置文件的如下选项:
node3上修改如下参数:
使用 <code>-daemon</code> 的方式启动kafka:
查看kafka启动状态:
查看后台进程:
提示: jps 是查看java进程的小工具,如果没有jps命令,说明只安装了java-1.8.0-openjdk,还需要安装java-1.8.0-openjdk-devel
测试Kafka添加topic:
查看添加的topic(集群中任意服务器上都可以看到):
测试获取topic:
状态说明:logstashtest有三个分区分别为0、1、2,分区0的leader是2(broker.id),分区0有三个副本,并且状态都为lsr(ln-sync,表示可以参加选举成为leader).
删除topic:
测试使用命令发送消息:
创建一个topic:
发送消息:
其他节点获取数据(在任意节点上都能获取):
编辑logstash配置文件:
前台启动logstash,输入数据:
在kafka中查看写入的数据:
数据写入成功,kafka配置完成。
在filebeat :6.1的版本中,默认的filebeat.reference.yml有各种模块的配置示例,配置filebeat写入本地文件:
提示:(引用官方原文) 在filebeat 6.0以前的版本中,可以同时启用多个输出,但只能使用不同的类型。例如,您可以启用Elasticsearch和Logstash输出,但不能启用两个Logstash输出。启用多个输出的缺点是在继续之前等待确认(Filebeat和Winlogbeat)的Beats减慢到最慢的输出。这种含义并不明显,阻碍了多个产出有用的用例。 作为我们为6.0所做的管道重新架构的一部分,我们删除了同时启用多个输出的选项。这有助于简化管道并明确Beats中的输出范围。 如果您需要多个输出,您有以下选择: 使用Logstash输出,然后使用Logstash将事件传送到多个输出. 运行相同Beat的多个实例. 如果您使用文件或控制台输出进行调试,除了主输出之外,我们建议使用-d “public”选项,将发布的事件记录在Filebeat日志中。
访问nginx,使用<code>tail -f /tmp/filebeat/filebeat</code>命令追踪日志的变化,发现有输出则配置成功。
输出日志到kakfa:
访问nginx查看kafka中是否写入:
当日志成功写入Kafka后配置logstash.
如果使用filebeat 6.0以上的版本,可以将filebeat收集到的各种类型日志统一输入到Kafka,然后通过配置logstash将日志分类输出到不同的容器中。
配置logstash读取kafka日志:
测试文件:
在前台运行,确保日志能正确输出:
重启logstash,查看Elasticsearch中是否收到数据:
Elasticsearch已经有了对应的数据:

添加索引到Kibana,展示数据:
本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/2052271