19.2.10 指标体系与资产可视化

指标体系与资产可视化#

本节聚焦资产管理的指标体系设计与可视化呈现,形成统一口径、可追踪、可度量的资产运营视图,为资源规划、容量治理与成本优化提供决策依据,并结合 Prometheus + Grafana 给出可执行示例。

一、指标体系设计原则#

  • 一致性与可比性:指标定义、采集口径统一,避免同名异义。
  • 可追溯与可审计:指标可回溯到资产、采集源、时间窗口。
  • 可行动性:指标能驱动运维动作,如扩容、回收、优化。
  • 分层分域:基础指标、效率指标、成本指标分层构建。

二、指标体系与可视化原理草图#

文章图片

三、核心指标分类与示例#

  1. 资产规模指标
    - 资产总量(主机、容器、网络设备、数据库实例)
    - 资产新增/退役量、变更频次
    - 资产类型占比与地域分布

  2. 容量与利用率指标
    - CPU、内存、磁盘、网络带宽利用率
    - 资源池空闲率、碎片率
    - 资源超配比、容量预警阈值

  3. 稳定性与风险指标
    - 资产健康度评分
    - 关键资产可用率
    - 软硬件版本合规率、生命周期风险资产比例

  4. 成本与效率指标
    - 单位业务成本(CPU/核小时、存储/GB月)
    - 资源回收率、闲置资产比例
    - 自动化交付覆盖率、变更成功率

四、Prometheus + Grafana 实例(安装、采集、可视化)#

以 Linux 资产为例,采集 CPU/内存/磁盘并做可视化。

1)安装 node_exporter(资产节点)

# 下载与解压
wget -O /tmp/node_exporter.tar.gz https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
tar -xzf /tmp/node_exporter.tar.gz -C /opt/
ln -s /opt/node_exporter-1.6.1.linux-amd64 /opt/node_exporter

# 前台验证
/opt/node_exporter/node_exporter --web.listen-address=":9100"
# 访问 http://<node_ip>:9100/metrics 可看到指标输出

# systemd 服务化
cat >/etc/systemd/system/node_exporter.service <<'EOF'
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=root
ExecStart=/opt/node_exporter/node_exporter --web.listen-address=":9100"
Restart=always

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now node_exporter
systemctl status node_exporter --no-pager

命令解释
- node_exporter:采集主机 CPU/内存/磁盘/网络等指标。
- --web.listen-address=":9100":监听 9100 端口供 Prometheus 拉取。

2)安装 Prometheus(指标采集与存储)

# 下载与解压
wget -O /tmp/prometheus.tar.gz https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0.linux-amd64.tar.gz
tar -xzf /tmp/prometheus.tar.gz -C /opt/
ln -s /opt/prometheus-2.47.0.linux-amd64 /opt/prometheus

# 配置文件
cat >/opt/prometheus/prometheus.yml <<'EOF'
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['192.168.10.11:9100','192.168.10.12:9100']
        labels:
          asset_type: "linux_host"
          region: "cn-bj1"
EOF

# 启动 Prometheus
/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data &
# 访问 http://<prom_ip>:9090/targets 查看采集状态

关键参数说明
- scrape_interval:采集周期,影响指标粒度与存储。
- labels:用于资产维度分组(地域、类型)。

3)安装 Grafana(可视化)

# 使用官方仓库安装
cat >/etc/yum.repos.d/grafana.repo <<'EOF'
[grafana]
name=Grafana OSS
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
EOF

yum install -y grafana
systemctl enable --now grafana-server
systemctl status grafana-server --no-pager
# 访问 http://<grafana_ip>:3000,默认账号/密码:admin/admin

4)PromQL 示例(指标体系落地)

# CPU 使用率(按主机)
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

# 内存使用率(按主机)
(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100

# 磁盘使用率(按挂载点)
100 - (node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} 
  / node_filesystem_size_bytes{fstype!~"tmpfs|overlay"}) * 100

# 资产规模(活跃实例数)
count(up{job="node"} == 1)

5)资产可视化示例(Grafana 面板字段)
- 面板标题:CPU 使用率 - 按地域
- 查询:上述 CPU PromQL + region 维度分组
- 期望效果:图表可按 regionasset_type 分组过滤,支持钻取

五、指标治理与生命周期(含 CMDB 关联示例)#

1)指标字典表结构(示例)

CREATE TABLE metric_dictionary (
  metric_id      VARCHAR(64) PRIMARY KEY,
  metric_name    VARCHAR(128),
  metric_desc    TEXT,
  calc_logic     TEXT,
  data_source    VARCHAR(64),
  refresh_cycle  VARCHAR(32),
  owner          VARCHAR(64),
  created_at     TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO metric_dictionary
(metric_id, metric_name, metric_desc, calc_logic, data_source, refresh_cycle, owner)
VALUES
('cpu_util', 'CPU使用率', '主机CPU利用率', '100-idle', 'Prometheus', '15s', 'ops');

2)CMDB 与指标关联查询(示例)

-- 假设 CMDB 资产表 cmdb_asset 与 Prometheus 采集标签一致
SELECT a.asset_id, a.hostname, a.region, m.metric_name
FROM cmdb_asset a
JOIN metric_dictionary m ON m.metric_id='cpu_util'
WHERE a.status='active';

六、常见问题与排错#

  1. Prometheus 目标状态 DOWN
# 检查端口是否可达
curl -s http://192.168.10.11:9100/metrics | head

# 检查 Prometheus 配置是否生效
curl -s http://127.0.0.1:9090/api/v1/targets | jq '.data.activeTargets[].health'

排查要点
- 防火墙/安全组放行 9100
- prometheus.yml 目标地址正确
- node_exporter 服务运行

  1. Grafana 无数据
# 检查数据源连通
curl -s http://<prom_ip>:9090/api/v1/query?query=up | jq '.status'

排查要点
- Grafana 数据源 URL 是否正确
- Prometheus 是否有采集数据(up 指标)

  1. 指标口径不一致
    - 统一 PromQL 模板与指标字典
    - 在 CMDB 中登记“指标负责人/口径”

七、练习题(含预期目标)#

  1. 练习 1:新增“资源池空闲率”指标
    - 目标:在 Prometheus 中用标签 pool 汇总资源池 CPU 空闲率
    - 提示:基于 node_cpu_seconds_total + pool 标签

  2. 练习 2:制作“闲置资产清单”面板
    - 目标:Grafana 中列出 7 天 CPU 使用率 < 5% 的主机
    - 提示:使用 avg_over_time

  3. 练习 3:指标回溯
    - 目标:从图表点击某台主机,定位到 CMDB 资产详情页
    - 提示:Grafana 变量 + 外链 URL

八、输出成果#

  • 资产指标字典与指标计算文档
  • 资产运营月报/周报模板
  • 资源池容量看板与资产全景视图
  • 闲置资产与高成本资产清单输出

本节通过标准化指标与可视化体系,使资产管理具备可量化、可对比、可持续优化的运营能力,为平台化运维提供数据支撑与决策闭环。