基于阿里云服务的移动应用日志管理方案—日志的上传、下载、存档等
前言
如题,基于阿里云服务(ECS、OSS)实现 APP 的用户日志上传以及日志下载的功能,提高用户反馈问题到研发去分析、定位、解决问题的整个工作流的效率。
术语
ECS: 云服务器ECS(Elastic Compute Service) ,云服务器ECS(Elastic Compute Service)是一种基于云计算技术的虚拟服务器产品。它允许用户在云环境中快速部署和使用具有弹性伸缩能力的计算资源
OSS:云对象存储服务(Object Storage Service,简称OSS)是一种基于云计算的存储服务,它允许用户在云环境中存储和访问大量的非结构化数据,如文本、图片、音频、视频等
STS:阿里云的OSS STS(Security Token Service)是一种安全令牌服务,它允许用户临时地获取对阿里云服务的访问权限
如下是 OSS的应用场景:应用场说明
方案
应用日志上传功能,我们采用阿里云服务来实现。这一决策基于几个关键考虑:
1、非核心功能分离:日志上传虽然重要,但并非我们产品的核心功能。通过将其部署在阿里云上,我们可以确保它不会对主业务流程造成影响。
2、独立部署的优势:
- 业务连续性:即使我们的主部署环境遇到异常或不可用的情况,日志上传功能依然可以独立运行,保证业务连续性。
- 数据完整性:通过这种方式,我们可以持续收集用户反馈的日志,这对于分析和解决系统潜在的异常问题至关重要。
通过在阿里云上部署日志上传功能,我们不仅能够提高系统的稳定性和可靠性,还能确保在任何情况下都能收集到关键的用户数据,从而快速响应并解决可能出现的问题。
业务
整个主要业务流程: 用户触发日志上传 -> 日志上传到 OSS -> 研发企业群收通知-> 研发登录 OSS 下载文件
功能
1、利用 OSS 提供的OS文件上传功能( 使用上传 SDK)来实现我们的日志上传
2、使用 OSS 工作台的资源管理功能管理日志文件(查询、删除、下载等操作)
3、使用阿里云 RAM帐号管理体系,分别创建可读、可写、或下载的各种权限 RAM帐号,来实现日志文件的权限管理;
注:本身应用就已经用了一个日志导出到本地文件的功能,上面的产品功能图标没有涉及!
细节分享
文件上传
移动端的OSS文件上传,基于首位的安全考虑,大家通常选择 STS的方案
使用阿里云的临时安全令牌(STS)服务,我们可以构建一个高效且安全的文件上传架构。具体实施方案如下:
1、客户端文件上传:移动应用(APP)端利用阿里云对象存储服务(OSS)的SDK直接上传文件。这种方式简化了文件上传流程,同时确保了数据的安全性。
2、凭证获取:上传所需的临时凭证不是由APP端直接与阿里云OSS服务交互获取,而是通过我们的业务后端服务器与阿里云OSS服务进行通信来获取。这样做的好处是,它减少了APP端的复杂性,同时增强了安全性,因为敏感操作都在服务器端完成。
3、SDK支持:阿里云为文件上传和临时凭证获取提供了全面的SDK支持,这使得集成和开发过程更加便捷和高效。
通过这种架构,我们不仅能够确保文件上传的安全性和便捷性,还能有效控制和管理访问权限,从而保护用户数据和系统资源。
时序图如下所示:
当前方案中Android 端的 OSS SDK 的版本如下:
端侧上传的示例代码如参考文档即可:
后端服务(springboot)的 STS SDK的版本如下:
后端跟阿里云STS交互,获取 STS的前置关键是要配置好 AssumeRole - 获取扮演角色的临时身份凭证
在主帐号的访问控制》身份管理》角色,配置好角色并授权 AliyunOSSFullAccess
企微消息通知
为了实现用户上传日志后企业微信群即时收到通知的功能,我们采用了阿里云OSS的事件通知服务,并结合企业微信的Webhook机制。以下是实现这一功能的关键步骤:
1、配置OSS事件通知:
首先,确保已经开通了轻量消息队列SMQ服务。
在OSS管理控制台中,设置事件通知规则,指定当文件上传操作(如PutObject、PostObject等)发生时,OSS将触发事件通知。
配置事件通知规则,使其将事件消息发送到您指定的HTTP服务器或SMQ队列。
接收OSS事件通知:
2、搭建一个HTTP服务器,用于接收OSS发送的事件通知。这些通知将包含有关文件上传操作的详细信息,如文件名、大小等。
确保您的HTTP服务器能够处理Base64编码的JSON格式消息,并能解析出事件类型和相关数据。
配置企业微信群Webhook:
3、在企业微信中创建一个应用机器人,并获取该应用机器人的Webhook URL,这是用于接收消息的端点。
在您的业务服务器上,配置一个向企业微信群发送消息的机制。当接收到OSS的事件通知后,服务器将解析事件内容,并使用Webhook URL向企业微信群发送消息。
整合与测试:
4、将OSS事件通知与企业微信Webhook整合,确保当OSS检测到文件上传事件时,能够触发向企业微信群发送消息的操作。
进行测试,验证上传文件后企业微信群是否能够收到相应的通知消息。
通过以上步骤,您可以实现一个自动化的系统,当用户上传日志文件到OSS时,企业微信群能够实时收到通知,从而提高团队的响应速度和协作效率
值得最注意一点是:OSS给我们的 httpserver post 的事件,请求包的body 数据是做了Base64 encode 的,我们收到 Body 数据后需要先Base64 decode 一下,然后再解析与使用整个 json 数据(事件数据格式是 josn ,但被 Base64 encode 了 )
如下是配置 OSS的事件通知的示例:
我们的业务服务器收到 OSS的事件通知,并解析出对应的数据后,我们就可以构造一个自定义内容的企业消息,通过 webook 把该消息发送到群里。webook 需要在对应的企微群创建一个机器人,就可以获得机器人的 webbook。
相关文档
- 群机器人配置说明
- HTTP订阅方接收示例_消息服务(SMQ)-阿里云帮助中心
- 结合轻量消息队列实现OSS事件通知
相关文章:

基于阿里云服务的移动应用日志管理方案—日志的上传、下载、存档等
前言 如题,基于阿里云服务(ECS、OSS)实现 APP 的用户日志上传以及日志下载的功能,提高用户反馈问题到研发去分析、定位、解决问题的整个工作流的效率。 术语 ECS: 云服务器ECS(Elastic Compute Service)…...

Python浪漫之画星星
效果图(动态的哦!): 完整代码(上教程): import turtle import random import time # 导入time模块# 创建一个画布 screen turtle.Screen() screen.bgcolor("red")# 创建一个海龟&a…...

Android使用协程实现自定义Toast弹框
Android使用协程实现自定义Toast弹框 最近有个消息提示需要显示10s,刚开始使用协程写了一个shoowToast方法,传入消息内容、显示时间和toast显示类型即可,以为能满足需求,结果测试说只有5s,查看日志和源码发现Android系统中Toa…...
git diff命令详解
git diff 是 Git 中非常常用的命令,用于比较不同版本的文件改动。可以比较工作区、暂存区、或者提交之间的差异。下面是对 git diff 常用场景的详细解释: 1. git diff 当你执行 git diff 时,它会显示工作区与暂存区之间的差异,也…...

Vue 插槽:组件通信的“隐形通道”
在 Vue 中,插槽(slot)是实现组件内容分发的机制,允许我们将子组件的内容传递给父组件,从而提升组件的可复用性和灵活性。插槽的本质是通过将父组件内容传递到子组件指定的插槽位置,使得子组件在渲染时可以动…...

react1816中的setState同步还是异步的深层分析
setState 是 react 中更新 UI 的唯一方法,其内部实现原理如下: 调用 setState 函数时,React 将传入的参数对象加入到组件的更新队列中。React 会调度一次更新(reconciliation),在调度过程中,Re…...

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第七篇-体积纹理绘制】
我们前几篇已经完成了渲染部分,现在终于开始做动态绘制功能了 之前使用的是这样一个体积雾的切片图,那么现在要做的就是动态编辑它 首先,让我们简单了解一下它是如何运作的: 开始绘制画布以渲染目标,并将材质绘制到画…...

Linux的环境搭建
目录 1、linux的简单介绍 2、搭建linux环境 2.1 linux的环境安装 2.2 使用Xshell远程登入linux 2.2.1 Xshell免密登入 2.3 windows与Xshell与linux云服务器的关系 1、linux的简单介绍 linux操作系统 为 部分汇编 C语言编写 的操作系统 源代码公开(开源),官…...

WPF+Mvvm案例实战(五)- 自定义雷达图实现
文章目录 1、项目准备1、创建文件2、用户控件库 2、功能实现1、用户控件库1、控件样式实现2、数据模型实现 2、应用程序代码实现1.UI层代码实现2、数据后台代码实现3、主界面菜单添加1、后台按钮方法改造:2、按钮添加:3、依赖注入 3、运行效果4、源代码获…...
网络爬虫-Python网络爬虫和C#网络爬虫
爬虫是一种从互联网抓取数据信息的自动化程序,通过 HTTP 协议向网站发送请求,获取网页内容,并通过分析网页内容来抓取和存储网页数据。爬虫可以在抓取过程中进行各种异常处理、错误重试等操作,确保爬取持续高效地运行 1、Python网…...
如何有效解除TikTok账号间的IP关联
在当今社交媒体环境中,TikTok凭借其独特的短视频形式吸引了数以亿计的用户。对许多内容创作者而言,运营多个账号是获取更大曝光和丰富内容的有效策略。然而,如何避免这些账号之间的IP关联,以防止被平台识别并封禁,成为…...
Python自省机制
Python 自省机制 Python 自省(Introspection)是一种动态检查对象的能力,使得开发者可以在运行时获取对象的相关信息,比如属性、方法、类型等。自省机制让 Python 具备了更强的动态性和灵活性,便于调试和开发。 自省&…...
wgan-gp 对连续变量 训练,6万条数据,训练结果不错,但是到局部的时候,拟合不好,是否可以对局部数据也进行计算呢
Wasserstein GAN with Gradient Penalty (WGAN-GP) 是一种改进的生成对抗网络(GAN),它通过引入梯度惩罚来改进训练过程,从而提高生成模型的稳定性和质量。如果你在使用WGAN-GP对连续变量进行训练时,发现整体训练结果不…...

python 制作 发货单 (生成 html, pdf)
起因, 目的: 某个小店,想做个发货单。 过程: 先写一个 html 模板。准备数据, 一般是从数据库读取,也可以是 json 格式,或是 python 字典。总之,是数据内容。使用 jinja2 来渲染模板。最终的结果可以是 h…...

GeoWebCache1.26调用ArcGIS切片
常用网址: GeoServer GeoWebCache (osgeo.org) GeoServer 用户手册 — GeoServer 2.20.x 用户手册 一、版本需要适配:Geoserver与GeoWebCache、jdk等的版本适配对照 查看来源 二、准备工作 1、数据:Arcgis标准的切片,通过…...

深度学习-卷积神经网络-基于VGG16模型, 实现猫狗二分类(文末附带数据集下载链接, 长期有效)
简介: 1.基于VGG16模型进行特征提取, 结合mlp实现猫狗二分类 2.训练数据--"dog_cat_class\training_set" 3.模型训练流程 1.对图像数据进行导入和预处理 2.搭建模型, 导入VGG16模型, 去除mlp层, 将经过VGG16训练后的数据作为输入, 输入到自建的mlp层中进行训练, 要…...
计算Java集合占用的空间【详解】
以ArrayList为例,假设集合元素类型是Person类型,假设集合容量为10,目前有两个person对象{name:“Jack”,age12} {name:“Tom”,age14} public class Person{private String name;private int age; }估算Person对象占用的大小: 对…...

仕考网:关于中级经济师考试的介绍
中级经济师考试是一种职称考试,每年举办一次,报名时间在7-8月,考试时间在10-11月 报名入口:中guo人事考试网 报名条件: 1.高中毕业并取得初级经济专业技术资格,从事相关专业工作满10年; 2.具备大学专科…...

SYN590RL 300MHz至450MHz ASK接收机芯片IC
一般描述 SYN590RL是赛诺克全新开发设计的一款宽电压范围,低功耗,高性能,无需外置AGC电容,灵敏度达到典型-110dBm,300MHz”450MHz 频率范围应用的单芯片ASK或OOK射频接收器。 SYN59ORL是一款典型的即插即用型单片高集成度无线接收器&…...
15分钟学 Go 第 20 天:Go的错误处理
第20天:Go的错误处理 目标 学习如何处理错误,以确保Go程序的健壮性和可维护性。 1. 错误处理的重要性 在开发中,错误处理至关重要。程序在运行时可能会出现各种问题,例如文件未找到、网络连接失败等。正确的错误处理能帮助我们…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...