[大数据] 客户端/服务端日志采集和处理

问题描述

  • 如何查日志?web

    • 服务端/Nginx日志存储在各台服务器本地日志文件中,只能逐台机器登录查看;
    • 客户端日志一般由客户端记录并上报到服务端,随着用户规模的增加,客户端日志会占用至关大的空间,查询起来也是不便;
    • 某些场景须要join多份很多天志,好比服务端+服务端(websocket服务),客户端+服务端(广告点击效果),如何实现?
  • 如何监控和报警?服务器

    • 线上业务出问题了,会输出错误日志,如何把这些错误日志快速发送给相关人员?
    • 有时候业务出问题,本身的报警有不够完善,只能经过一些全局的指标来发现异常(好比Nginx的错误率),这种状况如何及时发现
  • 如何统计业务数据?websocket

    • 个人应用有多少安装,多少DAU,第二天留存是多少?一般能够用第三方SDK(如umeng)等来解决,可是更详细/更个性化的指标如何(好比AB测试)统计?
    • 客户反馈应用某些功能打不开,是网络问题?仍是对应的API可用率偏低?仍是其余状况?

方案

  • 日志收集网络

    • 服务端日志经过各台机器上安装的flume收集,并写入到Kafka集群指定topic;
    • 客户端日志经过指定API上报到服务端,服务端将这些日志写入到Kafka集群指定topic;
  • 日志处理(准实时)socket

    • 使用Spark Streaming消费Kafka的消息,并将处理好的数据写入到指定的存储地点;测试

      • 日志中的错误信息,按照指定格式汇总后,发送邮件/短信/钉钉信息;
      • 日志中的指标性数据(好比Nginx的错误率),统计以后发送邮件;
      • 日志中的用户行为,解析后按照指定格式写入Kafka集群指定topic,供后续服务消费;
      • 日志实时join,(todo)
  • 日志处理 (离线)spa

    • 使用flume消费Kafka的消息,并将数据写入到HDFS;
    • 使用Spark任务将HDFS中的原始数据解析出来,并写入到事先定义的Hive表;
  • 日志展现日志

    • 使用 Hue + Impala,能够实现Hive数据的查询(秒级);
    • 编写Spark统计任务,读取Hive数据,统计结果写入到MySQL,并使用superset作图表展现;
  • 基本数据流以下:blog

    • 基本数据流
相关文章
相关标签/搜索