ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Zabbix 8.0 官方模板详解:IIS by Zabbix agent —— 基于性能计数器的 Windows IIS 全栈监控方案

Zabbix 8.0 官方模板详解:IIS by Zabbix agent —— 基于性能计数器的 Windows IIS 全栈监控方案 指标监控可观测性告警运维【免费下载链接】zabbixReal-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.项目地址https://gitcode.com/gh_mirrors/zabbix2/zabbix点击查看免费下载导读本文围绕 Zabbix 官方模板 IIS by Zabbix agent位于 templates/app/iis_agent展开完整讲解如何在 Windows Server 上通过 Zabbix agent 零脚本监控 IISInternet Information Services从启用 Windows 功能、配置模板宏到掌握服务状态、连接与请求速率、错误统计、缓存命中率等数十个监控项以及基于 WMI 的低层发现LLD自动发现并监控应用池Application Pool。读完本文你将能独立完成 IIS 模板的部署、参数定制、告警阈值调优并理解每一项监控背后的采集原理与源码实现。一、模板概述与适用场景模板的核心定位非常明确无需任何外部脚本仅依靠 Zabbix agent 在 Windows 主机上的原生能力服务状态检查、Windows 性能计数器、简单检查、WMI 查询即可完成对 IIS 的完整监控。这与依赖自定义脚本或第三方采集器的方案形成鲜明对比模板本身即开即用。从模板元数据template_app_iis_agent.yaml可以看出版本要求Zabbix 8.0 及以上版本测试平台Windows Server 2012R2README 明确标注的测试环境不代表其他版本不可用模板分组Templates/Applications标签体系class: software、subclass: webserver、target: iis便于在监控系统内按分类检索导出格式YAMLzabbix_exportversion8.0同时附带wizard_ready: YES即该模板可通过主机向导host wizard快速配置部署。监控能力覆盖四个层面服务与端口可用性、全局 Web 服务性能、HTTP 各方法请求统计、以及按应用池细分的运行状态与请求队列。二、环境要求与部署准备1. 前置条件使用本模板前Zabbix 端需按官方 Templates out of the box 流程将模板链接到主机。Windows 被监控主机需满足安装并运行 Zabbix agentWindows 版服务器必须启用以下 Windows 功能控制面板 → 程序和功能 → 启用或关闭 Windows 功能Web Server (IIS) Web Server (IIS)\Management Tools\IIS Management Scripts and Tools其中第二项 IIS Management Scripts and Tools 尤为关键——它提供 WMI 命名空间root\webAdministration的管理支持是模板中应用池自动发现LLD功能的数据来源。2. 采集技术基础模板如何“零脚本”取数模板内所有监控项使用的 key 均可在 Zabbix agent 源码中找到对应实现这是模板能脱离脚本运行的根本原因Key 族用途源码实现service.info[服务名]Windows 服务状态检查注册于 win32.cget_service_infoperf_counter_en[计数器路径, 间隔]英文名称性能计数器采集PDHpdhmon.c 的perf_counter_ennet.tcp.service[服务, , 端口]端口可达性简单检查Zabbix 内置简单检查wmi.getall[命名空间, WQL 查询]WMI 批量查询LLD 数据源wmi.cpp 的wmi_getall值得注意的是perf_counter_en与perf_counter的区别从 pdhmon.c 的perf_counter_ex实现看两者共用同一采集路径差异仅在计数器名称的语言PERF_COUNTER_LANG_EN强制按英文名解析规避非英文 Windows 系统上本地化计数器名导致的取数失败。第二个参数为采样间隔秒取值范围受1与ZBX_MAX_COLLECTOR_PERIOD限制pdhmon.c。模板使用wmi.getall[root\webAdministration, select Name from ApplicationPool]查询应用池列表底层在 wmi.cpp 中通过 COM 初始化 WMI 服务、执行 WQL 查询并将结果转换为 JSON供 LLD 规则生成{#APPPOOL}宏。三、模板配置与宏详解模板的灵活性通过 7 个宏体现。多数宏在 YAML 中带有config元数据优先级、输入标签、正则校验意味着在主机向导中即可按字段引导式配置而不必手工编辑宏宏说明默认值向导字段/校验{$IIS.PORT}监听端口80Listening port必填范围 1–65535{$IIS.SERVICE}端口检查所用服务类型http/https 等httpService type必填{$IIS.QUEUE.MAX.WARN}应用池请求队列长度的告警阈值空需配置Max app pool request queue length (trigger){$IIS.QUEUE.MAX.TIME}队列长度允许超过阈值的持续时间5mTime queue length may exceed threshold{$IIS.APPPOOL.MATCHES}应用池发现过滤包含正则.Application pools filter (include){$IIS.APPPOOL.NOT_MATCHES}应用池发现过滤排除正则CHANGE_IF_NEEDEDApplication pools filter (exclude){$IIS.APPPOOL.MONITORED}已发现应用池的监控开关1 启用、0 禁用1Monitoring status for discovered app pools1. 端口与服务类型若 IIS 使用非标准端口务必同步修改{$IIS.SERVICE}如 https与{$IIS.PORT}。二者共同作用于简单检查项net.tcp.service[{$IIS.SERVICE},,{$IIS.PORT}]。从 template_app_iis_agent.yaml 可见该检查项附带Service state值映射0Down、1Up并配有端口宕机告警触发器。2. 应用池监控开关与上下文宏{$IIS.APPPOOL.MONITORED}提供两级控制全局关闭将值改为0可禁用所有应用池状态相关的告警定向排除通过上下文宏{$IIS.APPPOOL.MONITORED:AppPoolName}如{$IIS.APPPOOL.MONITORED:DefaultAppPool}单独关闭某个应用池的告警。该宏在触发器中与{#APPPOOL}结合使用例如运行状态告警表达式last(/IIS by Zabbix agent/perf_counter_en[\APP_POOL_WAS({#APPPOOL})\Current Application Pool State])3 and {$IIS.APPPOOL.MONITORED:{#APPPOOL}}1即“状态非 Running值 3且该应用池被启用监控”时才告警。3. 发现过滤正则应用池发现结果由{$IIS.APPPOOL.MATCHES}默认匹配所有与{$IIS.APPPOOL.NOT_MATCHES}默认占位符CHANGE_IF_NEEDED联合过滤。在 YAML 的 LLD 规则filter中template_app_iis_agent.yaml两条条件以AND求值排除条件运算符为NOT_MATCHES_REGEX。两个宏均可在主机或链接模板层级覆盖适合按主机差异化过滤。4. 队列告警阈值{$IIS.QUEUE.MAX.WARN}为告警阈值需自行设定合理值{$IIS.QUEUE.MAX.TIME}默认5m用于消抖。告警触发要求队列长度在指定时间内持续超过阈值避免瞬时峰值误报。四、监控项全景从服务到每个 HTTP 方法模板内置 32 个常规监控项不含应用池原型按功能可归为六类。所有监控项在 YAML 中都带有语义化标签如component: requests、component: network便于前端筛选与权限管理。1. 服务与端口可用性World Wide Web Publishing Service (W3SVC) stateservice.info[W3SVC]。W3SVC 提供 Web 连接与站点管理一旦停止操作系统无法处理任何 Web 请求它依赖 WAS 服务。Windows Process Activation Service (WAS) stateservice.info[WAS]。WAS 管理承载 WCF 服务与应用池的工作进程每个应用池为其中应用划定边界。{$IIS.PORT}port pingnet.tcp.service[{$IIS.SERVICE},,{$IIS.PORT}]简单检查端口连通性。两个服务状态项使用Windows service state值映射将数字状态码映射为 Running/Stopped/Pending 等可读文本映射完整定义见 template_app_iis_agent.yaml包含255 No such service等边界值。2. 运行时长与流量Uptimeperf_counter_en[\Web Service(_Total)\Service Uptime]单位为秒Bytes Received/Sent/Total per second单位 Bps反映应用层字节收发速率不含协议头与控制字节Current connections当前活动连接数Total connection attempts自服务启动以来的连接尝试总数Connection attempts per second每秒连接尝试速率。3. 用户与请求方法统计模板对\Web Service(_Total)对象下的请求方法计数器做了近乎完整的覆盖全部带 60 秒采样间隔默认FLOAT值类型用户维度Anonymous users/sec、NonAnonymous users/sec基础方法Get、Post、Head、Put、Delete、Options、TraceRequests/SecWebDAV 相关Copy、Lock、Mkcol、Move、Propfind、ProppatchRequests/Sec扩展接口CGI、ISAPI ExtensionRequests/Sec汇总维度Total Method Requests/Sec与Other Request Methods/Sec除上述已列方法之外的全部请求。这些每秒计数器实际输出的是以分钟为单位的平均速率计数器语义为 per sec、采样间隔 60 秒故单次取值即反映该分钟内的平均速率README 中每个监控项描述均注明 Average per minute。值得注意的是README 表格中 TRACE 项描述存在与 UNLOCK 混写的小瑕疵实际 YAML 中以 key 为准分别对应Trace Requests/Sec与Unlock Requests/Sec两个不同计数器。4. 错误统计Locked Errors/Sec因目标文档被锁定而无法服务的请求速率通常向客户端返回 HTTP 423Not Found Errors/Sec文档未找到的请求速率通常返回 HTTP 404。5. 缓存统计File Cache Hits %/URI Cache Hits %用户态文件/URI 缓存命中率README 特别提示若内核 URI 缓存命中率高File Cache Hits % 可能偏低File Cache Misses/URI Cache Misses自服务启动以来的缓存未命中累计次数。6. 预处理心跳去抖大量监控项配置了Discard unchanged with heartbeat: 10m预处理。其作用若新值与前值相同则丢弃该值并在 10 分钟内保持数据流“存活”。这显著减少了对变化不敏感的计数器如服务状态、缓存命中率的无效写入节省历史存储空间同时保证图表数据点连续性。五、触发器可用性与状态告警模板的 4 个全局触发器不含原型如下触发器表达式级别说明W3SVC is not runninglast(/IIS by Zabbix agent/service.info[W3SVC])0High依赖 WAS 触发器WAS is not runninglast(/IIS by Zabbix agent/service.info[WAS])0High—Port {$IIS.PORT} is downlast(/IIS by Zabbix agent/net.tcp.service[{$IIS.SERVICE},,{$IIS.PORT}])0Average手动关闭是依赖 W3SVC 触发器Service has been restartedlast(/IIS by Zabbix agent/perf_counter_en[\Web Service(_Total)\Service Uptime])10mInfo手动关闭是触发器的依赖关系设计值得借鉴端口宕机Average依赖于 W3SVC 服务宕机HighW3SVC 宕机又依赖于 WAS 宕机。当 WAS 停止引发级联故障时只会产生最根源的一条 High 告警从属问题自动抑制避免告警风暴。六、应用池低层发现LLD与原型1. 发现规则名称Application pools discoveryKeywmi.getall[root\webAdministration, select Name from ApplicationPool]更新间隔delay: 1h宏映射lld_macro_paths将 JSON 结果中的$.Name映射为{#APPPOOL}见 template_app_iis_agent.yaml。2. 四个监控项原型原型Key说明{#APPPOOL} Uptimeperf_counter_en[\APP_POOL_WAS({#APPPOOL})\Current Application Pool Uptime]自上次重启以来的运行时长秒AppPool {#APPPOOL} stateperf_counter_en[\APP_POOL_WAS({#APPPOOL})\Current Application Pool State]应用池当前状态使用Application pool state值映射AppPool {#APPPOOL} recyclesperf_counter_en[\APP_POOL_WAS({#APPPOOL})\Total Application Pool Recycles]自 WAS 启动以来的回收次数AppPool {#APPPOOL} current queue sizeperf_counter_en[\HTTP Service Request Queues({#APPPOOL})\CurrentQueueSize]队列中的请求数采样间隔30sApplication pool state值映射template_app_iis_agent.yaml覆盖 7 种状态Uninitialized(1)、Initialized(2)、Running(3)、Disabling(4)、Disabled(5)、Shutdown Pending(6)、Delete Pending(7)。3. 四个触发器原型触发器原型表达式要点级别{#APPPOOL} has been restartedUptime 10mInfo手动关闭Application pool {#APPPOOL} is not in Running stateState 3 且{$IIS.APPPOOL.MONITORED:{#APPPOOL}}1HighApplication pool {#APPPOOL} has been recycled本周期回收计数 ≠ 上一周期#1/#2历史比较InfoRequest queue of {#APPPOOL} is too largemin(...,{$IIS.QUEUE.MAX.TIME}){$IIS.QUEUE.MAX.WARN}Warning原型间的依赖同样成链队列过大Warning依赖“应用池非 Running”High应用池非 Running 又依赖 W3SVC 宕机High形成完整的状态抑制关系。七、值映射与内置仪表盘1. 值映射Valuemaps模板携带三个值映射让原始数字在界面中呈现为人类可读文本Windows service stateW3SVC/WAS 服务状态Service state端口 ping 结果Down/UpApplication pool state应用池七态。2. 内置仪表盘 IIS Overview模板随附仪表盘见 template_app_iis_agent.yaml开箱即得三个可视化组件IIS: Requests rate堆叠图对比 Total/Other/Get/Post/Put/Delete/Head/Trace 各方法请求速率IIS: Cache missesURI 与 File 缓存未命中对比IIS: Cache hits percentageURI 与 File 缓存命中率堆叠对比。八、部署与使用建议1. 导入与挂载在 Zabbix 前端通过模板 → 导入加载templates/app/iis_agent/template_app_iis_agent.yaml或直接使用 Templates out of the box 流程在主机上链接该模板然后借助主机向导填写端口、服务类型、应用池过滤与队列阈值等字段对应各宏的config元数据。2. 上线前检查清单Windows 功能中已启用 IIS 与 IIS Management Scripts and Tools确保 WMI 命名空间可用Zabbix agent 已安装并能正常响应service.info、perf_counter_en、wmi.getall三类检查端口非标准时已同步调整{$IIS.SERVICE}与{$IIS.PORT}已设置{$IIS.QUEUE.MAX.WARN}默认无值不设置则队列告警无法触发按需通过{$IIS.APPPOOL.NOT_MATCHES}排除无需监控的应用池或用上下文宏单独关闭个别应用池告警确认 LLD 规则运行正常{#APPPOOL}宏成功展开且状态值映射生效。3. 常见问题排查思路应用池发现为空优先确认 IIS Management Scripts and Tools 是否启用、WMI 命名空间root\webAdministration是否可查询计数器返回 Cannot obtain performance information确认对应 IIS 角色/站点正在运行计数器路径与 pdhmon.c 中zbx_check_counter_path的路径校验规则一致告警过于频繁合理调大{$IIS.QUEUE.MAX.TIME}消抖窗口或借助{$IIS.APPPOOL.MONITORED:AppPoolName}排除敏感应用池。结语IIS by Zabbix agent 模板是 Zabbix 在 Windows 场景下性能计数器 WMI 服务检查三类原生采集能力的集中体现全局层面覆盖服务可用性、流量、连接、各 HTTP 方法速率、错误与缓存命中率应用池层面通过 LLD 自动发现并精细化监控状态、回收与请求队列配合级联依赖的触发器设计有效抑制告警风暴。理解其宏体系与监控项语义后你既可以原样部署也能按业务需要定制阈值与发现过滤快速落地一套无需外部脚本的 IIS 监控方案。赞分享指标监控可观测性告警运维【免费下载链接】zabbixReal-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.项目地址https://gitcode.com/gh_mirrors/zabbix2/zabbix点击查看免费下载相关推荐Zabbix 8.0 使用 IIS by Zabbix agent active 模板无脚本监控 Windows IIS 完整实战指南Zabbix 8.0 使用 IIS by Zabbix agent active 模板无脚本监控 Windows IIS 完整实战指南 导读 本文以 Za指标监控可观测性告警运维Zabbix 8.0 官方模板「Nginx by Zabbix agent」深度解析基于 stub_status 与进程指标的无脚本监控方案Zabbix 8.0 官方模板「Nginx by Zabbix agent」深度解析基于 stub_status 与进程指标的无脚本监控方案 导读 Nginx指标监控可观测性告警运维Zabbix 8.0 使用模板 Memcached by Zabbix agent 2 监控 Memcached 全指南Zabbix 8.0 使用模板 Memcached by Zabbix agent 2 监控 Memcached 全指南 导读 本文以官方模板 templa指标监控可观测性告警运维上一篇【亲测免费】 Easy Scraper 项目常见问题解决方案下一篇终极Android图标字体自定义指南使用Android-Iconics创建专属图标库 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表