1.为什么要用ELK系统:
当我们的系统发生故障时,我们需要登录到各个服务器上,使用 grep / sed / awk 等 Linux 脚本工具去日志里查找故障原因。
在没有日志系统的情况下,首先需要定位处理请求的服务器,如果这台服务器部署了多个实例,则需要去每个应用实例的日志目录下去找日志文件。
每个应用实例还会设置日志滚动策略(如:每天生成一个文件),还有日志压缩归档策略等,等数据过期之后,日志也就永久性的消失了。
综上所述,我们需要有一个日志集中收集和检索系统,这个日志系统就是ELK。
2.什么是ELK
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Kibana也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
3.ELK能解决什么问题
ELK可以帮助我们实时的将各个服务的日志统一收集存储,并给我们提供可视化的日志检索页面。
通过ELK系统,使用者不需要知道它底层的实现原理,不需要掌握Linux指令,就可以检索到我们需要的日志。
4.ELK实现原理
如图所示,ELK日志系统第一步是通过FileBeat将客户端日志收集并传输给Logstash。
Logstash将FileBeat传输过来日志数据进行过滤,然后将过滤后的日志数据发送到Elasticsearch存储。
日志存储在Elasticsearch中,并提供丰富的API进行数据交互,Kibana通过调用Elasticsearch相关API,提供日志分析友好的 Web 界面。
5.ELK搭建步骤
搭建步骤(Centos7环境):
- 安装Java 8
- 安装Elasticsearch(单机)
- 安装Kibana
- 安装安装Logstash
- 生成SSL证书
- 配置Logstash
- 加载Kibana仪表板
- 在Elasticsearch中加载Filebeat索引模板
- 设置Filebeat(添加客户端服务器)
- 测试Filebeat安装
- 连接Kibana
具体安装细则可以看下面这篇文章,讲的非常详细,只要一步步按照文章说的就可以成功安装。
参考博文:https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-centos-7
6.ELK使用细则
ELK使用主要在Kibana上面,因为Elasticsearch和Logstash在搭建的时候就已经配置完毕了,使用者只需关注Kibana即可。
在Web浏览器中,转到ELK服务器的公共IP地址。输入“kibanaadmin”凭据后,就会看到一个页面,会提示我们配置默认索引模式:
继续从索引模式菜单(左侧)中选择[filebeat] -YYY.MM.DD,然后单击Star(设置为默认索引)按钮将Filebeat索引设置为默认值。
现在单击顶部导航栏中的Discover链接。默认情况下,这将显示过去15分钟内的所有日志数据。我们可以看到带有日志事件的直方图,其中包含以下日志消息: