“ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。
docker:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
1. 数据持久化
由于 docker 镜像是只读的,而容器又是随时创建删除,那么数据保存在哪里呢?有两种方法:
1.保存在主机上,通过挂载的方式使容器内能够访问数据
2.保持在一个专门存放数据的容器内
开发时,通常将应用代码放在主机上,创建容器并将应用代码目录挂载进去,便于调试和修改。开发完成时,将应用代码直接复制到容器内,整个打包起来,便于部署和迁移。
当然,把应用代码集成到容器内的方法比较适合那些开发之后基本不再变化或者很少变化的应用,如果应用代码需要经常更新升级,那么这样反而会变得繁琐。
2. docker 思想
每个容器只做一件事
Elasticsearch
ES主要作用是通过构建分布式索引,完成对大数据的加工处理,存放的方式是:Index,Type,document,field,类似于关系数据库中库表行列。
最强大之处就是分布式索引,可以迅速查到需要查到的日志。
Logstash
Logstash是具有实时收集日志功能,可以动态统一来自不同来源的数据,任何类型的事件都可以通过各种各样的输入,过滤器和输出插件来丰富和转换。是一个重量级的服务,很占用内存,会影响到部署到本机器上的服务。
logstash在这个架构中的作用主要是收集日志,然后将每天不同来源的日志分割成K-V模式,并且存入ES中。
Kibana
kibana是一个WEB展示平台,通过对日志进行检索,筛选,然后经过友好的图形界面进行信息展示,方便对日志进行监视,预测和分析。
Filebeat
Filebeat是用于转发和集中日志数据的轻量级服务。能监视您指定的日志文件或位置,收集日志事件,并将它们转发到Logstash或elasticsearch
使用ELK的好处:
1、根据关键字查询日志详情
2、监控系统的运行状态
3、统计分析,比如接口的调用次数、执行时间、成功率等
4、基于日志的数据挖掘
5、方便开发人员随时对日志进行查阅分析
6、一个调用可能会涉及多个系统,elk能够快速查找定位到
7、日志数据的实时性