
指标监控可观测性告警运维【免费下载链接】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 官方模板Microsoft Exchange Server 2016 by Zabbix agent active展开介绍如何通过 Zabbix agent 的主动检查active checks模式采集 Windows 性能计数器Performance Counter实现对 Exchange 2016 邮件服务、数据库副本、Web 服务与域控制器 LDAP 延迟的端到端监控。读完本文你将掌握该模板的部署步骤、19 个可调宏的含义与调优思路、9 个基础监控项、3 条 LLD 发现规则及其原型监控项/触发器原型的完整构成并了解底层perf_counter_en/perf_instance_en.discovery键的实现原理能够独立将该模板落地到生产环境并针对业务规模调整阈值。模板概览与适用场景该模板是 Zabbix 官方提供的 Exchange 监控方案Official Template for Microsoft Exchange Server 2016位于仓库 templates/app/exchange_active/ 目录配套的 YAML 定义文件为 template_app_exchange_active.yaml。核心特征监控对象Microsoft Exchange Server 2016 的数据库挂载状态、ActiveSync / OWA / Web 服务负载、数据库 I/O 延迟、RPC 请求、日志写入与域控制器 LDAP 延迟。采集方式全部指标由 Zabbix agent 主动模式active上报无需在服务器上开放入站端口适合代理难以被主动轮询的隔离网络场景。版本要求Zabbix 8.0 及以上模板声明Zabbix version: 8.0 and higher。已验证环境模板官方测试版本为 Microsoft Exchange Server 2016 CU18。需要注意该模板聚焦于 Exchange 自身运行状态不包含 Windows 服务状态的监控。官方文档明确建议将其与 OS Windows by Zabbix agent active 模板配合使用以补全操作系统层面的告警覆盖。工作原理Active Agent 与英文性能计数器键理解该模板需要先弄清两类底层 agent 键。主动检查active checks模式模板中所有监控项类型均为Zabbix agent (active)。在此模式下agent 定期主动连接 Zabbix server 拉取监控项清单再按各监控项定义的间隔在本机执行采集并回传结果。模板同时使用Zabbix internal类型键zabbix[host,active_agent,available]来跟踪 agent 主动检查的可用性其取值含义为0未知、1可用、2不可用——这正是Active checks are not available触发器的数据来源。perf_counter_en英文路径的性能计数器采集模板采集 Exchange 计数器统一使用perf_counter_en[\计数器路径, 间隔]。在经典 C 版 agentzabbix_agentd中该键在 src/libs/zbxsysinfo/win32/win32.c 注册实现在 src/libs/zbxsysinfo/win32/pdhmon.cint perf_counter_en(AGENT_REQUEST *request, AGENT_RESULT *result) { return perf_counter_ex(__func__, request, result, PERF_COUNTER_LANG_EN); }与perf_counter的区别在于语言标志PERF_COUNTER_LANG_ENperf_counter_en始终使用英文计数器路径即使宿主系统语言不是英文也会在内部通过get_object_name_local()将英文对象名转换为本地化名称见 pdhmon.c从而保证模板跨语言环境可移植、计数器路径不会因 Windows 显示语言不同而失效。模板中如\MSExchange Active Manager(_total)\Database Mounted、\MSExchangeIS Store({#INSTANCE})\RPC Average Latency等路径正是英文标准路径。在 agent 2Go 实现中同一键由 Windows 插件注册并提供见 src/go/plugins/windows/perfmon/perfmon.go其插件内部维护每秒采样的环形历史缓冲history并依据第二个参数间隔单位秒对窗口内采样值进行聚合后返回见getHistory与addCounter实现perfmon.go。间隔参数在 Go 插件中限制为 1900 秒越界返回interval out of range。perf_instance_en.discovery实例发现键模板通过perf_instance_en.discovery[MSExchange Active Manager]、perf_instance_en.discovery[Web Service]、perf_instance_en.discovery[MSExchange ADAccess Domain Controllers]三条 LLD 规则动态枚举 Exchange 数据库、Web 服务和域控制器实例。该键在 C 端实现在 pdhmon.c调用PdhEnumObjectItems枚举指定性能对象的全部实例去重后输出 JSON每个实例以宏{#INSTANCE}标记见 pdhmon.c。原型监控项中的{#INSTANCE}数据库名与{#INF.STORE}信息存储实例名即由该发现结果代入。快速部署Setup按照官方文档启用该模板只需两步导入模板在 Zabbix 前端配置 → 模板中导入template_app_exchange_active.yaml也可直接使用模板市场发布版本。关联主机将模板链接到运行 MS Exchange 的主机并在该主机上启用 Zabbix agent 的主动检查配置 ServerActive 指向 Zabbix server/proxy。之后 Zabbix server 会自动向 agent 下发上述监控项与 LLD 规则。建议同时链接 OS Windows by Zabbix agent active 模板以补齐 Windows 服务与系统层面的监控。宏变量19 个可调参数模板所有关键阈值与采集间隔都通过宏暴露便于在主机级或模板级统一调整。下表完整列出默认值与用途宏名描述默认值{$MS.EXCHANGE.PERF.INTERVAL}perf_counter_en类监控项的更新间隔60秒{$MS.EXCHANGE.DB.FAULTS.TIME}数据库页面错误page faults可能超过阈值的时间窗口5m{$MS.EXCHANGE.DB.FAULTS.WARN}数据库页面错误触发阈值0{$MS.EXCHANGE.LOG.STALLS.TIME}日志记录停滞log records stalled可能超过阈值的时间窗口10m{$MS.EXCHANGE.LOG.STALLS.WARN}日志记录停滞触发阈值100{$MS.EXCHANGE.DB.ACTIVE.READ.TIME}活动数据库读操作延迟可能超过阈值的时间窗口5m{$MS.EXCHANGE.DB.ACTIVE.READ.WARN}活动数据库读操作延迟触发阈值0.02秒即 20ms{$MS.EXCHANGE.DB.ACTIVE.WRITE.TIME}活动数据库写操作延迟可能超过阈值的时间窗口10m{$MS.EXCHANGE.DB.ACTIVE.WRITE.WARN}活动数据库写操作延迟触发阈值0.05秒即 50ms{$MS.EXCHANGE.DB.PASSIVE.READ.TIME}被动数据库读操作延迟可能超过阈值的时间窗口5m{$MS.EXCHANGE.DB.PASSIVE.READ.WARN}被动数据库读操作延迟触发阈值0.2秒即 200ms{$MS.EXCHANGE.DB.PASSIVE.WRITE.TIME}被动数据库写操作延迟可能超过阈值的时间窗口10m{$MS.EXCHANGE.RPC.TIME}RPC 请求延迟可能超过阈值的时间窗口10m{$MS.EXCHANGE.RPC.WARN}RPC 请求延迟触发阈值0.05秒即 50ms{$MS.EXCHANGE.RPC.COUNT.TIME}RPC 总请求数可能超过阈值的时间窗口5m{$MS.EXCHANGE.RPC.COUNT.WARN}RPC 总请求数触发阈值70{$MS.EXCHANGE.LDAP.TIME}LDAP 指标可能超过阈值的时间窗口5m{$MS.EXCHANGE.LDAP.WARN}LDAP 触发阈值0.05秒即 50ms{$AGENT.TIMEOUT}agent 被认为不可用的超时时间5m延迟阈值换算说明模板中所有延迟类计数器RPC 平均延迟、数据库 I/O 平均延迟、LDAP 读/搜索时间的原始单位是毫秒均配置了预处理自定义倍数0.001将数值换算为秒因此宏阈值中0.02对应 20ms、0.05对应 50ms、0.2对应 200ms与 Exchange 官方性能基准读 20ms、写 50ms、RPC 50ms 且尖峰 100ms、LDAP 50ms一一对应便于直接理解与调优。基础监控项Items模板为不依赖实例发现的指标定义了 9 个基础监控项监控项名称说明类型键Databases total mounted服务器上活动的数据库副本数Zabbix agent (active)perf_counter_en[\MSExchange Active Manager(_total)\Database Mounted]预处理3h心跳去重不变值ActiveSync: ping command pending队列中等待处理的 ping 命令数Zabbix agent (active)perf_counter_en[\MSExchange ActiveSync\Ping Commands Pending, {$MS.EXCHANGE.PERF.INTERVAL}]ActiveSync: requests per second每秒 ASP.NET 收到的 HTTP 请求数反映 ActiveSync 请求速率与当前用户负载Zabbix agent (active)perf_counter_en[\MSExchange ActiveSync\Requests/sec, {$MS.EXCHANGE.PERF.INTERVAL}]ActiveSync: sync commands per second每秒处理的同步命令数客户端用于同步文件夹内项目Zabbix agent (active)perf_counter_en[\MSExchange ActiveSync\Sync Commands/sec, {$MS.EXCHANGE.PERF.INTERVAL}]Autodiscover: requests per second每秒处理的自动发现服务请求数反映当前用户负载Zabbix agent (active)perf_counter_en[\MSExchangeAutodiscover\Requests/sec, {$MS.EXCHANGE.PERF.INTERVAL}]Availability Service: availability requests per second每秒处理的忙/闲free/busy或含建议的可用性请求数一次请求可含多个邮箱Zabbix agent (active)perf_counter_en[\MSExchange Availability Service\Availability Requests (sec), {$MS.EXCHANGE.PERF.INTERVAL}]Outlook Web App: current unique users当前登录 OWA 的独立用户数登出或会话超时后才移除反映活跃会话Zabbix agent (active)perf_counter_en[\MSExchange OWA\Current Unique Users, {$MS.EXCHANGE.PERF.INTERVAL}]Outlook Web App: requests per secondOWA 每秒处理的请求数Zabbix agent (active)perf_counter_en[\MSExchange OWA\Requests/sec, {$MS.EXCHANGE.PERF.INTERVAL}]MSExchangeWS: requests per second每秒处理的 Web 服务请求数Zabbix agent (active)perf_counter_en[\MSExchangeWS\Requests/sec, {$MS.EXCHANGE.PERF.INTERVAL}]此外还有Zabbix internal类型监控项Active agent availability键zabbix[host,active_agent,available]用于输出主动检查可用性状态0 未知 / 1 可用 / 2 不可用对应主机列表中的可用性图标。基础触发器模板为基础监控项定义了 1 个触发器名称描述表达式严重级别MS Exchange 2016: Active checks are not available主动检查不可用agent 长时间未发送心跳min(/Microsoft Exchange Server 2016 by Zabbix agent active/zabbix[host,active_agent,available],{$AGENT.TIMEOUT})2High该触发器在{$AGENT.TIMEOUT}默认 5m内 agent 可用性持续为2时触发 High 告警用于在 agent 掉线或主动检查失败时第一时间通知管理员。数据库发现Databases discoveryLLD 规则名称说明类型键Databases discovery发现 Exchange 数据库Zabbix agent (active)perf_instance.discovery[MSExchange Active Manager]含一段 JavaScript 预处理因文本过长详见模板 YAML 文件注意该规则使用不带_en的perf_instance.discovery而键内计数器名称仍以英文对象枚举发现的每个数据库实例以{#INSTANCE}标记。原型监控项Item prototypes名称说明键与预处理Active Manager [{#INSTANCE}]: Database copy role数据库副本角色活动/被动perf_counter_en[\MSExchange Active Manager({#INSTANCE})\Database Copy Role Active]3h心跳去重Information Store [{#INSTANCE}]: Database state数据库状态0 无副本且已卸除1 主数据库已挂载2 被动副本且状态健康perf_counter_en[\MSExchangeIS Store({#INSTANCE})\Database State]3m心跳去重Information Store [{#INSTANCE}]: Active mailboxes count数据库中的活动邮箱数perf_counter_en[\MSExchangeIS Store({#INSTANCE})\Active mailboxes]Information Store [{#INSTANCE}]: Page faults per second因数据库缓存无可用页面而无法服务的页面错误速率高于 0 通常意味着数据库写入平均延迟过高perf_counter_en[\MSExchange Database({#INF.STORE})\Database Page Fault Stalls/sec, {$MS.EXCHANGE.PERF.INTERVAL}]Information Store [{#INSTANCE}]: Log records stalled因日志缓冲区已满而无法每秒写入日志缓冲区的日志记录数平均值应低于 10/秒峰值不应高于 100/秒perf_counter_en[\MSExchange Database({#INF.STORE})\Log Record Stalls/sec, {$MS.EXCHANGE.PERF.INTERVAL}]Information Store [{#INSTANCE}]: Log threads waiting等待写入日志以完成数据库更新的线程数perf_counter_en[\MSExchange Database({#INF.STORE})\Log Threads Waiting, {$MS.EXCHANGE.PERF.INTERVAL}]Information Store [{#INSTANCE}]: RPC requests per second每个数据库实例每秒的 RPC 操作数perf_counter_en[\MSExchangeIS Store({#INSTANCE})\RPC Operations/sec, {$MS.EXCHANGE.PERF.INTERVAL}]Information Store [{#INSTANCE}]: RPC requests latency每个数据库的 RPC 平均延迟自 exrpc32 加载以来所有 RPC 的平均值应始终 50ms、峰值 100msperf_counter_en[\MSExchangeIS Store({#INSTANCE})\RPC Average Latency, {$MS.EXCHANGE.PERF.INTERVAL}]预处理倍数0.001Information Store [{#INSTANCE}]: RPC requests total信息存储进程中正在执行的 RPC 请求总数应始终 70perf_counter_en[\MSExchangeIS Store({#INSTANCE})\RPC requests, {$MS.EXCHANGE.PERF.INTERVAL}]Database Counters [{#INSTANCE}]: Active database read operations per second每秒活动数据库读操作数perf_counter_en[\MSExchange Database Instances({#INF.STORE}/_Total)\I/O Database Reads (Attached)/sec, {$MS.EXCHANGE.PERF.INTERVAL}]Database Counters [{#INSTANCE}]: Active database read operations latency每次数据库读操作的平均耗时平均应 20msperf_counter_en[\MSExchange Database Instances({#INF.STORE}/_Total)\I/O Database Reads (Attached) Average Latency, {$MS.EXCHANGE.PERF.INTERVAL}]倍数0.001Database Counters [{#INSTANCE}]: Passive database read operations latency每次被动数据库读操作的平均耗时平均应 200msperf_counter_en[\MSExchange Database Instances({#INF.STORE}/_Total)\I/O Database Reads (Recovery) Average Latency, {$MS.EXCHANGE.PERF.INTERVAL}]倍数0.001Database Counters [{#INSTANCE}]: Active database write operations per second每个已挂载数据库实例每秒的写操作数perf_counter_en[\MSExchange Database Instances({#INF.STORE}/_Total)\I/O Database Writes (Attached)/sec, {$MS.EXCHANGE.PERF.INTERVAL}]Database Counters [{#INSTANCE}]: Active database write operations latency每次数据库写操作的平均耗时平均应 50msperf_counter_en[\MSExchange Database Instances({#INF.STORE}/_Total)\I/O Database Writes (Attached) Average Latency, {$MS.EXCHANGE.PERF.INTERVAL}]倍数0.001Database Counters [{#INSTANCE}]: Passive database write operations latency每次被动数据库写操作的平均耗时毫秒应低于同实例的读延迟perf_counter_en[\MSExchange Database Instances({#INF.STORE}/_Total)\I/O Database Writes (Recovery) Average Latency, {$MS.EXCHANGE.PERF.INTERVAL}]倍数0.001触发器原型Trigger prototypes名称描述表达式严重级别Information Store [{#INSTANCE}]: Page faults is too high数据库{#INSTANCE}页面错误过多生产服务器上该计数器应为 0min(/...perf_counter_en[\MSExchange Database({#INF.STORE})\Database Page Fault Stalls/sec, {$MS.EXCHANGE.PERF.INTERVAL}],{$MS.EXCHANGE.DB.FAULTS.TIME}){$MS.EXCHANGE.DB.FAULTS.WARN}AverageInformation Store [{#INSTANCE}]: Log records stalls is too high停滞的日志记录过多平均值应 10avg(/...perf_counter_en[\MSExchange Database({#INF.STORE})\Log Record Stalls/sec, {$MS.EXCHANGE.PERF.INTERVAL}],{$MS.EXCHANGE.LOG.STALLS.TIME}){$MS.EXCHANGE.LOG.STALLS.WARN}AverageInformation Store [{#INSTANCE}]: RPC Requests latency is too high应始终 50ms、峰值 100msmin(/...perf_counter_en[\MSExchangeIS Store({#INSTANCE})\RPC Average Latency, {$MS.EXCHANGE.PERF.INTERVAL}],{$MS.EXCHANGE.RPC.TIME}){$MS.EXCHANGE.RPC.WARN}WarningInformation Store [{#INSTANCE}]: RPC Requests total count is too high应始终 70min(/...perf_counter_en[\MSExchangeIS Store({#INSTANCE})\RPC requests, {$MS.EXCHANGE.PERF.INTERVAL}],{$MS.EXCHANGE.RPC.COUNT.TIME}){$MS.EXCHANGE.RPC.COUNT.WARN}WarningDatabase Counters [{#INSTANCE}]: Average read time latency is too high平均应 20msmin(/...perf_counter_en[\MSExchange Database Instances({#INF.STORE}/_Total)\I/O Database Reads (Attached) Average Latency, {$MS.EXCHANGE.PERF.INTERVAL}],{$MS.EXCHANGE.DB.ACTIVE.READ.TIME}){$MS.EXCHANGE.DB.ACTIVE.READ.WARN}WarningDatabase Counters [{#INSTANCE}]: Average read time latency is too high平均应 200msmin(/...perf_counter_en[\MSExchange Database Instances({#INF.STORE}/_Total)\I/O Database Reads (Recovery) Average Latency, {$MS.EXCHANGE.PERF.INTERVAL}],{$MS.EXCHANGE.DB.PASSIVE.READ.TIME}){$MS.EXCHANGE.DB.PASSIVE.READ.WARN}WarningDatabase Counters [{#INSTANCE}]: Average write time latency is too high for {$MS.EXCHANGE.DB.ACTIVE.WRITE.TIME}平均应 50msmin(/...perf_counter_en[\MSExchange Database Instances({#INF.STORE}/_Total)\I/O Database Writes (Attached) Average Latency, {$MS.EXCHANGE.PERF.INTERVAL}],{$MS.EXCHANGE.DB.ACTIVE.WRITE.TIME}){$MS.EXCHANGE.DB.ACTIVE.WRITE.WARN}WarningDatabase Counters [{#INSTANCE}]: Average write time latency is higher than read time latency for {$MS.EXCHANGE.DB.PASSIVE.WRITE.TIME}被动写延迟应低于同实例被动读延迟avg(...I/O Database Writes (Recovery) Average Latency...,{$MS.EXCHANGE.DB.PASSIVE.WRITE.TIME})avg(...I/O Database Reads (Recovery) Average Latency...,{$MS.EXCHANGE.DB.PASSIVE.WRITE.TIME})Warning从表达式可以看到模板的告警设计特点延迟类告警统一使用min(...,{时间宏}){阈值宏}即窗口内最小值仍超阈值才触发避免瞬时尖峰误报日志停滞类则使用avg平滑平均值被动写延迟告警直接与同窗口内被动读延迟做相对比较体现了写延迟应低于读延迟的 Exchange 运维准则。Web 服务发现Web services discovery规则/原型说明键LLD 规则Web services discovery发现 Exchange Web 服务perf_instance_en.discovery[Web Service]原型监控项Web Service [{#INSTANCE}]: Current connections每个 Web 服务当前的连接数perf_counter_en[\Web Service({#INSTANCE})\Current Connections, {$MS.EXCHANGE.PERF.INTERVAL}]该规则通过perf_instance_en.discovery枚举 IIS 的 Web Service 性能对象实例每个站点一个实例动态生成连接数监控帮助定位异常增长的连接如并发瓶颈或异常客户端。域控制器发现LDAP discoveryExchange 2016 依赖 Active Directory域控制器响应速度直接影响邮件投递与查询。模板通过 LDAP 发现规则监控每个域控制器的目录访问延迟规则/原型说明键与预处理LLD 规则LDAP discovery发现域控制器perf_instance_en.discovery[MSExchange ADAccess Domain Controllers]原型监控项Domain Controller [{#INSTANCE}]: Read time向该域控制器发送 LDAP 读请求并收到响应所需时间理想 50ms尖峰 100ms 可接受perf_counter_en[\MSExchange ADAccess Domain Controllers({#INSTANCE})\LDAP Read Time, {$MS.EXCHANGE.PERF.INTERVAL}]倍数0.001原型监控项Domain Controller [{#INSTANCE}]: Search time发送 LDAP 搜索请求并收到响应所需时间理想 50ms尖峰 100ms 可接受perf_counter_en[\MSExchange ADAccess Domain Controllers({#INSTANCE})\LDAP Search Time, {$MS.EXCHANGE.PERF.INTERVAL}]倍数0.001触发器原型LDAP read time is too high应始终 50ms、峰值 100msmin(...LDAP Read Time...,{$MS.EXCHANGE.LDAP.TIME}){$MS.EXCHANGE.LDAP.WARN}Average触发器原型LDAP search time is too high应始终 50ms、峰值 100msmin(...LDAP Search Time...,{$MS.EXCHANGE.LDAP.TIME}){$MS.EXCHANGE.LDAP.WARN}Average当某个域控制器响应变慢阈值宏{$MS.EXCHANGE.LDAP.WARN}默认 0.05 秒持续超过{$MS.EXCHANGE.LDAP.TIME}窗口时触发 Average 告警便于定位是整体 AD 问题还是单一 DC 问题。调优建议与注意事项采集间隔{$MS.EXCHANGE.PERF.INTERVAL}默认 60 秒控制所有perf_counter_en项的数据刷新。若监控屏需要更细粒度曲线可适当调低但需注意 agent 插件/进程每秒采样并维护历史缓冲的资源开销间隔参数受源码约束超出范围会返回Interval out of range如 Go 插件上限 900 秒。延迟换算所有延迟项已通过预处理0.001倍数转为秒若在模板中自定义新项务必保持相同的单位换算否则阈值宏将失去语义。心跳去重Database Mounted3h、Database Copy Role Active3h、Database State3m配置了不变值心跳去重预处理可在状态无变化时减少存储与传输开销。告警窗口延迟类触发器使用min()取窗口内最小值对瞬时尖峰免疫若希望更敏感可将对应*.TIME宏调小。与 Windows 模板配合本模板不含 Windows 服务状态信息建议与 OS Windows by Zabbix agent active 模板组合部署形成系统 应用双层监控。模板内容以 YAML 为准LLD 规则 Databases discovery 的 JavaScript 预处理在 README 中因篇幅省略完整逻辑见 template_app_exchange_active.yaml对模板任何行为有疑问时应以 YAML 导出文件为最终依据。深入阅读模板文档templates/app/exchange_active/README.md模板定义templates/app/exchange_active/template_app_exchange_active.yamlC 版 agent 键注册表perf_counter_en、perf_instance.discovery、perf_instance_en.discoverysrc/libs/zbxsysinfo/win32/win32.cC 版实现英文路径本地化转换、实例枚举、间隔校验src/libs/zbxsysinfo/win32/pdhmon.cagent 2 Go 插件实现每秒采样 环形历史聚合src/go/plugins/windows/perfmon/perfmon.go赞分享指标监控可观测性告警运维【免费下载链接】zabbixReal-time monitoring of IT components and services, such as networks, servers, VMs, applications and the cloud.项目地址https://gitcode.com/gh_mirrors/zabbix2/zabbix点击查看免费下载相关推荐Microsoft Exchange Server 2016 by Zabbix agent官方 Exchange 性能监控模板完全解读Microsoft Exchange Server 2016 by Zabbix agent官方 Exchange 性能监控模板完全解读 本篇文章以 Zabb指标监控可观测性告警运维Zabbix 8.0 使用 IIS by Zabbix agent active 模板无脚本监控 Windows IIS 完整实战指南Zabbix 8.0 使用 IIS by Zabbix agent active 模板无脚本监控 Windows IIS 完整实战指南 导读 本文以 Za指标监控可观测性告警运维Zabbix 8.0 使用模板 Memcached by Zabbix agent 2 监控 Memcached 全指南Zabbix 8.0 使用模板 Memcached by Zabbix agent 2 监控 Memcached 全指南 导读 本文以官方模板 templa指标监控可观测性告警运维上一篇Sakana!石蒜模拟器衍生项目盘点从VSCode插件到Unity版本的完整生态解析下一篇终极指南如何构建分布式多媒体处理系统创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考