问题描述如何查看日志?server/Nginx的日志保存在各个server的本地日志文件中,只能逐一登录查看;客户端日志通常由客户端记录并报告给服务器。随着用户数量的增长,客户端日志会占用相当大的空间,也不方便查询;有些场景需要加入多个日志,比如server+server(websocket服务),client+server(广告点击效果),如何实现?如何监控和报警?如果线上业务出现问题,会输出错误日志。如何快速将这些错误日志发送给相关人员?有时候业务出现问题,自己的告警并不完善,只能通过一些全局的指标(比如Nginx的错误率)来发现异常。如何及时发现这种情况,如何统计业务数据?我的应用有多少安装量,有多少DAU,第二天留存率是多少?通常用第三方SDK(比如umeng)可以解决,但是更详细/个性化的指标(比如ABtesting)统计呢?客户反馈应用部分功能打不开。是网络问题吗?还是对应的API可用率低?或者是其他东西?解决方案日志收集服务器日志通过安装在每台机器上的flume收集并写入到Kafka集群的指定主题;客户端日志通过指定的API上报给服务端,服务端将这些日志写入Kafka集群的指定主题;Process(准实时)使用SparkStreaming消费Kafka消息,并将处理后的数据写入指定存储位置;日志中的错误信息,按照指定格式汇总后,发送邮件/短信/钉钉信息;日志中的索引数据(比如Nginx的错误率)统计后会发送;日志中的用户行为会按照指定的格式解析并写入到Kafka集群的指定主题,以供后续服务消费;log实时加入,(todo)日志处理(Offline)使用flume消费Kafka消息,并将数据写入HDFS;使用Spark任务解析HDFS中的原始数据,写入到预先定义的Hive表中;日志显示使用Hue+Impala,可以实现Hive数据的查询(二级);编写Spark统计任务,读取Hive数据,将统计结果写入MySQL,使用superset进行图表展示;基本数据流如下:
