背景
对业务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 = "";
}
网友评论