写在前面的题外话
本次系列博文为了给遇到日志处理问题的小伙伴一个解决的方法和思路。请记住,任何问题的解决方法和思路都不止一个,就拿日志处理这个技术栈来说,不止有ELK,还有Loki(大家可以了解一下,我现在还不熟悉就不多说了)。
我希望小伙伴们能够从日志处理系统开发学习中能够得到两个启发:
①、日志很重要。在我们日常开发工作当中,要多打日志,特别是一些关键性的操作是一定一定要打日志。原因很简单,日志是我们(运维人员和开发人员)排查问题的重要的手段;而且我们也可以通过日志反过来推理用户做了哪些操作。
②、要有规则的打日志。如果项目组有日志规则就按照项目组的要求来打日志,如果项目组没有统一的规则,至少自己的打的日志一定要有规则。我们在处理日志文件的时候,是按照一定规则在解析日志文件的,如果日志没有规则,我们在解析日志文件的时候工作量会很大,出错率也很高,就会失去这个系统的价值和意义。
这就是题外话,也是废话........
如果你没有听说过Elastic Stack,那你一定听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch、Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所以就形成了Elastic Stack。所以说,ELK是旧的称呼,Elastic Stack是新的名字。
全系的Elastic Stack技术栈
Elasticsearch
Elasticsearch 基于java,是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash
Logstash 基于java,是一个开源的用于收集,分析和存储日志的工具。
Kibana
Kibana 基于nodejs,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的Web 界面,可以汇总、分析和搜索重要数据日志。
Beats
Beats是elastic公司开源的一款采集系统监控数据的代理agent,是在被监控服务器上以客户端形式运行的数据收集的统称,可以直接把数据发送给Elasticsearch或者通过Logstash发送给Elasticsearch,然后进行后续的数据分析活动。
Beats由如下组成:
Packetbeat:是一个网络数据包分析器,用于监控、收集网络流量信息,Packetbeat嗅探服务器之间的流量,解析应用层协议,并关联到消息的处理,其支 持ICMP (v4 and v6)、DNS、HTTP、Mysql、PostgreSQL、Redis、MongoDB、Memcache等协议;
Filebeat:用于监控、收集服务器日志文件,其已取代 logstash forwarder;
Metricbeat:可定期获取外部系统的监控指标信息,其可以监控、收集 Apache、HAProxy、MongoDB、MySQL、Nginx、PostgreSQL、Redis、System、Zookeeper等服务;
Winlogbeat:用于监控、收集Windows系统的日志信息;
Elasticsearch是一个基于Lucene的搜索服务器。他提供了一个分布式多用户能力的全文搜索引擎,基于RESTful WEB接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索、稳定、可靠、快速安装使用方便。
我们建立一个网站或者应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单的使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题及可能出现的更多其他问题。
https://www.elastic.co/cn/products/elasticsearch
自行百度
注意:
由于前后端分离开发,所以会存在跨域问题,需要在服务端做CORS的配置,如下:
vim elasticsearch.yml
http.cors.enabled: true http.cors.allow-origin: "*"
通过chrome插件的方式安装不存在该问题。
elasticsearch-head提供了4种安装方式:
https://www.elastic.co/cn/products/beats
https://www.elastic.co/cn/products/kibana
注意
修改配置文件:config/kibana.yml
#对外暴露服务的地址
server.host: "192.168.40.133"
#配置Elasticsearch
elasticsearch.url: "http://192.168.40.133:9200"
可以看到kibana页面,并且可以看到提示,导入数据到kibana。
好了,这次分享就到这里了。
这次主要是为了让小伙伴从总体上知道有这么个东西,所以没有做过多的解释,后面会针对每一个技术做进一步分享。
点赞+关注,持续为您更新技术知识。