通过Windows exporter采集的IIS metrics能否查询各IIS应用池内存占用?
问题解答
指标判断
你测试的两个指标不符合需求:
windows_iis_worker_file_cache_memory_bytes:是IIS工作进程当前用于文件缓存的内存量windows_iis_worker_file_cache_max_memory_bytes:是IIS工作进程允许用于文件缓存的最大内存阈值
二者仅统计IIS缓存模块的局部内存占用,不代表整个IIS应用池的总内存消耗。
实现方案
无需开发自定义exporter,使用windows_exporter自带的process采集器即可实现需求:
每个运行中的IIS应用池对应一个独立的w3wp.exe系统进程,进程的command_line标签自带应用池名称参数,可直接通过进程内存指标查询对应数据。
前提条件
windows_exporter启动时已启用process采集器,可在启动参数的--collectors.enabled配置项中添加process开启。
查询语句
- 基础查询:直接获取所有运行中IIS应用池的物理内存占用(工作集)
windows_process_working_set_bytes{process_name="w3wp.exe"}
返回结果的command_line标签中包含-ap "应用池名称"格式的参数,可直接对应到具体应用池。
- 优化查询:新增独立的
app_pool标签展示应用池名称,方便筛选聚合
label_replace(windows_process_working_set_bytes{process_name="w3wp.exe"}, "app_pool", "$1", "command_line", ".*-ap\x20\"([^\"]+)\".*")
你可以直接通过app_pool标签筛选指定应用池,或者按机器、应用池维度做聚合统计。
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

