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

背景

对业务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前端日志查询系统)