You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Powershell解析IBM CDC订阅状态并转Json对接Zabbix

IBM CDC 订阅状态提取(PowerShell转JSON适配Zabbix)

实现逻辑

  • 调用chcclp命令获取订阅状态原始输出
  • 过滤冗余日志、命令回显内容,定位到订阅状态表格区域
  • 逐行提取订阅名、运行状态字段
  • 构造结构化对象后输出为JSON格式,可直接对接Zabbix LLD规则或自定义监控项

完整可运行PowerShell脚本

# 配置chcclp路径和执行脚本路径
$chcclpPath = "C:\Program Files\IBM\InfoSphere Data Replication\Management Console\bin\chcclp.exe"
$checkScriptPath = "c:\CDC_Check.txt"

# 执行命令获取原始输出
$rawOutput = & cmd.exe /C "`"$chcclpPath`" -f `"$checkScriptPath`""

# 初始化结果存储数组
$subStatusList = @()
$tableParsering = $false

foreach ($line in $rawOutput) {
    # 跳过空行
    if ([string]::IsNullOrWhiteSpace($line)) { continue }

    # 匹配订阅状态表头行,开启表格解析
    if ($line -match "SUBSCRIPTION.*STATE" -or $line -match "Subscription.*State") {
        $tableParsering = $true
        # 跳过表头下方的分隔符行(通常为-或=组成的行)
        continue
    }

    # 匹配表格结束标识(命令执行完成、断开连接等回显),停止解析
    if ($tableParsering -and ($line -match "disconnect|exit|Command executed" -or $line -match "^[-= ]+$")) {
        break
    }

    # 解析有效数据行
    if ($tableParsering) {
        # 按多个空白字符分割字段,过滤空值
        $fields = $line -split "\s+" | Where-Object { -not [string]::IsNullOrWhiteSpace($_) }
        # 调整索引适配你的实际输出字段顺序,默认第一列为订阅名,第二列为运行状态
        if ($fields.Count -ge 2) {
            $subStatusList += [PSCustomObject]@{
                "{#SUBNAME}" = $fields[0].Trim()
                "status" = $fields[1].Trim()
                # 可按需补充延迟、日志位置等其他监控字段
                # "latency" = $fields[2].Trim()
            }
        }
    }
}

# 输出JSON格式结果,直接对接Zabbix
$subStatusList | ConvertTo-Json -Depth 5

自定义调整说明

  • 先手动执行一次chcclp命令,确认输出表格的字段顺序,若状态字段不在第二列,调整$fields[1]的索引即可
  • 脚本中{#SUBNAME}为Zabbix低级别发现(LLD)的固定变量格式,可直接用于订阅的自动发现规则配置
  • 若订阅名称包含空格,可通过输出的固定列宽截取对应字段,替换当前的-split分割逻辑即可

内容的提问来源于stack exchange,提问作者Aleksandr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:06:03