
1) 【一句话结论】对于360的运维监控系统,推荐使用Prometheus(或InfluxDB,但Prometheus在监控场景更契合,因拉模型、基于标签的聚合、与Alertmanager的集成,能高效处理服务器CPU、内存等监控指标的高可用与查询需求)。
2) 【原理/概念讲解】时序数据库用于存储时间序列数据(如监控指标),核心是“时间+指标值+标签(metadata)”。时间序列数据的特点是数据随时间变化(如服务器CPU使用率),标签用于区分不同数据源(如主机名、区域)。分布式时序数据库通过分片(将数据分散到多个节点)和复制(多副本存储)保证高可用。类比:气象站记录温度,每个站点的温度是时间序列,标签是站点位置,分布式数据库将不同站点的数据存储在不同服务器,复制确保数据不丢失。
3) 【对比与适用场景】
| 特性 | Prometheus | InfluxDB |
|---|---|---|
| 定义 | 开源监控系统,内置时序数据库 | 开源时序数据库,支持推/拉模型 |
| 数据模型 | 时间+指标+标签(拉模型,基于标签聚合) | 时间+测量值+标签(推模型,写性能高) |
| 核心特性 | 拉模型(客户端主动拉数据)、基于标签的聚合、与Alertmanager集成 | 推模型(客户端主动推数据)、写性能高、支持复杂查询 |
| 适用场景 | 服务器、应用、容器监控(指标查询、告警) | 物联网、传感器数据、高频实时数据(如日志、指标) |
| 注意点 | 需定期清理数据(避免磁盘爆炸),标签设计影响查询性能 | 写性能高,但查询复杂时可能较慢,需合理设计索引 |
4) 【示例】以Prometheus为例,写入CPU指标:
curl -XPOST 'http://prometheus-server:9090/metrics' -d 'cpu_load_short{host="node1",region="east"} 15'
查询5分钟内的CPU负载变化:
http://prometheus-server:9090/api/v1/query?query=rate(node_cpu_seconds_total{job="node",mode="idle"}[5m])
5) 【面试口播版答案】
面试官您好,对于360的运维监控系统存储服务器CPU、内存等监控指标,我推荐使用Prometheus。首先,时序数据的核心是时间、指标值和标签(如主机名、区域),Prometheus通过拉模型(客户端主动拉数据)和基于标签的聚合,能高效处理大量监控指标。比如,服务器CPU使用率数据会按主机、区域等标签分组,查询时只需指定标签即可快速聚合。高可用方面,Prometheus通过多副本(如3副本)部署,数据复制到多个节点,确保故障时数据不丢失;查询性能通过标签优化(如常用标签提前索引)和查询缓存提升。比如,实际部署中,我们会在每个区域部署Prometheus实例,通过联邦(federation)整合数据,同时结合Alertmanager实现告警,完全满足监控需求。
6) 【追问清单】
rulefile)自动清理。7) 【常见坑/雷区】