总结:ELK的目的是为了实现统一日志收集、日志存储、日志展现,解决故障排查与自愈、安全信息与事件管理、报表功能、性能分析、用户行为分析
- elasticsearch用于数据的存储和检索
- logstash用于数据收集并写入elasticsearch
- kibana用于elasticsearch查看数据的web界面
1、Elasticsearch简介
Elasticsearch 是一个高度可拓展的开源全文搜索和分析引擎,分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值
elasticsearch架构
Elasticsearch分片存储
(早期的时候数据是被分为5个,7以后变成了1个)
数据块主分片0存储在es1中,进而同步一个副本0给到es2,如果es1宕机,es2会接管对应内容,保证数据不丢失,而片分可以跨服务器的利用磁盘I/O
如果多副本分片的话,会分散落在设定(可配置)的集群中,从而合理运用服务器性能,高可用
2、logstash简介
是一个具有实时传输能力的数据收集引擎,通过插件实现日志收集和转发,支持日志过滤,普通Log、自定义JSON格式的日志解析,最终把经过处理的日志发送给elasticsearch
logstash架构
通过在web服务器上安装Logstash(jave开发)收集,官方提供filebeat(go开发)
logstash工作流程
input {从哪个地方读取,输入数据}
filter {依据grok模式对数据进行分析结构化}
output {将分析好的数据输出存储到哪些地方}
3、Kibana简介
通过elasticsearch的API进行数据查找,进行前端数据可视化的展现,可以针对特定格式的数据生成对应表格、柱状图、饼图
kibana展示
4、ELK使用场景
一般服务器的日志分类:
accesslog访问日志、errorlog错误日志、syslog系统日志