ELK + Filebeat 搭建日志系统

2017 年 12 月 14 日 架构文摘 Beck
Elasticsearch


分布式搜索和分析引擎。具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。


Logstash


日志收集器。搜集各种数据源,并对数据进行过滤、分析、格式化等操作,然后存储到 Elasticsearch。


Kibana


数据分析和可视化平台。与 Elasticsearch 配合使用,对其中数据进行搜索、分析、图表展示。


Filebeat


一个轻量级开源日志文件数据搜集器,Filebeat 读取文件内容,发送到 Logstash 进行解析后进入 Elasticsearch,或直接发送到 Elasticsearch 进行集中式存储和分析。


架构介绍


基于ELK的使用方式,Logstash 作为日志搜集器,Elasticsearch 进行日志存储,Kibana作为日志呈现,大致以下几种架构。


架构一




图中 Logstash 多个的原因是考虑到程序是分布式架构的情况,每台机器都需要部署一个 Logstash,如果确实是单服务器的情况部署一个 Logstash 即可。


前面提到 Logstash 会对数据进行分析、过滤、格式化等操作,这一系列操作对服务器的 CPU 和内存资源的消耗都是比较高的,所以这种架构会影响每台服务器的性能,所以并不推荐采用。


架构二



相比于架构一,增加了一个MQ 和 Logstash, Logstash 的输出和输入支持 Kafka、Redis、RabbitMQ 等常见消息队列, MQ 前的 Logstash 只作为日志收集和传输,并不解析和过滤,先将日志加入队列,由 MQ 后面的 Logstash 继续解析和过滤,这样就不至于每台服务器消耗资源都很多。


架构三



这种架构是基于架构二简化来的,实际在使用过程中也是可以采取的,日志直接进入 MQ,Logstash 消费 MQ 数据即可。


架构四



这种架构在日志数据源和 Logstash(或 Elasticsearch) 中增加了 Beats 。Beats 集合了多种单一用途数据采集器,每款采集器都是以用于转发数据的通用库 libbeat 为基石,beat 所占的系统CPU和内存几乎可以忽略不计,libbeat平台还提供了检测机制,当下游服务器负载高或网络拥堵时,会自动降低发生速率。下面的例子我们使用 Filebeat 来对文件日志的收集,其他的 beat 可以忽略。


架构四相比于架构二,如果将每台服务器上部署的 Logstash 都换成对应的 Beats ,那就是更理想的架构了。


不管怎么样,对于日志解析和过滤的 Logstash 资源消耗还是比较高的,所以如果需要,可以将 Logstash 的部署使用分布式,Elasticsearch 的部署使用集群来强化整个日志系统。


部署


部署之前需要安装好JDK,Java 8 版本。然后官方下载对应操作系统的安装包,如果采用Docker部署,直接使用提供的镜像即可。


下载包解压后就可以直接启动了。


Logstash

bin/logstash -f logstash.conf   # logstash.conf是需要自己创建的日志处理配置文件


配置文件的基本格式如下:


# 输入
input {
}
# 分析、过滤
filter {
}
# 输出
output {
}

Elasticsearch


bin/elasticsearch

启动的时候如果出现不允许root启动,那创建一个新用户:


1. 创建用户组

groupadd elsearch


2. 创建用户

useradd elsearch -g elsearch -p elsearch


3. 切到root用户,修改 elsearch 用户组下的 elsearch 用户对 elasticsearch 文件夹(解压出的的elasticsearch目录)的权限

chown -R elsearch:elsearch elasticsearch


4. 切到elsearch用户,重启 elasticsearch


Kibana


bin/kibana


Filebeat


filebeat -e -c filebeat.yml


filebeat.yml 关键配置,所有/var/log/的.log文件的日志都会输出到 Logstash 的 5044 端口


filebeat.prospectors:
- input_type: log
  paths:
    - /var/log/*.log
output.logstash:
  hosts: ["localhost:5044"]


Logstash  例子:


配置文件内容:


input {
  beats {
    port => 5044
    codec => "json"
  }
}

filter{
   if [logtype] {
     mutate { replace => { type => "%{logtype}" }}
   }else{
     mutate { replace => { type => 'unknow' }}
   }
   date {
     match => [ "createTime" , "yyyy-MM-dd HH:mm:ss" ]
   }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "logstash-%{type}-%{+YYYY.MM.dd}"
  }
  stdout { codec => rubydebug }
}


配置文件说明:


使用 Filebeat 作为 Logstash 的输入(输入输出可以有多种方式,不太了解的可以先写看看官方文档),Logstash 监听了 5044 端口。这个例子中对接收到的日志进行 json 格式化,如果 json 中包含 logtype,我们把日志的 type 设置成 logtype,如果不包含,设置成 unknow,然后把日志中的 createTime 格式化成 yyyy-MM-dd HH:mm:ss 的时间格式。最后输出到 elasticsearch,index 是 elasticsearch 的索引名称,我们根据不同的 type 创建不同的索引。


生产环境下 Kibana 使用效果图



出处:http://beckjin.com/2017/12/10/elk/


版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。


-END-


优秀人才不缺工作机会,只缺适合自己的好机会。但是他们往往没有精力从海量机会中找到最适合的那个。
100offer 会对平台上的人才和企业进行严格筛选,让「最好的人才」和「最好的公司」相遇。
扫描下方二维码,注册 100offer,谈谈你对下一份工作的期待。一周内,收到 5-10 个满足你要求的好机会:


登录查看更多
7

相关内容

ElasticSearch是一个基于Lucene的分布式实时搜索引擎解决方案。属于Elastic Stack的一部分,同时另有 logstash, kibana, beats等开源项目。
【干货书】现代数据平台架构,636页pdf
专知会员服务
253+阅读 · 2020年6月15日
【资源】100+本免费数据科学书
专知会员服务
107+阅读 · 2020年3月17日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【大规模数据系统,552页ppt】Large-scale Data Systems
专知会员服务
60+阅读 · 2019年12月21日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
携程用ClickHouse轻松玩转每天十亿级数据更新
DBAplus社群
11+阅读 · 2019年8月6日
搭建自己的searx搜索引擎
黑白之道
13+阅读 · 2019年5月31日
工行基于MySQL构建分布式架构的转型之路
炼数成金订阅号
15+阅读 · 2019年5月16日
你头疼的ELK难题,本文几乎都解决了
DBAplus社群
8+阅读 · 2019年3月20日
Flink 靠什么征服饿了么工程师?
阿里技术
6+阅读 · 2018年8月13日
SLA 99.99%以上!饿了么实时计算平台3年演进历程
51CTO博客
11+阅读 · 2018年4月10日
消息队列技术点梳理(思维导图版)
架构文摘
3+阅读 · 2018年4月3日
【AI说】揭秘京东实时数据仓库背后的神秘力量—JDQ
Arxiv
3+阅读 · 2018年11月12日
Arxiv
3+阅读 · 2018年8月27日
QuAC : Question Answering in Context
Arxiv
4+阅读 · 2018年8月21日
Arxiv
11+阅读 · 2018年1月11日
Arxiv
3+阅读 · 2017年12月18日
Arxiv
5+阅读 · 2015年9月14日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关VIP内容
相关资讯
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
携程用ClickHouse轻松玩转每天十亿级数据更新
DBAplus社群
11+阅读 · 2019年8月6日
搭建自己的searx搜索引擎
黑白之道
13+阅读 · 2019年5月31日
工行基于MySQL构建分布式架构的转型之路
炼数成金订阅号
15+阅读 · 2019年5月16日
你头疼的ELK难题,本文几乎都解决了
DBAplus社群
8+阅读 · 2019年3月20日
Flink 靠什么征服饿了么工程师?
阿里技术
6+阅读 · 2018年8月13日
SLA 99.99%以上!饿了么实时计算平台3年演进历程
51CTO博客
11+阅读 · 2018年4月10日
消息队列技术点梳理(思维导图版)
架构文摘
3+阅读 · 2018年4月3日
【AI说】揭秘京东实时数据仓库背后的神秘力量—JDQ
相关论文
Arxiv
3+阅读 · 2018年11月12日
Arxiv
3+阅读 · 2018年8月27日
QuAC : Question Answering in Context
Arxiv
4+阅读 · 2018年8月21日
Arxiv
11+阅读 · 2018年1月11日
Arxiv
3+阅读 · 2017年12月18日
Arxiv
5+阅读 · 2015年9月14日
Arxiv
3+阅读 · 2012年11月20日
Top
微信扫码咨询专知VIP会员