之前都是登录到每一个机器去看日志,特别是一个服务有多个机器集群部署,还要下载多个机器的日志(运维下载日志,而后给开发排查问题),如今elk是集中式日志系统,全部的项目和项目集群都在一个日志系统里,并且能够搜索。html
界面git
L是收集日志,还有解析日志github
E是搜索引擎,就是ElasticSearch缓存
K就是界面服务器
原始日志(L的客户端)——收集和解析日志(L的服务器端)——搜索引擎(E)——界面展现(K)网络
1.收集日志和解析日志
收集日志就是客户端到服务器,就是把L客户端安装到部署项目的机器,而后读原始日志文件,再写到L的服务器端。这是收集日志,就是:原始日志文件——L的客户端——L的服务器。架构
L的服务器还要解析日志,主要是解析为固定的几个字段,好比时间、IP(哪一个机器的日志)、日志自己的内容、项目名字(哪一个项目的日志)。这几个固定字段是搜索引擎须要的字段。运维
2.搜索引擎
刚才解析以后的字段,再写给搜索引擎。性能
3.界面搜索引擎
为何要用filebeat,由于L的客户端性能很差,影响部署项目的机器,因此换了filebeat做为L的客户端,做用和L的客户端同样,都是收集日志,本质就是先读原始日志文件,而后再写到L的服务器。这就是filebeat的做用,对部署项目的机器无影响。
为何要用kafka,由于日志产生和日志消费的速度不匹配,还有因为网络缘由,可能会致使数据丢失,因此才要加消息中间件,由于消息中间件能够缓存海量数据,而且数据不会丢失(丢失可能性极小,不会大量丢失数据)。
只有ELK
L的客户端没有使用filebeat。
换了filebeat
L的客户端换成了filebeat。
加了消息中间件
双层L
从左往右看
从右往左看
第一层L做用只是分流,第二层L做用是解析为固定几个字段。
https://mp.weixin.qq.com/s/F8...
https://www.cnblogs.com/wangx...