一、概述
1.ELK诞生的背景
1.1 没有ELK分析日志前
没有日志分析工具之前,运维工作存在哪些痛点?
痛点1、生产出现故障后,运维需要不停的查看各种不同的日志进行分析?是不是毫无头绪;
痛点2、项目上线出现错误,如何快速定位问题?如果后端节点过多、日志分散怎么办;
痛点3、开发人员需要实时查看日志但又不想给服务器的登陆权限,怎么办?难道每天帮开发取日志;
痛点4、如何在海量的日志中快速的提取我们想要的数据?比如:PV、UV、TOP10的URL?如果分析的日志数据量大,那么势必会导致查询速度慢、难度增
大,最终则会导致我们无法快速的获取到想要的指标。
痛点5、CDN公司需要不停的分析日志,那分析什么?主要分析命中率,为什么?因为我们给用户承诺的命中率是90%以上。如果没有达到90%,我们就要
去分析数据为什么没有被命中、为什么没有被缓存;
1.2 使用ELK分析日志后
如上所有的痛点都可以使用日志分析系统ELK解决,通过ELK,将所有的离散的服务器都收集到一个平台下;然后提取想要的内容,比如错误信息,警告信息等,
当过滤到这种信息,就马上告警,告警后,运维人员就能马上定位是哪台机器、哪个业务系统出现了问题,出现了什么问题。
2.ELK技术栈
2.1 什么是ELK
ELK 不是一个单独的技术,而是一套技术组合,是由elasticsearch、logstash、kibana 组合而成的。
ELK 是一套开源免费、功能强大的日志分析管理系统。
ELK 可以将我们的系统日志、网站日志、应用系统日志等各种日志进行收集、过滤、清洗,然后进行集中存放并可用于实时检索、分析。
E: elasticsearch数据存储;
L: logstash数据采集、数据清洗、数据过滤;
K: kibana 数据分析、数据展示;
2.2 什么是EFK
简单来说就是将 Logstash 替换成了 filebeat,那为什么要进行替换?
因为 logstash 是基于 JAVA 开发的,在收集日志时会大量的占用业务系统资源,从而影响正常线上业务。
而替换成 filebeat 这种较为轻量的日志收集组件,会让业务系统的运行更加的稳定。
2.3 什么是ELFK
2.4 EFK收集哪些日志
代理: Haproxy、Nginx
web:Nginx、Tomcat、Httpd、PHP
db:mysql、redis、mongo、elasticsearch
存储:nfs、glusterfs、fastdfs
系统:message、security
业务:app