🏗️ 整体系统架构
graph TB
subgraph "客户端层 Client Layer"
A1[📱 iOS App]
A2[🤖 Android App]
A3[🌐 H5/小程序]
A1 --> B1[SDK采集模块]
A2 --> B2[SDK采集模块]
A3 --> B3[SDK采集模块]
end
subgraph "SDK核心模块 SDK Core Modules"
B1 --> C1[指标采集器
Metrics Collector] B2 --> C1 B3 --> C1 C1 --> C2[数据缓存
Local Cache] C2 --> C3[数据上报器
Reporter] C3 --> C4[上报策略
Strategy] end subgraph "网关层 Gateway Layer" C4 --> D1[API Gateway] D1 --> D2[负载均衡
Load Balancer] D2 --> D3[认证鉴权
Authentication] D3 --> D4[限流熔断
Rate Limiting] end subgraph "数据接入层 Data Ingestion Layer" D4 --> E1[数据接收服务
Receiver Service] E1 --> E2[数据验证
Validation] E2 --> E3[数据清洗
Cleaning] E3 --> E4[数据转换
Transform] end subgraph "消息队列层 Message Queue Layer" E4 --> F1[Kafka Cluster] F1 --> F2[Topic: network-metrics] F1 --> F3[Topic: error-logs] F1 --> F4[Topic: trace-data] end subgraph "数据处理层 Data Processing Layer" F2 --> G1[实时计算
Flink/Storm] F3 --> G1 F4 --> G1 G1 --> G2[聚合统计
Aggregation] G2 --> G3[异常检测
Anomaly Detection] G3 --> G4[告警触发
Alert Trigger] end subgraph "数据存储层 Storage Layer" G2 --> H1[(时序数据库
InfluxDB/TDengine)] G2 --> H2[(关系数据库
MySQL/PostgreSQL)] G2 --> H3[(日志存储
ES/ClickHouse)] E1 --> H4[(对象存储
COS/S3)] end subgraph "数据服务层 Data Service Layer" H1 --> I1[查询服务
Query Service] H2 --> I1 H3 --> I1 I1 --> I2[数据API] I1 --> I3[聚合API] I1 --> I4[报表API] end subgraph "应用层 Application Layer" I2 --> J1[📊 可视化平台
Dashboard] I3 --> J2[📈 报表系统
Report System] I4 --> J3[🔔 告警中心
Alert Center] J1 --> J4[大屏展示] J2 --> J5[定期报告] J3 --> J6[通知推送] end G4 --> J3 style A1 fill:#4285f4,stroke:#1967d2,color:#fff style A2 fill:#34a853,stroke:#188038,color:#fff style A3 fill:#fbbc04,stroke:#f29900,color:#fff style C1 fill:#ff6b6b,stroke:#d63031,color:#fff style F1 fill:#a29bfe,stroke:#6c5ce7,color:#fff style G1 fill:#fd79a8,stroke:#e84393,color:#fff style H1 fill:#fdcb6e,stroke:#e17055,color:#fff style J1 fill:#00b894,stroke:#00a085,color:#fff
Metrics Collector] B2 --> C1 B3 --> C1 C1 --> C2[数据缓存
Local Cache] C2 --> C3[数据上报器
Reporter] C3 --> C4[上报策略
Strategy] end subgraph "网关层 Gateway Layer" C4 --> D1[API Gateway] D1 --> D2[负载均衡
Load Balancer] D2 --> D3[认证鉴权
Authentication] D3 --> D4[限流熔断
Rate Limiting] end subgraph "数据接入层 Data Ingestion Layer" D4 --> E1[数据接收服务
Receiver Service] E1 --> E2[数据验证
Validation] E2 --> E3[数据清洗
Cleaning] E3 --> E4[数据转换
Transform] end subgraph "消息队列层 Message Queue Layer" E4 --> F1[Kafka Cluster] F1 --> F2[Topic: network-metrics] F1 --> F3[Topic: error-logs] F1 --> F4[Topic: trace-data] end subgraph "数据处理层 Data Processing Layer" F2 --> G1[实时计算
Flink/Storm] F3 --> G1 F4 --> G1 G1 --> G2[聚合统计
Aggregation] G2 --> G3[异常检测
Anomaly Detection] G3 --> G4[告警触发
Alert Trigger] end subgraph "数据存储层 Storage Layer" G2 --> H1[(时序数据库
InfluxDB/TDengine)] G2 --> H2[(关系数据库
MySQL/PostgreSQL)] G2 --> H3[(日志存储
ES/ClickHouse)] E1 --> H4[(对象存储
COS/S3)] end subgraph "数据服务层 Data Service Layer" H1 --> I1[查询服务
Query Service] H2 --> I1 H3 --> I1 I1 --> I2[数据API] I1 --> I3[聚合API] I1 --> I4[报表API] end subgraph "应用层 Application Layer" I2 --> J1[📊 可视化平台
Dashboard] I3 --> J2[📈 报表系统
Report System] I4 --> J3[🔔 告警中心
Alert Center] J1 --> J4[大屏展示] J2 --> J5[定期报告] J3 --> J6[通知推送] end G4 --> J3 style A1 fill:#4285f4,stroke:#1967d2,color:#fff style A2 fill:#34a853,stroke:#188038,color:#fff style A3 fill:#fbbc04,stroke:#f29900,color:#fff style C1 fill:#ff6b6b,stroke:#d63031,color:#fff style F1 fill:#a29bfe,stroke:#6c5ce7,color:#fff style G1 fill:#fd79a8,stroke:#e84393,color:#fff style H1 fill:#fdcb6e,stroke:#e17055,color:#fff style J1 fill:#00b894,stroke:#00a085,color:#fff
📡 核心指标采集架构
graph LR
subgraph "网络层监控 Network Layer"
A1[DNS解析] --> A1_1[解析耗时]
A1 --> A1_2[解析成功率]
A2[TCP连接] --> A2_1[连接耗时]
A2 --> A2_2[连接成功率]
A3[SSL握手] --> A3_1[握手耗时]
A3 --> A3_2[证书验证]
end
subgraph "HTTP层监控 HTTP Layer"
B1[请求发送] --> B1_1[请求大小]
B1 --> B1_2[发送耗时]
B2[响应接收] --> B2_1[响应大小]
B2 --> B2_2[首字节时间TTFB]
B2 --> B2_3[总耗时]
B3[HTTP状态] --> B3_1[状态码]
B3 --> B3_2[错误类型]
end
subgraph "传输层监控 Transfer Layer"
C1[数据传输] --> C1_1[传输速率]
C1 --> C1_2[丢包率]
C1 --> C1_3[重传率]
C2[带宽监控] --> C2_1[上行带宽]
C2 --> C2_2[下行带宽]
end
subgraph "应用层监控 Application Layer"
D1[业务指标] --> D1_1[接口成功率]
D1 --> D1_2[接口响应时间]
D1 --> D1_3[业务错误率]
D2[用户体验] --> D2_1[页面加载时间]
D2 --> D2_2[资源加载时间]
D2 --> D2_3[卡顿次数]
end
A1_1 --> E[指标聚合器]
A1_2 --> E
A2_1 --> E
A2_2 --> E
A3_1 --> E
A3_2 --> E
B1_1 --> E
B1_2 --> E
B2_1 --> E
B2_2 --> E
B2_3 --> E
B3_1 --> E
B3_2 --> E
C1_1 --> E
C1_2 --> E
C1_3 --> E
C2_1 --> E
C2_2 --> E
D1_1 --> E
D1_2 --> E
D1_3 --> E
D2_1 --> E
D2_2 --> E
D2_3 --> E
E --> F[本地缓存队列]
F --> G[批量上报]
style E fill:#ff6b6b,stroke:#d63031,color:#fff
style F fill:#fdcb6e,stroke:#e17055,color:#fff
style G fill:#00b894,stroke:#00a085,color:#fff
🔄 数据上报流程
sequenceDiagram
participant App as 📱 APP应用
participant SDK as 🔧 监控SDK
participant Cache as 💾 本地缓存
participant Strategy as 🎯 上报策略
participant Gateway as 🚪 API网关
participant MQ as 📮 消息队列
participant Process as ⚙️ 数据处理
participant Storage as 🗄️ 数据存储
App->>SDK: 1. 发起网络请求
SDK->>SDK: 2. Hook网络层
SDK->>SDK: 3. 采集性能指标
Note over SDK: DNS解析时间
TCP连接时间
请求响应时间
传输速率等 SDK->>Cache: 4. 写入本地缓存 Cache->>Cache: 5. 数据持久化 Cache->>Strategy: 6. 触发上报检查 alt 实时上报条件 Strategy->>Gateway: 7a. 立即上报(严重错误) else 批量上报条件 Strategy->>Strategy: 7b. 等待批量条件 Note over Strategy: 条件:
• 数据量达到阈值
• 时间间隔达到
• WiFi网络环境 Strategy->>Gateway: 8. 批量上报 end Gateway->>Gateway: 9. 认证鉴权 Gateway->>Gateway: 10. 限流检查 Gateway->>MQ: 11. 写入消息队列 MQ->>Process: 12. 消费消息 Process->>Process: 13. 实时计算聚合 Process->>Process: 14. 异常检测 Process->>Storage: 15. 持久化存储 alt 检测到异常 Process->>Process: 16. 触发告警 Process-->>App: 17. 告警通知 end Storage-->>App: 18. 查询结果返回
TCP连接时间
请求响应时间
传输速率等 SDK->>Cache: 4. 写入本地缓存 Cache->>Cache: 5. 数据持久化 Cache->>Strategy: 6. 触发上报检查 alt 实时上报条件 Strategy->>Gateway: 7a. 立即上报(严重错误) else 批量上报条件 Strategy->>Strategy: 7b. 等待批量条件 Note over Strategy: 条件:
• 数据量达到阈值
• 时间间隔达到
• WiFi网络环境 Strategy->>Gateway: 8. 批量上报 end Gateway->>Gateway: 9. 认证鉴权 Gateway->>Gateway: 10. 限流检查 Gateway->>MQ: 11. 写入消息队列 MQ->>Process: 12. 消费消息 Process->>Process: 13. 实时计算聚合 Process->>Process: 14. 异常检测 Process->>Storage: 15. 持久化存储 alt 检测到异常 Process->>Process: 16. 触发告警 Process-->>App: 17. 告警通知 end Storage-->>App: 18. 查询结果返回
📊 核心监控指标体系
| 指标类别 | 指标名称 | 采集方式 | 上报级别 | 说明 |
|---|---|---|---|---|
| DNS解析 | dns_lookup_time | 系统API Hook | 普通 | DNS查询总耗时(ms) |
| dns_success_rate | 结果统计 | 普通 | DNS解析成功率(%) | |
| dns_ip_count | 解析结果 | 低 | 返回IP地址数量 | |
| TCP连接 | tcp_connect_time | Socket监听 | 重要 | TCP三次握手耗时(ms) |
| tcp_success_rate | 连接结果 | 重要 | TCP连接成功率(%) | |
| tcp_retry_count | 重试统计 | 普通 | 连接重试次数 | |
| tcp_error_code | 错误捕获 | 高 | TCP错误码 | |
| SSL/TLS | ssl_handshake_time | SSL Hook | 重要 | SSL握手耗时(ms) |
| ssl_version | 协议检测 | 低 | TLS协议版本 | |
| ssl_cert_valid | 证书验证 | 高 | 证书有效性 | |
| HTTP请求 | http_request_time | 时间戳计算 | 重要 | HTTP请求总耗时(ms) |
| http_ttfb | 首字节时间 | 重要 | 首字节响应时间(ms) | |
| http_status_code | 响应头解析 | 重要 | HTTP状态码 | |
| http_request_size | 数据统计 | 普通 | 请求体大小(bytes) | |
| http_response_size | 数据统计 | 普通 | 响应体大小(bytes) | |
| 数据传输 | transfer_speed | 速率计算 | 重要 | 平均传输速率(KB/s) |
| packet_loss_rate | 丢包统计 | 重要 | 数据包丢失率(%) | |
| retransmit_rate | 重传统计 | 普通 | 重传率(%) | |
| bandwidth_usage | 流量监控 | 普通 | 带宽使用率(%) | |
| 业务指标 | api_success_rate | 业务统计 | 重要 | 接口成功率(%) |
| api_response_time | 业务统计 | 重要 | 接口平均响应时间(ms) | |
| business_error_rate | 业务统计 | 高 | 业务错误率(%) | |
| 环境信息 | network_type | 系统API | 普通 | 网络类型(WiFi/4G/5G) |
| carrier_name | 系统API | 低 | 运营商名称 | |
| signal_strength | 系统API | 普通 | 信号强度(dBm) |
🧩 架构核心模块详解
客户端SDK层
核心职责:底层网络性能指标采集与本地处理
关键组件:
- 指标采集器:Hook系统网络API,拦截网络请求,采集性能数据
- 本地缓存:SQLite/MMKV存储,支持离线场景
- 上报策略:智能上报策略,平衡实时性和性能
- 数据压缩:Gzip/Protobuf压缩,减少传输开销
iOS: NSURLProtocol Android: OkHttp Interceptor H5: Performance API
API网关层
核心职责:统一接入、流量控制、安全防护
关键功能:
- 负载均衡:基于Nginx/Kong的智能流量分发
- 认证鉴权:AppKey/Token验证,防止恶意上报
- 限流熔断:保护后端服务,防止流量冲击
- 协议转换:HTTP/HTTPS/QUIC多协议支持
Kong Gateway Nginx Envoy
数据接入层
核心职责:数据接收、验证、清洗、转换
处理流程:
- 数据接收:高并发HTTP接口,支持批量上报
- 格式验证:JSON Schema验证,过滤非法数据
- 数据清洗:去重、异常值过滤、字段补全
- 数据转换:标准化格式,统一时间戳、单位
Go/Java微服务 Protocol Buffers
消息队列层
核心职责:削峰填谷、异步解耦、数据分发
Topic设计:
- network-metrics:网络性能指标数据
- error-logs:错误日志和异常数据
- trace-data:链路追踪数据
- realtime-alert:实时告警数据
Kafka Pulsar TDBank
数据处理层
核心职责:实时计算、聚合统计、异常检测
处理能力:
- 实时聚合:分钟级/小时级指标聚合
- 维度分析:按地域、运营商、版本等维度统计
- 异常检测:基于阈值、同环比、机器学习
- 告警触发:多级告警策略,智能降噪
Flink Spark Streaming Storm
数据存储层
核心职责:多类型数据持久化存储
存储方案:
- 时序数据库:InfluxDB/TDengine存储性能指标
- 关系数据库:MySQL存储配置、元数据
- 日志存储:Elasticsearch/ClickHouse存储日志
- 对象存储:COS/S3存储原始数据备份
原始数据: 7天 分钟聚合: 30天 小时聚合: 180天
可视化应用层
核心职责:数据展示、报表生成、告警管理
应用功能:
- 实时大屏:关键指标实时展示,趋势分析
- 多维分析:自定义维度查询、对比分析
- 报表系统:定期生成周报、月报
- 告警中心:告警配置、通知管理
Grafana Kibana 自研平台
上报策略优化
核心目标:平衡实时性、性能、流量消耗
策略类型:
- 实时上报:严重错误、关键业务指标立即上报
- 批量上报:普通指标攒批上报,减少请求次数
- 智能调度:WiFi优先、低峰期上报
- 采样上报:高频指标采样上报,降低成本
数量阈值: 50条 时间阈值: 60秒 WiFi网络: 优先
💻 技术实现示例
1. iOS网络监控实现(NSURLProtocol)
// 自定义NSURLProtocol拦截网络请求
@interface NetworkMonitorProtocol : NSURLProtocol
@end
@implementation NetworkMonitorProtocol
+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
// 判断是否需要监控该请求
if ([NSURLProtocol propertyForKey:@"NetworkMonitored" inRequest:request]) {
return NO;
}
return YES;
}
- (void)startLoading {
// 记录开始时间
NSDate *startTime = [NSDate date];
// 创建可变请求
NSMutableURLRequest *mutableRequest = [self.request mutableCopy];
[NSURLProtocol setProperty:@YES
forKey:@"NetworkMonitored"
inRequest:mutableRequest];
// 执行网络请求
NSURLSessionDataTask *task = [[NSURLSession sharedSession]
dataTaskWithRequest:mutableRequest
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// 计算耗时
NSTimeInterval duration = [[NSDate date] timeIntervalSinceDate:startTime];
// 采集指标
NetworkMetrics *metrics = [[NetworkMetrics alloc] init];
metrics.url = request.URL.absoluteString;
metrics.method = request.HTTPMethod;
metrics.duration = duration * 1000; // 转换为毫秒
metrics.statusCode = [(NSHTTPURLResponse *)response statusCode];
metrics.requestSize = request.HTTPBody.length;
metrics.responseSize = data.length;
// 上报指标
[[NetworkMonitor sharedInstance] reportMetrics:metrics];
}];
[task resume];
}
@end
2. Android网络监控实现(OkHttp Interceptor)
// OkHttp拦截器实现网络监控
public class NetworkMonitorInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
// 记录DNS解析开始时间
long dnsStartTime = System.currentTimeMillis();
// 记录请求开始时间
long startTime = System.currentTimeMillis();
// 执行请求
Response response;
try {
response = chain.proceed(request);
} catch (Exception e) {
// 记录错误
reportError(request, e);
throw e;
}
// 计算总耗时
long duration = System.currentTimeMillis() - startTime;
// 采集性能指标
NetworkMetrics metrics = new NetworkMetrics();
metrics.setUrl(request.url().toString());
metrics.setMethod(request.method());
metrics.setDuration(duration);
metrics.setStatusCode(response.code());
metrics.setRequestSize(
request.body() != null ? request.body().contentLength() : 0
);
metrics.setResponseSize(response.body().contentLength());
// 获取网络类型
metrics.setNetworkType(getNetworkType());
// 上报指标
NetworkMonitor.getInstance().reportMetrics(metrics);
return response;
}
}
3. 数据上报SDK核心代码
// 智能上报策略实现
class ReportStrategy {
private static final int BATCH_SIZE = 50; // 批量大小
private static final long REPORT_INTERVAL = 60000; // 60秒
private List<NetworkMetrics> metricsQueue = new ArrayList<>();
private long lastReportTime = System.currentTimeMillis();
// 添加指标
public synchronized void addMetrics(NetworkMetrics metrics) {
metricsQueue.add(metrics);
// 检查是否需要立即上报(严重错误)
if (metrics.isCriticalError()) {
reportImmediately(metrics);
return;
}
// 检查批量上报条件
if (shouldReport()) {
reportBatch();
}
}
// 判断是否应该上报
private boolean shouldReport() {
// 条件1:数据量达到阈值
if (metricsQueue.size() >= BATCH_SIZE) {
return true;
}
// 条件2:时间间隔达到
long currentTime = System.currentTimeMillis();
if (currentTime - lastReportTime >= REPORT_INTERVAL) {
return true;
}
// 条件3:WiFi网络且有数据
if (isWiFiConnected() && !metricsQueue.isEmpty()) {
return true;
}
return false;
}
// 批量上报
private void reportBatch() {
if (metricsQueue.isEmpty()) {
return;
}
// 复制数据并清空队列
List<NetworkMetrics> dataToReport = new ArrayList<>(metricsQueue);
metricsQueue.clear();
lastReportTime = System.currentTimeMillis();
// 异步上报
reportAsync(dataToReport);
}
}
4. 数据处理Flink任务示例
// Flink实时聚合计算
public class NetworkMetricsAggregation {
public static void main(String[] args) throws Exception {
// 创建执行环境
StreamExecutionEnvironment env =
StreamExecutionEnvironment.getExecutionEnvironment();
// 从Kafka读取数据
FlinkKafkaConsumer<NetworkMetrics> kafkaSource =
new FlinkKafkaConsumer<>(
"network-metrics",
new NetworkMetricsSchema(),
kafkaProps
);
DataStream<NetworkMetrics> metricsStream = env.addSource(kafkaSource);
// 按维度分组聚合(1分钟窗口)
DataStream<MetricsAggResult> aggregated = metricsStream
.keyBy(metrics ->
metrics.getAppVersion() + "_" + metrics.getNetworkType()
)
.window(TumblingEventTimeWindows.of(Time.minutes(1)))
.aggregate(new MetricsAggregateFunction());
// 异常检测:平均耗时超过3秒
DataStream<Alert> alerts = aggregated
.filter(result -> result.getAvgDuration() > 3000)
.map(new AlertGenerator());
// 写入存储
aggregated.addSink(new InfluxDBSink());
alerts.addSink(new AlertKafkaSink());
// 执行任务
env.execute("Network Metrics Aggregation Job");
}
}
✨ 系统核心特性
1
高性能低侵入
• SDK采用异步采集和上报,对APP性能影响小于1%
• 使用零拷贝、内存池等技术优化内存占用
• Hook机制对业务代码无侵入,接入简单
• 支持动态配置,远程开关控制采集开启/关闭
• 使用零拷贝、内存池等技术优化内存占用
• Hook机制对业务代码无侵入,接入简单
• 支持动态配置,远程开关控制采集开启/关闭
2
高可用高可靠
• 本地缓存保证离线场景数据不丢失
• 消息队列削峰填谷,保护后端服务
• 多副本存储,数据持久化可靠性99.999%
• 服务多机房部署,支持异地容灾
• 消息队列削峰填谷,保护后端服务
• 多副本存储,数据持久化可靠性99.999%
• 服务多机房部署,支持异地容灾
3
实时性强
• 关键指标实时上报,秒级感知异常
• 流式计算引擎,分钟级聚合统计
• 实时告警机制,第一时间发现问题
• 大屏实时展示,支持秒级数据刷新
• 流式计算引擎,分钟级聚合统计
• 实时告警机制,第一时间发现问题
• 大屏实时展示,支持秒级数据刷新
4
多维度分析
• 支持按地域、运营商、版本、机型等维度分析
• 自定义维度组合查询,灵活对比分析
• 同环比分析,趋势预测
• 支持用户级别数据追踪,问题定位精准
• 自定义维度组合查询,灵活对比分析
• 同环比分析,趋势预测
• 支持用户级别数据追踪,问题定位精准
5
智能告警
• 多级告警策略:P0/P1/P2/P3
• 智能降噪:同类告警聚合,避免告警风暴
• 多渠道通知:邮件、短信、企业微信、电话
• 告警自愈:支持配置自动修复策略
• 智能降噪:同类告警聚合,避免告警风暴
• 多渠道通知:邮件、短信、企业微信、电话
• 告警自愈:支持配置自动修复策略
6
成本可控
• 采样上报策略,降低数据量和存储成本
• 数据分级存储,冷热数据分离
• 智能压缩算法,减少传输和存储开销
• 资源弹性伸缩,按需分配计算和存储资源
• 数据分级存储,冷热数据分离
• 智能压缩算法,减少传输和存储开销
• 资源弹性伸缩,按需分配计算和存储资源
🚀 部署建议与最佳实践
📋 部署清单
| 组件 | 推荐配置 | 数量 | 备注 |
|---|---|---|---|
| API网关 | 8C16G | 3台(多机房) | Nginx/Kong,支持10万QPS |
| 数据接入服务 | 16C32G | 5台(可扩展) | Go/Java微服务,无状态 |
| Kafka集群 | 16C64G SSD | 5台(3副本) | 支持千万级消息/秒 |
| Flink集群 | 32C64G | 10台 | 实时计算,可动态扩容 |
| InfluxDB | 32C128G SSD | 3台(主从) | 时序数据存储 |
| Elasticsearch | 32C64G SSD | 6台(3主3从) | 日志存储和检索 |
| MySQL | 16C64G | 2台(主从) | 配置和元数据存储 |
💡 最佳实践建议
1. 数据采集:
• 根据业务重要性设置采样率,核心业务100%,普通业务10-50%
• 敏感信息脱敏处理,符合隐私保护要求
• 定期review采集指标,删除无用指标
2. 数据上报:
• WiFi网络优先上报,节省用户流量
• 使用Protobuf等二进制协议,减少传输大小
• 合理设置批量大小和时间阈值,平衡实时性和性能
3. 数据存储:
• 原始数据保留7天,聚合数据按需保留
• 冷数据归档到对象存储,降低成本
• 定期清理过期数据,避免存储爆满
4. 监控告警:
• 建立完善的告警体系,覆盖关键指标
• 设置合理的告警阈值,避免误报和漏报
• 建立on-call机制,确保问题及时响应
5. 性能优化:
• 定期性能压测,评估系统容量
• 监控系统资源使用,提前扩容
• 优化热点查询,建立合理的索引
1. 数据采集:
• 根据业务重要性设置采样率,核心业务100%,普通业务10-50%
• 敏感信息脱敏处理,符合隐私保护要求
• 定期review采集指标,删除无用指标
2. 数据上报:
• WiFi网络优先上报,节省用户流量
• 使用Protobuf等二进制协议,减少传输大小
• 合理设置批量大小和时间阈值,平衡实时性和性能
3. 数据存储:
• 原始数据保留7天,聚合数据按需保留
• 冷数据归档到对象存储,降低成本
• 定期清理过期数据,避免存储爆满
4. 监控告警:
• 建立完善的告警体系,覆盖关键指标
• 设置合理的告警阈值,避免误报和漏报
• 建立on-call机制,确保问题及时响应
5. 性能优化:
• 定期性能压测,评估系统容量
• 监控系统资源使用,提前扩容
• 优化热点查询,建立合理的索引
