ELK
elk + kafka + filebeat 企业内部日志分析系统
elk由ElasticSearch(依莱芙斯塔rua弛)(简称es)logstash(老歌丝带吃)和kibana三个开源工具组成
logstash 收集日志(在java上跑) es 搜索分析 kibana web页面展示
es特点 分布式 配置简洁 自动发现 索引自动分片 索引副本机制 多数据源 由java开发
logstash 带有一个web页面 只收集过滤日志 和改格式
logstash 整个工作流程分为三个阶段 输入 过滤 输出
input 负责产生事件 filter 负责处理数据和转换 output 负责数据输出
kibana es前端展示工具
head侦测es是否收到过滤的日志 用于排查错误
kafka
数据缓冲队列 消息队列 具有高吞吐量(峰值处理几十万消息)高并发(支持数千用户同时读写) 冗余 削峰 解耦 异步通信等功能
kafka 是一个分布式 支持分区 多副本基于zookeeper协调的分布式消息系统
kafka组件 话题(特定类型的信息流) 生产者(能够发布消息到话题的任何对象)消费者(可以订阅一个或多个话题)服务代理(已发布的消息保存在一组服务器中 被陈我给代理或kafka集群)zookeeper(kafka通过组k波存储集群信息)
kafka中 一个话题topic会被分成多个区partition并被分到多个服务代理broker上 分区信息及broker分布情况与消费者当前状态信息会被保存在zookeeper中
zookeeper是一个分布式协调服务 主要作用是为分布式系统提供一致性服务 提供包括配置维护 分布式同步等 kafka运行依赖于zookeeper
zookeeper主要用来协调kafka的各个服务代理 可以实现服务代理的负载均衡 增加集群高可用
filebeat收集日志
分片 是es获取日志的最小单位 它只是保存了索引中的所有数据的一部分 用于方便收集备份和迁移以及分担压力和伸缩 利用分片将数据分发到集群内各处 默认为五个 分片存储日志
索引实际上是指向一个或者多个物理分片的逻辑命名空间 Elasticsearch会自动的在各个节点中迁移分片 使数据仍然均匀分布在集群里 获取数据的时候是调取索引