美文网首页
基于ELK搭建App前端日志查询系统

基于ELK搭建App前端日志查询系统

作者: sufun_wu | 来源:发表于2021-07-01 14:42 被阅读0次

    背景

    对业务Api接口日志记录属于空白阶段,当偶现问题发生时给开发带来较多的时间成本去解决;

    为了后续在解决、定位问题时更加迅速,我们萌生构建基于App Api的业务接口日志系统的想法;

    一、平台构思

    二、目标

    1、解决因后端服务Api不稳定在App上表现的偶现Bug排查难的问题,我们可提供必要日志;

    2、通过对上报日志分析,实时可统计出接口响应时间、流量吞吐情况、错误日志、各端访问情况等信息;

    3、支持对异常信息实时告警至开发群,减少提排错响应时间;

    4、通过对日志信息比对,快速还原当时场景;

    5、希望成为一个App基础服务,为后续业务的增加附能;

    6、支持在App上本地快速查询;


    三、使用技术

    3.1 后端服务

    Elastic + Logstash + Kibana + SpringBoot

    3.2 前端服务

    Android + iOS +  ReactNative 

    3.3 数据流转过程

    1、由App端对Http日志截获到的信息请求汇总;

    2、上传至api-log-server (springboot)

    3、api-log-server 对数据分析预处理

    4、api-log-server 将数据同步至logstash;

    5、logstash 将数据存储于elastic 形成索引入库;

    6、登陆 kibana 查询所需数据;

    四、搭建步骤


    基于docker compose搭建

    代码地址:

    git clone

    cd VvLog-Elk

    docker-compose up

    ....漫长的等待

    ctrl+C

    docker-compose restart

    至此后端服务大致部署完毕,

    登陆至kibana后台   :http://[部署的主机ip]:5601/

    用户名: elastic

    密码: changeme   

    spring boot 日志收集服务

    地址

    修改其对应的logstash 所在主机的ip 

    要求上报日志数据结构

    /**

    * 日志文件

    */

    public class LogBean {

        /**

        * 用户信息

        */

        public String userFrom = "";

        /**

        * 设备信息

        */

        public String deviceName = "";

        /**

        * 项目名称

        */

        public String projectName = "";

        /**

        * 请求方式

        */

        public String requestMethod = "";

        /**

        * 发起请求时间

        */

        public String requestTime = "";

        /**

        * 响应时间

        */

        public String responseTime = "";

        /**

        * 响应时长

        */

        public int duration = 0;

        /**

        * 发起请求参数

        */

        public JSONObject params;

        /**

        * 对应接口地址 host+path

        */

        public String apiPath = "";

        /**

        * 服务端响应数据回执

        */

        public JSONObject response;

        /**

        * 响应消息回执

        */

        public int responseCode = 200;

        /**

        * 应用业务页面来源: android/ios/rn/web

        */

        public String platform = "";

        /**

        * 版本号 EX: 1.8.1

        */

        public String versionName = "";

        /**

        * 用于存储userAgent(访问设备的一些额外信息)

        */

        public String agent = "";

    }

    五、成果展示


    1、面板展示

    2、数据分析

    3、日志报警

    相关文章

      网友评论

          本文标题:基于ELK搭建App前端日志查询系统

          本文链接:https://www.haomeiwen.com/subject/pjmjultx.html