你先简单说一下ELK什么
ELK是Elasticsearch、Logstash和Kibana的组合的合称。Elasticsearch是基于Lucene的全文检索引擎产品,分布式存放海量JSON数据检索性能极高。Logstash是动态数据收集管道,拥有可扩展的插件生态系统,主要是输入、过滤、输出日志产品,正如它上述三个特点依赖它对日志进行收集、解析、过滤和输出存储的。Kibana是整个ElasticStack体系下的可视化窗口产品,核心功能就是可视化查询Elasticsearch中的海量数据,当然它并不局限于对Elasticsearch的可视化操作提供支持。比如说我们后期可以基于ElasticStack体系做分布式服务架构下的业务链路追踪APM,也可通过Kibana来操作。
为啥要用ELK呢?
现代工程已逐渐从单应用部署变成分布式部署了,越来越多的应用日志输出文件零散的分布在各服务器上,不便于运维根据日志排查跟踪运营中出现的一些问题。为了解决日志分布零散的痛点,日志收集工作也应运而生了。
什么场景适合用ELK呢?
组成一个系统的规模需要两个及以上输出日志的子应用时,但并不是说项目越大就越适合ELK来收集日志。
ElasticAPM是什么?
官方释义为,开源应用程序性能检测。使用 Elastic APM可扩展到应用程序指标。准确查看您的应用程序把时间都花在了哪里,然后您便可快速修复问题并对您推送的代码拥有十足信心。我们可以理解为它是一个开源的APM产品,APM全称是Application Performance Management & Monitoring,翻译为中文就是应用性能管理,它可以让运维人员清晰明了的知道应用程序内部的一些运行顺序,譬如我们常常说的业务链路追踪。类似的同类产品有:Zipkin、Pinpoint、SkyWalking、美团点评的CAT等。
为什么要用ElasticAPM呢,而不是同类的Zipkin或者公司内知名的Pinpoint?
选择ElasticAPM一方面原因是因为它和ELK有一个共同“爹妈”,出自于ElasticStack体系下,能高度兼容并很方便快捷的集成到ELK日志收集方案中。Zipkin在行业类同样优秀,但是相对来说集成到ELK中就不那么方便了。Pinpoint也比较优秀,但是体量太“重”了常常于Hbase配套出现。