Ufuatiliaji rahisi wa Urudiaji wa DFS katika Zabbix

Utangulizi

Ikiwa na miundombinu mikubwa na iliyosambazwa kiasi ambayo hutumia DFS kama sehemu moja ya kufikia data na DFSR kwa uigaji wa data kati ya vituo vya data na seva za matawi, swali linajitokeza la kufuatilia hali ya urudufishaji huu.
Kwa bahati mbaya, mara tu baada ya kuanza kutumia DFSR, tulianza kutekeleza Zabbix kwa lengo la kuchukua nafasi ya zoo iliyopo ya zana mbalimbali na kuleta ufuatiliaji wa miundombinu kwa fomu ya taarifa zaidi, kamili na yenye mantiki. Tutazungumza juu ya kutumia Zabbix kufuatilia urudufishaji wa DFS.

Kwanza kabisa, tunahitaji kuamua ni data gani kuhusu urudiaji wa DFS inahitaji kupatikana ili kufuatilia hali yake. Kiashiria kinachofaa zaidi ni kurudi nyuma. Ina faili ambazo hazijasawazishwa na washiriki wengine wa kikundi cha urudufishaji. Unaweza kuona ukubwa wake kwa kutumia matumizi dfsrdiag, iliyosakinishwa na jukumu la DFSR. Katika hali ya urudufu wa kawaida, saizi ya kumbukumbu inapaswa kukaribia sifuri. Ipasavyo, idadi kubwa ya faili kwenye kumbukumbu zinaonyesha shida na urudufishaji.

Sasa kuhusu upande wa vitendo wa suala hilo.

Ili kufuatilia saizi ya kumbukumbu kupitia Wakala wa Zabbix, tutahitaji:

  • Hati ambayo itachanganua matokeo dfsrdiag kutoa maadili ya mwisho ya saizi ya nyuma kwa Zabbix,
  • Hati ambayo itaamua ni vikundi ngapi vya urudufishaji vilivyo kwenye seva, ni folda gani wanaiga na ni seva gani zingine zilizojumuishwa ndani yao (hatutaki kuingiza haya yote kwenye Zabbix kwa mkono kwa kila seva, sivyo?),
  • Kuongeza hati hizi kama UserParameter kwa usanidi wa wakala wa Zabbix kwa simu zinazofuata kutoka kwa seva ya ufuatiliaji,
  • Kuanzisha huduma ya wakala wa Zabbix kama mtumiaji ambaye ana haki ya kusoma kumbukumbu,
  • Kiolezo cha Zabbix, ambapo ugunduzi wa vikundi, usindikaji wa data iliyopokelewa na kutoa arifa juu yao utasanidiwa.

Kichanganuzi hati

Ili kuandika kichanganuzi, nilichagua VBS kama lugha ya ulimwengu wote iliyopo katika matoleo yote ya Windows Server. Mantiki ya script ni rahisi: inapokea jina la kikundi cha replication, folda iliyorudiwa, na majina ya seva za kutuma na kupokea kupitia mstari wa amri. Vigezo hivi basi hupitishwa kwa dfsrdiag, na kulingana na matokeo yake hutoa:
Idadi ya faili - ikiwa ujumbe umepokelewa kuhusu uwepo wa faili kwenye kumbukumbu,
0 - ikiwa ujumbe umepokelewa kuhusu kukosekana kwa faili kwenye kumbukumbu ("Hakuna Nyuma"),
-1 - ikiwa ujumbe wa hitilafu umepokelewa dfsrdiag wakati wa kutekeleza ombi ("[ERROR]").

pata-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

Hati ya ugunduzi

Ili Zabbix atambue vikundi vyote vya replication vilivyopo kwenye seva na kujua vigezo vyote vinavyohitajika kwa ombi (jina la folda, majina ya seva za jirani), tunahitaji, kwanza, kupata habari hii, na pili, kuiwasilisha. katika umbizo linaloeleweka kwa Zabbix. Umbizo ambalo zana ya ugunduzi inaelewa inaonekana kama hii:

        "data":[
                {
                        "{#GROUP}":"Share1",
                        "{#FOLDER}":"Folder1",
                        "{#SENDING}":"Server1",
                        "{#RECEIVING}":"Server2"}

...

                        "{#GROUP}":"ShareN",
                        "{#FOLDER}":"FolderN",
                        "{#SENDING}":"Server1",
                        "{#RECEIVING}":"ServerN"}]}

Njia rahisi zaidi ya kupata taarifa tunayopenda ni kupitia WMI, kuiondoa kutoka sehemu zinazolingana za DfsrReplicationGroupConfig. Kama matokeo, hati ilizaliwa ambayo hutoa ombi kwa WMI na kutoa orodha ya vikundi, folda zao na seva katika muundo unaohitajika.

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

Nakubali, hati inaweza ising'ae kwa umaridadi wa msimbo na baadhi ya mambo ndani yake bila shaka yanaweza kurahisishwa, lakini hufanya kazi yake kuu - kutoa taarifa kuhusu vigezo vya vikundi vya urudufishaji katika umbizo linaloeleweka na Zabbix.

Kuongeza hati kwenye usanidi wa wakala wa Zabbix

Kila kitu hapa ni rahisi sana. Ongeza mistari ifuatayo hadi mwisho wa faili ya usanidi wa wakala:

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"

Kwa kweli, tunarekebisha njia kwa zile ambazo tuna maandishi. Ninaziweka kwenye folda moja ambapo wakala amewekwa.

Baada ya kufanya mabadiliko, anzisha upya huduma ya wakala wa Zabbix.

Kubadilisha mtumiaji ambaye huduma ya Wakala wa Zabbix inaendeshwa

Ili kupata taarifa kupitia dfsrdiag, shirika lazima liendeshwe chini ya akaunti ambayo ina haki za usimamizi kwa kutuma na kupokea washiriki wa kikundi cha urudufishaji. Huduma ya wakala wa Zabbix, inayoendeshwa kwa chaguomsingi chini ya akaunti ya mfumo, haitaweza kutekeleza ombi kama hilo. Niliunda akaunti tofauti kwenye kikoa, nikaipa haki za kiutawala kwenye seva zinazohitajika, na kusanidi huduma kuendesha chini yake kwenye seva hizi.

Unaweza kwenda kwa njia nyingine: kwa sababu dfsrdiag, kwa kweli, inafanya kazi kupitia WMI sawa, basi unaweza kutumia maelezo, jinsi ya kutoa akaunti ya kikoa haki za kuitumia bila kutoa haki za utawala, lakini ikiwa tuna makundi mengi ya replication, basi kutoa haki kwa kila kikundi itakuwa vigumu. Hata hivyo, ikiwa tunataka kufuatilia urudufishaji wa Kiasi cha Mfumo wa Kikoa kwenye vidhibiti vya kikoa, hili linaweza kuwa chaguo pekee linalokubalika, kwani kutoa haki za msimamizi wa kikoa kwa akaunti ya huduma ya ufuatiliaji sio wazo nzuri.

Kiolezo cha ufuatiliaji

Kulingana na data niliyopokea, niliunda kiolezo ambacho:

  • Huendesha ugunduzi wa kiotomatiki wa vikundi vya urudufishaji mara moja kwa saa,
  • Huangalia saizi ya kumbukumbu kwa kila kikundi mara moja kila baada ya dakika 5,
  • Ina kichochezi ambacho hutoa arifa wakati ukubwa wa kumbukumbu kwa kikundi chochote ni zaidi ya 100 kwa dakika 30. Kichochezi kinaelezewa kama mfano ambao huongezwa kiotomatiki kwa vikundi vilivyogunduliwa,
  • Huunda grafu za saizi ya kumbukumbu kwa kila kikundi cha urudufishaji.

Unaweza kupakua kiolezo cha Zabbix 2.2 hapa.

Jumla ya

Baada ya kuingiza kiolezo kwenye Zabbix na kuunda akaunti yenye haki zinazohitajika, tutahitaji tu kunakili hati kwenye seva za faili ambazo tunataka kufuatilia kwa DFSR, ongeza mistari miwili kwenye usanidi wa wakala juu yao na uanze upya huduma ya wakala wa Zabbix. , ikiiweka ili iendeshe kama akaunti inayotakiwa. Hakuna mipangilio mingine ya mwongozo inayohitajika kwa ufuatiliaji wa DFSR.

Chanzo: mapenzi.com

Kuongeza maoni