日志处理实战:一个外卖网站解决方案(持续更新中)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: “我要点外卖“是一个平台型电商网站,用户、餐厅、配送员等。用户可以在网页、App、微信、支付宝等进行下单点菜;商家拿到订单后开始加工,并自动通知周围的快递员;快递员将外卖送到用户手中。我们希望通过该网站的案例,教会大家如何通过日志进行商业运营与决策。

背景

“我要点外卖“是一个平台型电商网站,用户、餐厅、配送员等。用户可以在网页、App、微信、支付宝等进行下单点菜;商家拿到订单后开始加工,并自动通知周围的快递员;快递员将外卖送到用户手中。

screenshot

在运营的过程中,发现了如下的问题:

  1. 获取用户难,投放一笔不小的广告费对到渠道(网页、微信推送),收货了一些用户,但无法评判各渠道的效果
  2. 用户经常抱怨送货慢,但慢在什么环节,接单、配送、加工?如何优化?
  3. 用户运营,经常搞一些优惠活动
  4. 调度问题,如何帮助商家在高峰时提前备货?如何调度更多的快递员到指定区域?

我们希望通过该网站的案例,教会大家如何通过日志进行商业运营与决策。

挑战是什么?

  1. 日志散落在外部

    1. 多渠道:例如广告商、地推等
    2. 多终端:网页版、公众账号、手机、浏览器等
    3. 异构网络:VPC、用户自建IDC,ECS等
  2. 各业务系统标准不统一,需要分别对几个平台

第一步是什么?日志收集统一

我们需要把散落在外部、内部日志收集起来,统一进行管理。在过去这块需要大量的工作,现在可以通过日志服务统一完成接入。

  • 通过WebTracking解决推广页面H5埋点问题
  • 通过移动端SDK解决用户端数据收集问题
  • 微信Web服务器:PHP/Java SDK 写入日志
  • 业务服务器:Logtail收集

screenshot

这里举一些例子:

微信服务端日志

2017-06-20 18:00:00, openID, opt, target, latency, status,location, network

字段 含义
time 用户操作时间段
openID
opt
target url
latency
location 地理位置信息
network 网络类型

可以用PHP SDK 或直接写到服务器硬盘中,通过Logtail收走。

新用户推广日志

2016-06-20 19:00:00 $md5_session, providerID, status

字段 含义
time 时间
$md5_session 用户Session,和注册ID关联
providerID 来源ID
params 其他参数

我们可以把h5页面中埋入providerID, paramsID 等参数,但用户扫描该页面注册时,就知道用户通过特定来源进入

客户端点击日志

2016-06-20 19:00:00 user, read, url, screen, android mi-ui, latency, status

点击日志可以从客户端收集,也能够从服务端收集,对于一些滚屏,退出等事件直接从客户端收集

其他

服务端、业务系统等日志

日志处理实战

运营活动中心

《未完待续》

反欺诈小组

《未完待续》

客服中心

《未完待续》

商业逻辑小组

《未完待续》

算法小组

《未完待续》

商家小组

《未完待续》

运维小组

《未完待续》

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
18天前
|
Java Maven Spring
超实用的SpringAOP实战之日志记录
【11月更文挑战第11天】本文介绍了如何使用 Spring AOP 实现日志记录功能。首先概述了日志记录的重要性及 Spring AOP 的优势,然后详细讲解了搭建 Spring AOP 环境、定义日志切面、优化日志内容和格式的方法,最后通过测试验证日志记录功能的准确性和完整性。通过这些步骤,可以有效提升系统的可维护性和可追踪性。
|
2月前
|
Java 程序员 应用服务中间件
「测试线排查的一些经验-中篇」&& 调试日志实战
「测试线排查的一些经验-中篇」&& 调试日志实战
23 1
「测试线排查的一些经验-中篇」&& 调试日志实战
|
4月前
|
SQL 运维 监控
Nest.js 实战 (十):使用 winston 打印和收集日志记录
这篇文章介绍了在Nest服务中如何使用Winston记录日志。文章首先强调了日志记录在后台服务中的重要性,接着提到Nest默认的内部日志记录器,并指出可以通过@nestjs/common包中的Logger类来全面控制日志系统的行为。文章还提到,为了在生产环境中实现更高级的日志功能,可以使用如Winston之类的Node.js日志包。接下来,文章介绍了如何在Nest服务中使用Winston记录日志,包括安装相关依赖、创建winston配置文件以及实现简单的日志记录示例。最后,文章指出更高级的自定义日志功能需要读者自己去探索。
136 2
Nest.js 实战 (十):使用 winston 打印和收集日志记录
|
2月前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
62 0
|
3月前
|
存储 监控 数据可视化
SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
【9月更文挑战第2天】SLS 虽然不是直接使用 OSS 作为底层存储,但它凭借自身独特的存储架构和功能,为用户提供了一种专业、高效的日志服务解决方案。
164 9
|
3月前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
132 0
|
4月前
|
数据库 Java 监控
Struts 2 日志管理化身神秘魔法师,洞察应用运行乾坤,演绎奇幻篇章!
【8月更文挑战第31天】在软件开发中,了解应用运行状况至关重要。日志管理作为 Struts 2 应用的关键组件,记录着每个动作和决策,如同监控摄像头,帮助我们迅速定位问题、分析性能和使用情况,为优化提供依据。Struts 2 支持多种日志框架(如 Log4j、Logback),便于配置日志级别、格式和输出位置。通过在 Action 类中添加日志记录,我们能在开发过程中获取详细信息,及时发现并解决问题。合理配置日志不仅有助于调试,还能分析用户行为,提升应用性能和稳定性。
59 0
|
4月前
|
SQL 安全 测试技术
【数据守护者必备】SQL数据备份与恢复策略全解析:从全量到日志备份,手把手教你确保企业信息万无一失的实战技巧!
【8月更文挑战第31天】数据库是企业核心业务数据的基石,为防止硬件故障、软件错误或人为失误导致的数据丢失,制定可靠的备份与恢复策略至关重要。本文通过一个在线购物平台的案例,详细介绍了使用 SQL Server 进行全量备份、差异备份及事务日志备份的方法,并演示了如何利用 SQL Server Agent 实现自动化备份任务。此外,还提供了数据恢复的具体步骤和测试建议,确保数据安全与业务连续性。
180 0
|
26天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
177 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
2月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
257 3