Я делаю PO C для Prometheus, и одна из вещей, от которой мы хотели бы получить метрики, - это сервер IBM MQ, работающий на W2012R2. Для IBM MQ существует экспортер Prometheus, но он предназначен для Linux и не работает на Windows.
У нас есть возможность запланировать отчет для записи данных в файл, однако вывод этот файл бесполезен для Прометея, поэтому документ нужно переформатировать.
Я ломаю голову над тем, как этого добиться с помощью PowerShell, но, поскольку у меня нет опыта написания сценариев с PowerShell, я решил спросить здесь help.
Вы, ребята, знаете, как изменить отчет в этом макете:
5724-H72 (C) Copyright IBM Corp. 1994, 2015.
Starting MQSC for queue manager QMGR.
1 : DISPLAY CHSTATUS(*)
AMQ8450: Display Channel Status details.
CHANNEL(QMGR.HOSTNAME.R1) CHLTYPE(RCVR)
CONNAME(10.10.10.10) CURRENT
RQMNAME(QMGR) STATUS(RUNNING)
SUBSTATE(RECEIVE)
AMQ8450: Display Channel Status details.
CHANNEL(QMGR.HOSTNAME.R3) CHLTYPE(RCVR)
CONNAME(10.10.10.10) CURRENT
STATUS(RUNNING) SUBSTATE(RECEIVE)
На что-то похожее на это:
status{channel="QMGR.HOSTNAME.R1", chltype="rcvr", conname="10.10.10.10", rqmname="QMGR"} running
substate{channel="QMGR.HOSTNAME.R1", chltype="rcvr", conname="10.10.10.10", rqmname="QMGR"} receive
status{channel="QMGR.HOSTNAME.R3", chltype="rcvr", conname="10.10.10.10"} running
substate{channel="QMGR.HOSTNAME.R3", chltype="rcvr", conname="10.10.10.10"} receive
Это то, что я до сих пор придумал, не совсем красиво, я думаю, но это, кажется, шаг в правильном направлении ...
$Contents = Get-Content ".\CHSTATUS.txt" | select -Skip 5
foreach($Line in $Contents) {
foreach($channel in [Regex]::Matches($Line, '(?<=CHANNEL\()(.*?)(?=\))')) {}
foreach($chltype in [Regex]::Matches($Line, '(?<=CHLTYPE\()(.*?)(?=\))')) {}
foreach($conname in [Regex]::Matches($Line, '(?<=CONNAME\()(.*?)(?=\))')) {}
foreach($status in [Regex]::Matches($Line, '(?<=STATUS\()(.*?)(?=\))')) {}
foreach($substate in [Regex]::Matches($Line, '(?<=SUBSTATE\()(.*?)(?=\))')) {
Write-Host "status{channel=""$channel"", chltype=""$chltype"", conname=""$conname""}" $status
Write-Host "substate{channel=""$channel"", chltype=""$chltype"", conname=""$conname""}" $substate
}
}
Надеюсь, кто-то здесь может дать мне pu sh в правильном направлении на как справиться с этим.