APP开发程序员如何利用ELK日志分析平台,我们APP开发爱好者可以想象下下面的场景:有个应用服务器集群里面有10台服务器,每台服务器都提供了API的接口业务,其使用了负载均衡技术把API请求平均分发到每台服务器上,服务器会把处理流程记录在日志中。由于应用服务器集群使用了负载均衡技术,当查找问题时开发人员根本不知道问题出现在哪台服务器,因此开发人员不得不登录所有服务器去逐查看日志,在这个集群中,开发人员需要分别查看10台服务器的日志。如果集群中机器的规模达到100台,开发人员需要登录100台服务器查看日志,这太麻烦了!
为了解决日志查看不方便和日志中的异常(不能及时报警等问题),后台可以引入ELK(Logst ash_Elas ticSearch_Kibaua)这个分布式的日志收集和分析系统。
APP开发经验之日志处理基本模块
这个日志系统各模块功能如下。
·Logstash:收集处理解析日志。其中有两个角色
·shipper.在产生日志的机器上运行,发送日志至indexer
·indexer,接收并索引化事件。
·ElasticSearcll=一个基于Lucene的分布式搜索服务,用来提供存储搜索。
·Kibaua,一个开源和免费的工具,其可以汇总、分析和搜索重要数据日志并提供友好的Web界面,用来报警统计展示.
APP开发日志分析流程
APP开发ELK的流程如图所示
ELK收集和分析日志的流程如下。
(1)在需要收集日志的机器上运行Logstash (shipper),其用于监控、过滤并收集日志。
(2) Logstash (shipper)把符合条件的日志发送到缓冲队列Redis。
(3) Logstash (indexer)从缓冲队列Redis读取日志,将日志收集在起交给搜索服务ElasticSearch。
(4) ElasticSearch把收集到的日志结合自定义搜索的规则索引起来
(5)当用户需要在Kibana获取数据时,Kibana向ElasticSearch发送请求,在ElasticSearch的自定义搜索返回数据的基础上,以友好的页面展示给用户。
APP开发后台制作时如何Docker构建一致的开发环境
在移动互联网企业,开发者完成某个功能需求后上线发布的流程如下:
由开发者在个人电脑上部署新的功能后独自测试,测试完毕后在测试服务器中部署新功能,再由公司内部的测试人员在测试服务器,测试完毕后再在生产服务器部署新功能,正式发布该功能。
这个流程如图3-19所示
在图3-19所示的流程中会产生下面系列的问题。
·每台计算机的Linux环境、JDK版本、PHP版本、Nginx版本、MySQL版本等不致,有可能造成某些问题只是某台计算机上出现,其他电脑没法重现。
·某些开发环境搭建复杂,还要分别在个人计算机、测试服务器、生产服务器上搭建一次,里面有大量的重复劳动,效率低下。
·在个人计算机和测试服务器上有可能只是单机环境,到了生产服务器上变成了分布式环境,环境不致导致部署方法不致,造成在测试阶段没法发现问题。
Docker是个用于统开发和部署的轻量级容器,让开发者打包其应用及相关的依赖包到个可移植的容器,发布该容器到其他机器,就能很容易地实现应用的部署。好了,关于APP开发后台日志分析与利用Docker构建一致环境的经验博纳网络APP开发工程师就分享到这里。下期文章中我们接本文最后一节Docker环境构建未完部分继续分享。深圳APP开发博纳网络编辑整理。