Monitro syml o Ddyblygiad DFS yn Zabbix

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 disgrifiad, sut i roi'r hawliau i gyfrif parth i'w ddefnyddio heb roi hawliau gweinyddol, ond os oes gennym lawer o grwpiau atgynhyrchu, yna bydd yn anodd rhoi hawliau i bob grŵp. Fodd bynnag, rhag ofn ein bod am fonitro atgynhyrchu Cyfrol System Parth ar reolwyr parth, efallai mai dyma'r unig opsiwn derbyniol, gan nad yw rhoi hawliau gweinyddwr parth i'r cyfrif gwasanaeth monitro yn syniad da.

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 yma.

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

Ychwanegu sylw