ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Zabbix 监控 TSM Journal Service:community-templates 中 App TSM Journal Service 模板的部署与自动重启实践

Zabbix 监控 TSM Journal Service:community-templates 中 App TSM Journal Service 模板的部署与自动重启实践

【免费下载链接】community-templates

Zabbix Community Templates repository

项目地址:https://gitcode.com/gh_mirrors/co/community-templates
点击查看免费下载

本文围绕 Zabbix Community Templates 仓库(community-templates)中的App TSM Journal Service模板展开,讲解如何利用 Zabbix Windows agent 的内置service_state键持续探测 IBM Spectrum Protect(原 Tivoli Storage Manager)的 "TSM Journal Service" Windows 服务运行状态,并在服务停止时通过 Action 远程命令自动拉起。读完本文,你将掌握该模板的监控项与触发器设计、5.0/5.4/6.0 各版本模板文件的差异,以及一套可直接落地的"监控 + 自动恢复"配置方案。

模板定位:为 IBM Spectrum Protect 备份链路保驾护航

在 IBM Spectrum Protect(历史上称为 Tivoli Storage Manager,简称 TSM)的备份体系中,TSM Journal Service承担着日志(journal)相关的后台服务职责,服务于客户端日志式备份与增量数据跟踪。一旦该服务意外停止,备份作业与日志归档流程将直接受影响,因此对其运行状态进行 7×24 小时监控是备份运维的基本诉求。

community-templates 仓库中的 App TSM Journal Service 模板正是为此设计,其 5.0 版 README 开篇即明确模板用途:

Template for check if "TSM Journal Service" is running.

模板仅围绕一个监控项展开,却配套了完整的告警触发与(可选的)自动恢复动作,由作者 Haim Cohen 于 2017 年贡献。仓库根 README.md 的模板索引中,它被收录在Applications/Backup分类下,与同作者的 App TSM Client Scheduler 模板相邻,两者构成对 TSM 客户端侧关键服务的监控组合。

模板的监控项设计:一个 key 完成服务状态探测

整个模板的数据采集非常精简——只有一个监控项,其定义如下表(取自 5.0 版 README 的 "Items collected" 章节):

名称描述类型Key 及附加信息
Service State - TSM Journal Service-Zabbix agentservice_state[TSM Journal Service],Update: 30

对照模板文件可以还原该监控项的完整实现:

  • 监控项类型为Zabbix agent(被动模式),即由 Zabbix server 周期性向 Windows 主机上的 Zabbix agent 发起取值请求;
  • key为service_state[TSM Journal Service],这是 Zabbix Windows agent 内置的服务状态检查键,方括号内传入 Windows 服务名(Service Name)"TSM Journal Service";
  • **更新间隔(delay)**为 30 秒。在 5.0 XML 模板 中对应<delay>30</delay>;在 5.4 YAML 模板 与 6.0 YAML 模板 中对应delay: '30';
  • 应用分组:5.0 XML 中该监控项归属于 applicationTSM Journal Service;5.4/6.0 中则采用 tag 形式,tag: Application、value: 'TSM Journal Service',便于在最新版 Zabbix 中按标签筛选。

原文档特别强调 "Note that trigger service name is: 'TSM Journal Service'"(此处"trigger service name"应理解为被探测的 Windows 服务名),提醒使用者 key 中填写的服务名必须与 Windows 服务管理器中实际的服务名称严格一致——若服务名拼写错误或与系统显示名(Display Name)混淆,service_state将无法正确返回运行状态。在 Windows 服务管理器 或 PowerShell 中通过Get-Service -Name "TSM Journal Service"可以核对确切的服务名。

触发器:README 与模板文件之间的细节出入

阅读 5.0 版 README 时,其 "Triggers" 章节声明 "There are no triggers in this template",但实际导出的模板文件中明确包含一个触发器,README 与模板文件存在出入,实际部署应以模板文件为准:

  • 触发器名称:TSM Journal Service Stopped
  • 优先级:WARNING
  • 触发表达式(5.0 XML):{last(1)}>0
  • 触发表达式(5.4 YAML 与 6.0 YAML):last(/App TSM Journal Service/service_state[TSM Journal Service])>0

两个版本表达式语义一致:{last(1)}是 5.0 时代对当前监控项最近一次取值的简写语法,last(/模板名/监控项key)则是 5.4 之后引入的完整路径写法,两者都判断"最近一次返回值是否大于 0"。

结合 Zabbix Windows agentservice_state键"0 表示服务运行中"的取值约定,可以推断:当监控项返回值大于 0(即服务不处于正常运行状态,如已停止、启动中或状态未知)时,触发器进入 PROBLEM 状态并产生一条名为 "TSM Journal Service Stopped" 的 WARNING 级告警。模板以此实现"服务一停、立即告警"的效果。

自动恢复:基于 Action 的 NET START 远程命令

除了被动告警,原文档还给出了一套手动创建 Action、在服务停止时自动拉起服务的恢复方案,这是本模板最具实战价值的部分。操作入口为 Zabbix 前端Configuration → Actions,新建动作后配置如下:

Conditions(匹配条件)

  • Maintenance status not in maintenance:仅当主机不在维护期内才生效,避免维护窗口误触发恢复操作;
  • Trigger value = PROBLEM:只在触发器进入 PROBLEM(即服务停止)时匹配;
  • Trigger name like TSM Journal Service Stopped:精确圈定本模板的触发器,防止其他告警误触发该动作。

Operations(执行操作)

  • Operation type:Remote command(远程命令)
  • Commands:NET START "TSM Journal Service"

动作匹配后,Zabbix 会通过被监控主机上的 agent 执行NET START "TSM Journal Service",尝试用 Windows 原生服务控制命令重启该服务,从而实现"告警即恢复"的闭环。

需要说明的是,远程命令由 agent 在 Windows 主机本地执行,实际落地通常还依赖以下前提(属于 Zabbix 通用运行机制,并非模板自带配置):

  • 被监控主机安装并运行 Zabbix Windows agent,且 agent 配置允许执行远程命令;
  • 执行NET START的账户(agent 服务运行账户)具备启动该 Windows 服务的权限,必要时需以管理员权限运行 agent 服务;
  • Zabbix server 与 agent 之间网络连通,且主机在 Zabbix 中被正确配置了 agent 接口。

若环境不允许远程命令,也可将 Operation 改为发送通知(如邮件、脚本),至少保证服务异常时第一时间触达运维人员。

模板版本对照与导入部署

该模板随 Zabbix 版本演进提供了三个版本的导出文件,结构对比如下:

Zabbix 版本模板文件格式关键差异
5.0template_tsm_journal_service.xmlXML触发器表达式为{last(1)}>0简写语法;application 分组
5.4template_tsm_journal_service.yamlYAML表达式升级为last(/模板/监控项)>0完整路径;tag 替代 application
6.0template_tsm_journal_service.yamlYAML与 5.4 内容一致,适用于 6.0 系列

部署步骤参考仓库根 README.md 的通用说明:

  1. 下载与目标 Zabbix 版本匹配的模板文件(5.0 选 XML,5.4/6.0 选 YAML);
  2. 在 Zabbix 前端Data collection → Templates中通过导入向导上传模板文件;
  3. 将模板链接到承载 IBM Spectrum Protect 的 Windows 主机(主机需已安装 Zabbix agent,类型选择 Zabbix agent);
  4. 等待 30 秒更新周期过后,检查 "Service State - TSM Journal Service" 监控项是否开始产生数据,并在 Windows 服务管理器手动停止该服务验证触发器 "TSM Journal Service Stopped" 是否按预期进入 PROBLEM;
  5. 如需自动恢复,再按上文在 Configuration → Actions 中创建远程命令动作。

同类模板联动与扩展思路

IBM Spectrum Protect 环境通常不止一个关键 Windows 服务,可结合同仓库的同类模板扩展监控面:

  • App TSM Client Scheduler(同为 Haim Cohen 2017 年贡献):通过service_state[TSM Client Scheduler]与service_state[TSM Client Schedule]两个监控项覆盖 TSM 客户端调度器及调度作业服务,更新间隔同为 30 秒,与 Journal Service 模板形成客户端侧服务监控组合;
  • 同属 Backup 分类的 Arcserve UDP VM Backup Check 也大量使用service_state[...]键监控备份相关服务,但其触发器表达式采用last(...)<>0 and last(...)<>255的形式——可以推断,该写法是为了排除255这一特殊返回值(如服务不存在或 agent 无法解析服务名),相比本模板的>0判断更为保守。对比可见:本模板把任何非 0 状态都视为服务异常,判定更直接、告警更灵敏,适合服务名固定且确已注册的场景。

小结

App TSM Journal Service 是一个"小而精"的 Zabbix 社区模板:以service_state[TSM Journal Service]一个监控项、30 秒更新间隔完成服务状态探测,内置 WARNING 级触发器TSM Journal Service Stopped,再配合 Configuration → Actions 中的NET START "TSM Journal Service"远程命令实现自动恢复。部署时只需注意三点:服务名拼写准确、按 Zabbix 版本选择对应的 XML/YAML 导入文件、为远程命令预留 agent 执行权限。对于运行 IBM Spectrum Protect(TSM)备份体系的运维团队,这是一个开箱即用、可快速上手的服务守护方案。

【免费下载链接】community-templates

Zabbix Community Templates repository

项目地址:https://gitcode.com/gh_mirrors/co/community-templates
点击查看免费下载
上一篇:WebSocketRails - 实时通信解决方案
下一篇:网络安全利器xunfeng:全面解析网络资产扫描与漏洞检测平台

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进