Cyflwyniad
Gyda seilwaith gweddol fawr a gwasgaredig sy'n defnyddio DFS fel un pwynt mynediad at ddata a DFSR ar gyfer dyblygu data rhwng canolfannau data a gweinyddwyr cangen, mae'r cwestiwn yn codi ynghylch monitro statws y dyblygu hwn.
Yn gyd-ddigwyddiadol, bron yn syth ar ôl i ni ddechrau defnyddio DFSR, fe wnaethom ddechrau gweithredu Zabbix gyda'r nod o ddisodli'r sw presennol o wahanol offer a dod â monitro seilwaith i ffurf fwy addysgiadol, cyflawn a rhesymegol. Byddwn yn siarad am ddefnyddio Zabbix i fonitro dyblygu DFS.
Yn gyntaf oll, mae angen i ni benderfynu pa ddata am atgynhyrchu DFS sydd angen ei gael i fonitro ei statws. Y dangosydd mwyaf perthnasol yw ôl-groniad. Mae'n cynnwys ffeiliau nad ydynt wedi'u cysoni ag aelodau eraill o'r grŵp atgynhyrchu. Gallwch weld ei faint gan ddefnyddio'r cyfleustodau dfsrdag, wedi'i osod gyda rôl DFSR. Mewn cyflwr ailadrodd arferol, dylai maint yr ôl-groniad agosáu at sero. Yn unol â hynny, mae nifer fawr o ffeiliau yn yr ôl-groniad yn dangos problemau o ran dyblygu.
Nawr am ochr ymarferol y mater.
Er mwyn monitro maint yr ôl-groniad trwy Asiant Zabbix, bydd angen:
- Sgript a fydd yn dosrannu'r allbwn dfsrdag i ddarparu gwerthoedd maint ôl-groniad terfynol i Zabbix,
- Sgript a fydd yn pennu faint o grwpiau atgynhyrchu sydd ar y gweinydd, pa ffolderi y maent yn eu hailadrodd a pha weinyddion eraill sydd wedi'u cynnwys ynddynt (nid ydym am nodi hyn i gyd yn Zabbix â llaw ar gyfer pob gweinydd, dde?),
- Gan ychwanegu'r sgriptiau hyn fel UserParameter i gyfluniad asiant Zabbix ar gyfer galwadau dilynol o'r gweinydd monitro,
- Dechrau gwasanaeth asiant Zabbix fel defnyddiwr sydd â hawliau i ddarllen yr ôl-groniad,
- Templed ar gyfer Zabbix, lle bydd canfod grwpiau, prosesu data a dderbyniwyd a rhoi rhybuddion arnynt yn cael eu ffurfweddu.
Parser sgript
I ysgrifennu'r parser, dewisais VBS fel yr iaith fwyaf cyffredinol sy'n bresennol ym mhob fersiwn o Windows Server. Mae rhesymeg y sgript yn syml: mae'n derbyn enw'r grŵp atgynhyrchu, y ffolder a atgynhyrchwyd, ac enwau'r gweinyddwyr anfon a derbyn trwy'r llinell orchymyn. Yna caiff y paramedrau hyn eu trosglwyddo i dfsrdag, ac yn dibynnu ar ei allbwn mae'n cynhyrchu:
Nifer y ffeiliau - os derbynnir neges am bresenoldeb ffeiliau yn yr ôl-groniad,
0 — os derbynnir neges am absenoldeb ffeiliau yn yr ôl-groniad (“Dim Ôl-groniad”),
-1 - os derbynnir neges gwall dfsrdag wrth weithredu cais ("[ERROR]").
cael-Backlog.vbs
strReplicationGroup=WScript.Arguments.Item(0)
strReplicatedFolder=WScript.Arguments.Item(1)
strSending=WScript.Arguments.Item(2)
strReceiving=WScript.Arguments.Item(3)
Set WshShell = CreateObject ("Wscript.shell")
Set objExec = WSHshell.Exec("dfsrdiag.exe Backlog /RGName:""" & strReplicationGroup & """ /RFName:""" & strReplicatedFolder & """ /SendingMember:" & strSending & " /ReceivingMember:" & strReceiving)
strResult = ""
Do While Not objExec.StdOut.AtEndOfStream
strResult = strResult & objExec.StdOut.ReadLine() & "\"
Loop
If InStr(strResult, "No Backlog") > 0 then
intBackLog = 0
ElseIf InStr(strResult, "[ERROR]") > 0 Then
intBackLog = -1
Else
arrLines = Split(strResult, "\")
arrResult = Split(arrLines(1), ":")
intBackLog = arrResult(1)
End If
WScript.echo intBackLog
Sgript darganfod
Er mwyn i Zabbix bennu'r holl grwpiau atgynhyrchu sy'n bresennol ar y gweinydd a darganfod yr holl baramedrau sydd eu hangen ar gyfer y cais (enw'r ffolder, enwau gweinyddwyr cyfagos), mae angen i ni, yn gyntaf, gael y wybodaeth hon, ac yn ail, ei chyflwyno mewn fformat sy'n ddealladwy i Zabbix. Mae'r fformat y mae'r offeryn darganfod yn ei ddeall yn edrych fel hyn:
"data":[
{
"{#GROUP}":"Share1",
"{#FOLDER}":"Folder1",
"{#SENDING}":"Server1",
"{#RECEIVING}":"Server2"}
...
"{#GROUP}":"ShareN",
"{#FOLDER}":"FolderN",
"{#SENDING}":"Server1",
"{#RECEIVING}":"ServerN"}]}
Y ffordd hawsaf o gael y wybodaeth y mae gennym ddiddordeb ynddi yw trwy WMI, gan ei thynnu allan o'r adrannau cyfatebol yn DfsrReplicationGroupConfig. O ganlyniad, ganwyd sgript sy'n cynhyrchu cais i WMI ac yn allbynnu rhestr o grwpiau, eu ffolderi a gweinyddwyr yn y fformat gofynnol.
DFSRDiscovery.vbs
dim strComputer, strLine, n, k, i
Set wshNetwork = WScript.CreateObject( "WScript.Network" )
strComputer = wshNetwork.ComputerName
Set oWMIService = GetObject("winmgmts:\" & strComputer & "rootMicrosoftDFS")
Set colRGroups = oWMIService.ExecQuery("SELECT * FROM DfsrReplicationGroupConfig")
wscript.echo "{"
wscript.echo " ""data"":["
n=0
k=0
i=0
For Each oGroup in colRGroups
n=n+1
Set colRGFolders = oWMIService.ExecQuery("SELECT * FROM DfsrReplicatedFolderConfig WHERE ReplicationGroupGUID='" & oGroup.ReplicationGroupGUID & "'")
For Each oFolder in colRGFolders
k=k+1
Set colRGConnections = oWMIService.ExecQuery("SELECT * FROM DfsrConnectionConfig WHERE ReplicationGroupGUID='" & oGroup.ReplicationGroupGUID & "'")
For Each oConnection in colRGConnections
i=i+1
binInbound = oConnection.Inbound
strPartner = oConnection.PartnerName
strRGName = oGroup.ReplicationGroupName
strRFName = oFolder.ReplicatedFolderName
If oConnection.Enabled = True and binInbound = False Then
strSendingComputer = strComputer
strReceivingComputer = strPartner
strLine1=" {"
strLine2=" ""{#GROUP}"":""" & strRGName & ""","
strLine3=" ""{#FOLDER}"":""" & strRFName & ""","
strLine4=" ""{#SENDING}"":""" & strSendingComputer & ""","
if (n < colRGroups.Count) or (k < colRGFolders.count) or (i < colRGConnections.Count) then
strLine5=" ""{#RECEIVING}"":""" & strReceivingComputer & """},"
else
strLine5=" ""{#RECEIVING}"":""" & strReceivingComputer & """}]}"
end if
wscript.echo strLine1
wscript.echo strLine2
wscript.echo strLine3
wscript.echo strLine4
wscript.echo strLine5
End If
Next
Next
Next
Rwy'n cytuno, efallai na fydd y sgript yn disgleirio gyda cheinder cod a gallai rhai pethau ynddo yn sicr gael eu symleiddio, ond mae'n cyflawni ei brif swyddogaeth - darparu gwybodaeth am baramedrau grwpiau ailadrodd mewn fformat sy'n ddealladwy gan Zabbix.
Ychwanegu sgriptiau at gyfluniad asiant Zabbix
Mae popeth yma yn hynod o syml. Ychwanegwch y llinellau canlynol at ddiwedd ffeil ffurfweddu'r asiant:
UserParameter=check_dfsr[*],cscript /nologo "C:Program FilesZabbix Agentget-Backlog.vbs" $1 $2 $3 $4
UserParameter=discovery_dfsr[*],cscript /nologo "C:Program FilesZabbix AgentDFSRDiscovery.vbs"
Wrth gwrs, rydym yn addasu'r llwybrau i'r rhai lle mae gennym sgriptiau. Rwy'n eu rhoi yn yr un ffolder lle mae'r asiant wedi'i osod.
Ar ôl gwneud newidiadau, ailgychwynwch wasanaeth asiant Zabbix.
Newid y defnyddiwr y mae gwasanaeth Asiant Zabbix yn rhedeg oddi tano
Er mwyn derbyn gwybodaeth trwy dfsrdag, rhaid rhedeg y cyfleustodau o dan gyfrif sydd â hawliau gweinyddol i anfon a derbyn aelodau o'r grŵp atgynhyrchu. Ni fydd gwasanaeth asiant Zabbix, sy'n rhedeg yn ddiofyn o dan gyfrif y system, yn gallu gweithredu cais o'r fath. Fe wnes i greu cyfrif ar wahân yn y parth, rhoi hawliau gweinyddol iddo ar y gweinyddwyr angenrheidiol, a ffurfweddu'r gwasanaeth i redeg oddi tano ar y gweinyddwyr hyn.
Gallwch fynd ffordd arall: oherwydd dfsrdag, mewn gwirionedd, yn gweithio trwy'r un WMI, yna gallwch chi ei ddefnyddio
Templed monitro
Yn seiliedig ar y data a gefais, creais dempled a oedd yn:
- Yn rhedeg darganfyddiad awtomatig o grwpiau atgynhyrchu unwaith yr awr,
- Yn gwirio maint yr ôl-groniad ar gyfer pob grŵp unwaith bob 5 munud,
- Mae'n cynnwys sbardun sy'n rhoi rhybudd pan fydd maint yr ôl-groniad ar gyfer unrhyw grŵp yn fwy na 100 am 30 munud. Disgrifir y sbardun fel prototeip sy'n cael ei ychwanegu'n awtomatig at grwpiau a ganfyddir,
- Yn adeiladu graffiau maint ôl-groniad ar gyfer pob grŵp atgynhyrchu.
Gallwch chi lawrlwytho'r templed ar gyfer Zabbix 2.2
Cyfanswm
Ar ôl mewnforio'r templed i Zabbix a chreu cyfrif gyda'r hawliau angenrheidiol, dim ond i'r gweinyddwyr ffeiliau yr ydym am eu monitro ar gyfer DFSR y bydd angen i ni gopïo'r sgriptiau, ychwanegu dwy linell i'r cyfluniad asiant arnynt ac ailgychwyn y gwasanaeth asiant Zabbix , gan ei osod i redeg fel y cyfrif dymunol. Nid oes angen gosodiadau llaw eraill ar gyfer monitro DFSR.
Ffynhonnell: hab.com