Grafana按用户/服务展示节点内存:如何实现单独统计?
按进程维度拆分内存统计的方法
你当前的查询是统计系统级的总已用内存,要实现按单个服务、用户拆分内存,需要用到node_exporter提供的进程级内存指标,以下是具体实现方式:
一、查看systemd服务的内存占用
1. 统计systemd自身进程的内存
如果只需要查看systemd主进程的内存使用,使用进程名称匹配即可:
# 统计systemd进程的常驻物理内存(RSS) sum(node_process_resident_memory_bytes{instance=~"$node", process_name="systemd"}) # 若需要统计虚拟内存(VSZ),替换为: sum(node_process_virtual_memory_bytes{instance=~"$node", process_name="systemd"})
2. 统计所有systemd管理的服务进程内存
如果要按每个systemd服务维度统计内存,需要确保node_exporter启动时开启了systemd进程标签收集(启动参数添加--collector.processes.systemd.enable),之后可用以下查询按服务聚合:
# 按systemd服务单元分组,统计各服务的常驻内存总和 sum by (process_systemd_unit) (node_process_resident_memory_bytes{instance=~"$node"})
二、按Linux用户拆分统计内存
node_exporter的进程指标自带process_user标签,可直接按用户分组聚合:
# 按Linux用户分组,统计每个用户所有进程的常驻内存总和 sum by (process_user) (node_process_resident_memory_bytes{instance=~"$node"}) # 若需要统计虚拟内存,替换为: sum by (process_user) (node_process_virtual_memory_bytes{instance=~"$node"})
注意事项
- 若看不到
node_process_*相关指标,需检查node_exporter是否启用了进程收集器,默认情况下该收集器是开启的;若未开启,启动时添加参数--collector.processes。 - 常驻内存(
resident_memory_bytes)是进程实际占用的物理内存,虚拟内存(virtual_memory_bytes)是进程申请的虚拟地址空间大小,可根据需求选择对应指标。
内容的提问来源于stack exchange,提问作者user3187469
相关产品推荐
相关产品推荐

