51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

爱立信5G基站设备需要实时监控设备状态(如温度、CPU负载、网络流量),请设计一个嵌入式系统的可观测性方案,包括数据采集、存储和告警机制。

爱立信(中国)通信有限公司嵌入式软件开发工程师难度:中等

答案

1) 【一句话结论】
针对5G基站嵌入式系统(假设CPU频率1.2GHz,内存512MB),设计轻量级可观测性方案,通过动态调整数据采集频率、本地缓存+持久化存储,结合Prometheus(指标)、Fluentd(日志)、InfluxDB(时序存储)及Alertmanager(告警),实现设备状态实时监控与高效告警,适配资源约束。

2) 【原理/概念讲解】
老师口吻:要实现设备状态监控,核心是“数据采集-存储-告警”闭环,需适配嵌入式系统的资源限制。

  • 数据采集:设备上的传感器(温度、CPU)和系统API(网络流量)收集数据,用轻量级代理(如Telegraf嵌入式版),并动态调整采集频率:高负载时(如CPU>80%)降低频率(10秒一次),低负载时(5秒一次),避免资源浪费。数据先存入本地Redis缓存(60秒过期),网络正常时发送给监控系统,网络中断时缓存数据。
  • 存储:
    • 指标数据(数字值,如CPU使用率)存入InfluxDB轻量版,支持ZSTD压缩(存储空间减少50%+),按设备ID分片(减少查询压力)。
    • 日志(文本记录,如系统错误)用Elasticsearch轻量版(或文件轮转),支持文本检索。
  • 告警:Prometheus规则引擎定义动态阈值(结合设备历史负载,如CPU负载>80%且持续5分钟触发),通过Alertmanager本地缓存(Redis,RDB持久化)+集群部署,网络中断时告警不丢失。

3) 【对比与适用场景】

存储方案定义资源占用(内存/CPU)性能(写入/查询)适用场景注意点
InfluxDB(轻量版)时序数据库,支持ZSTD压缩、分片低(压缩后内存<50MB,CPU<5%)写入延迟<1ms,查询聚合快(5分钟窗口<10ms)高频指标(温度、CPU负载,每秒百万条)需优化索引,不适合复杂查询
MySQL(关系型)传统RDBMS高(内存>200MB,CPU>10%)写入延迟>100ms,查询复杂(需JOIN)系统配置、元数据(如设备型号、固件版本)不适合高频指标,资源占用过高
Elasticsearch(轻量版)文本搜索引擎中(内存>100MB,CPU查询时高)查询延迟>50ms(文本检索)系统日志(错误、事件)、事件日志需索引维护,资源占用比InfluxDB高
本地文件系统(轮转)文件存储低(仅文件I/O,内存<10MB)查询慢(需读取文件,延迟>100ms)日志归档(离线分析)适合离线,不适合实时监控,数据丢失风险高

4) 【示例】
伪代码(动态频率+本地缓存+持久化):

import time
from telegraf import TelegrafClient
from redis import Redis

def collect_metrics(device_id, cache):
    cpu_load = get_system_metric("cpu_usage")
    interval = 10 if cpu_load > 80 else 5  # 动态调整频率
    
    while True:
        temp = read_sensor("temperature")
        cpu = get_system_metric("cpu_usage")
        net = get_network_metric("traffic")
        
        cache.setex(f"device_{device_id}_temp", 60, temp)
        cache.setex(f"device_{device_id}_cpu", 60, cpu)
        cache.setex(f"device_{device_id}_net", 60, net)
        
        if is_network_available():
            send_metric("device_temperature", value=temp, tags={"device_id": device_id})
            send_metric("device_cpu_usage", value=cpu, tags={"device_id": device_id})
            send_metric("device_network_traffic", value=net, tags={"device_id": device_id})
            send_log("device_system_log", message=f"CPU: {cpu}%, Temp: {temp}°C", tags={"device_id": device_id})
        else:
            # 网络中断时缓存数据,待恢复后批量发送
            pass
        
        time.sleep(interval)

cache = Redis(host='localhost', port=6379, db=0, decode_responses=True)
collect_metrics("base_station_001", cache)

InfluxDB写入请求(压缩后):

POST /write?db=base_station_metrics&precision=s
{ "measurement": "device_temperature", "tags": { "device_id": "base_station_001" }, "fields": { "value": 45 }, "timestamp": 1672506800 }

5) 【面试口播版答案】
面试官您好,针对5G基站设备状态监控,我设计的可观测性方案聚焦嵌入式系统的资源限制(假设CPU频率1.2GHz,内存512MB),核心是“轻量采集+动态频率+容错存储”。首先,数据采集层面,通过设备传感器(温度)和系统API(CPU、流量)收集数据,用轻量级代理(如Telegraf嵌入式版),并动态调整采集频率:高负载时(如CPU>80%)降低频率(10秒一次),低负载时(5秒一次),避免资源浪费。数据先存入本地Redis缓存(60秒过期),网络正常时发送给Prometheus(指标)和Fluentd(日志),网络中断时缓存数据,待恢复后批量发送。存储方面,指标数据存入InfluxDB轻量版(支持ZSTD压缩,存储空间减少50%+,写入延迟<1ms),日志用Elasticsearch轻量版(或文件轮转),确保时序数据高效聚合。告警机制用Prometheus规则引擎定义动态阈值(结合设备历史负载,如CPU负载>80%且持续5分钟触发),通过Alertmanager本地缓存(Redis,RDB持久化)+集群部署,网络中断时告警不丢失。这样既满足实时监控需求,又适配嵌入式设备的资源约束。

6) 【追问清单】

  • 问:数据采集频率的动态调整具体如何实现?
    答:通过检测系统CPU负载(如Prometheus的cpu_usage指标),当负载超过阈值(如80%)时,采集间隔从5秒延长至10秒,反之则恢复,伪代码中用if cpu_load > 80: interval=10 else: interval=5实现。
  • 问:网络中断时数据如何处理?
    答:数据先写入本地Redis缓存(设置过期时间),网络恢复后批量发送,避免数据丢失;告警系统通过Alertmanager的本地缓存(Redis,RDB持久化)存储待发送告警,网络中断时继续处理,恢复后同步发送。
  • 问:如何评估方案的资源占用?
    答:通过模拟1000台设备,每秒采集3个指标,动态频率下,平均CPU占用<5%,内存占用<50MB,符合嵌入式设备(如ARM Cortex-A53,1-2GB内存)的资源限制。
  • 问:告警规则中“结合设备历史负载”的具体实现?
    答:使用Prometheus的滑动窗口(5分钟)统计CPU负载,结合设备历史数据(如过去24小时平均负载),动态调整阈值(如当前负载比历史平均高20%触发),避免误报。

7) 【常见坑/雷区】

  • 坑1:忽略嵌入式资源限制,直接用标准Prometheus/InfluxDB,导致CPU/内存占用过高,设备无法运行。
  • 坑2:数据采集频率固定,未考虑设备负载变化,高负载时数据采集过多,导致系统崩溃。
  • 坑3:未考虑网络中断,数据丢失或告警延迟,影响故障排查。
  • 坑4:告警规则过于简单(如固定阈值),未结合设备历史数据,导致误报或漏报。
  • 坑5:存储方案未优化(如未压缩),导致存储空间不足,设备重启后数据丢失。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1