You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Elasticsearch实现跨平台系统性能指标的存储与查询

基于Elasticsearch的跨平台系统性能指标存储检索实现方案

1. 索引结构设计

针对2-5分钟间隔的时序性能指标数据,优先用ES 7.9+版本提供的*时序索引(Time Series Index)*或者数据流(Data Stream)存储,自动管理分片和生命周期,无需手动维护索引切分。

核心字段定义(提前在mapping中配置避免类型错误)

  • 公共维度字段(全部设为keyword类型,用于过滤分组):
    • @timestamp:日期类型,必填,采集时的时间戳,为ES默认时序检索/聚合的核心字段
    • host.os.type:标记设备所属平台,可选值为linux/windows/macos
    • host.id/host.name:设备唯一标识,用于区分不同主机
    • metric.category:指标分类,可选值为cpu/memory/disk/network/process等
  • 指标值字段(统一设为double或scaled_float类型):
    按需定义即可,比如cpu.usage.pct(CPU总使用率)、memory.used.bytes(内存已用容量)、disk.read.ops(磁盘读IO次数)等,不同平台的特有指标单独新增字段即可,ES动态映射可自动兼容。

索引优化配置

  • 分片策略:单集群场景下建议1主1副分片即可,按天/周生成新索引,配合*索引生命周期管理(ILM)*自动清理过期数据,比如保留3个月的历史指标,大幅节省存储成本
  • 开启索引排序,按@timestamp倒序排列,时序类查询性能可提升30%以上

2. 数据写入流程

不用额外开发采集逻辑,直接用官方采集工具metricbeat即可:

  • metricbeat原生支持Linux、Windows、MacOS三类平台的性能指标采集,默认适配Linux的procfs、Windows的性能计数器、MacOS的系统状态接口,你只要修改配置文件将采集间隔设为2m或者5m,输出端直接配置Elasticsearch地址,启动后就能自动将指标写入ES,无需中间转发服务
  • 如果要自研采集脚本,直接调用ES的_bulk批量写入接口,一次提交多台主机的采集数据,避免单条写入消耗过多性能,写入前将时间戳转换为ISO格式即可

3. 数据检索与聚合(支撑图表展示)

所有看板需要的图表数据都可以直接通过ES的DSL聚合得到,无需额外加工:

  • 单主机单指标趋势图(比如某台Windows主机最近7天的CPU使用率趋势):用date_histogram做时间分桶,桶间隔和采集间隔对齐(比如5分钟采集就设fixed_interval: 5m),嵌套avg/max聚合取对应指标的值即可
  • 多维度对比数据(比如所有MacOS主机的内存使用率Top10):先按host.name做terms聚合,再取指标平均值排序,取前10条即可
  • 跨平台汇总统计:先按host.os.type做terms聚合,再嵌套时间分桶聚合,即可拿到三类平台的平均指标趋势

示例:查询某台主机最近7天5分钟粒度的CPU使用率趋势的DSL

GET metrics-*/_search
{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {"term": {"host.name": "test-win-01"}},
        {"range": {"@timestamp": {"gte": "now-7d", "lte": "now"}}}
      ]
    }
  },
  "aggs": {
    "time_bucket": {
      "date_histogram": {
        "field": "@timestamp",
        "fixed_interval": "5m"
      },
      "aggs": {
        "avg_cpu_usage": {
          "avg": {"field": "cpu.usage.pct"}
        }
      }
    }
  }
}

返回结果中aggregations.time_bucket数组可直接输入前端图表组件,x轴取key_as_string时间值,y轴取avg_cpu_usage.value指标值即可。

4. 看板实现

不需要额外对接其他工具,有两种方案可选:

  1. 零代码方案:直接用ES原生配套的Kibana仪表盘,拖曳即可生成折线图、柱状图、TopN表格、阈值告警面板,数据源直接选择存储指标的ES索引,原生支持按时间、平台、主机名过滤筛选
  2. 自研看板方案:后端直接调用ES的HTTP接口执行上述聚合DSL,返回的数据直接喂给ECharts、Chart.js等前端图表库渲染即可,无需中间层做数据转存和加工。

内容的提问来源于stack exchange,提问作者Pragyanand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:54:06