Siveyans senp DFS Replication nan Zabbix

Entwodiksyon

Avèk yon enfrastrikti byen gwo ak distribye ki itilize DFS kòm yon sèl pwen aksè a done ak DFSR pou replikasyon done ant sant done ak sèvè branch yo, kesyon an rive pou kontwole estati replikasyon sa a.
Azar, prèske imedyatman apre nou te kòmanse itilize DFSR, nou te kòmanse aplike Zabbix ak objektif pou ranplase zou a ki egziste deja nan divès zouti epi pote siveyans enfrastrikti nan yon fòm ki pi enfòmatif, konplè ak lojik. Nou pral pale sou itilizasyon Zabbix pou kontwole replikasyon DFS.

Premye a tout, nou bezwen deside ki done sou replikasyon DFS yo bezwen jwenn pou kontwole estati li yo. Endikatè ki pi enpòtan an se reta. Li gen dosye ki pa te senkronize ak lòt manm nan gwoup la replikasyon. Ou ka wè gwosè li lè l sèvi avèk sèvis piblik la dfsrdiag, enstale ak wòl nan DFSR. Nan yon eta replikasyon nòmal, gwosè reta a ta dwe apwoche zewo. An konsekans, yon gwo kantite fichye nan reta a endike pwoblèm ak replikasyon.

Koulye a, sou bò pratik nan pwoblèm nan.

Pou nou ka kontwole gwosè reta a atravè Zabbix Agent, nou pral bezwen:

  • Script ki pral analize pwodiksyon an dfsrdiag pou bay Zabbix valè final gwosè reta,
  • Yon script ki pral detèmine konbyen gwoup replikasyon ki genyen sou sèvè a, ki dosye yo replike ak ki lòt sèvè ki enkli ladan yo (nou pa vle antre tout bagay sa yo nan Zabbix alamen pou chak sèvè, pa vre?),
  • Ajoute scripts sa yo kòm UserParameter nan konfigirasyon ajan Zabbix pou apèl ki vin apre soti nan sèvè siveyans la,
  • Kòmanse sèvis ajan Zabbix kòm yon itilizatè ki gen dwa pou li rès la,
  • Yon modèl pou Zabbix, nan ki deteksyon an nan gwoup, pwosesis done resevwa ak bay alèt sou yo pral configuré.

Analizeur script

Pou ekri analizeur a, mwen te chwazi VBS kòm lang ki pi inivèsèl prezan nan tout vèsyon Windows Server. Lojik script la se senp: li resevwa non gwoup replikasyon an, katab la repwodui, ak non sèvè ki voye ak k ap resevwa yo atravè liy lòd la. Lè sa a, paramèt sa yo pase nan dfsrdiag, epi depann sou pwodiksyon li yo li pwodui:
Kantite fichye - si yo resevwa yon mesaj sou prezans fichye yo nan reta a,
0 — si yo resevwa yon mesaj konsènan absans fichye ki nan bak la (“Pa gen bak”),
-1 - si yo resevwa yon mesaj erè dfsrdiag lè w ap egzekite yon demann ("[ERROR]").

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

Dekouvèt script

Nan lòd pou Zabbix detèmine tout gwoup replikasyon ki prezan sou sèvè a epi chèche konnen tout paramèt ki nesesè pou demann lan (non dosye, non sèvè vwazen), nou bezwen, premye, jwenn enfòmasyon sa a, epi dezyèmman, prezante li. nan yon fòma konprann pou Zabbix. Fòma zouti dekouvèt la konprann sanble sa a:

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

...

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

Fason ki pi fasil pou jwenn enfòmasyon nou enterese se atravè WMI, rale li soti nan seksyon korespondan DfsrReplicationGroupConfig. Kòm yon rezilta, yon script te fèt ki jenere yon demann nan WMI ak pwodiksyon yon lis gwoup, dosye yo ak serveurs nan fòma yo mande yo.

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

Mwen dakò, script la ka pa klere ak distenksyon nan kòd ak kèk bagay nan li ta ka sètènman senplifye, men li fè fonksyon prensipal li yo - bay enfòmasyon sou paramèt yo nan gwoup replikasyon nan yon fòma konprann pa Zabbix.

Ajoute scripts nan konfigirasyon ajan Zabbix la

Tout bagay isit la trè senp. Ajoute liy sa yo nan fen fichye konfigirasyon ajan an:

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"

Natirèlman, nou ajiste chemen yo nan sa yo kote nou gen scripts. Mwen mete yo nan katab la menm kote ajan an enstale.

Apre w fin fè chanjman, rekòmanse sèvis ajan Zabbix la.

Chanje itilizatè a anba ki sèvis Ajan Zabbix la kouri

Yo nan lòd yo resevwa enfòmasyon atravè dfsrdiag, sèvis piblik la dwe kouri anba yon kont ki gen dwa administratif pou tou de voye ak resevwa manm gwoup replikasyon an. Sèvis ajan Zabbix, ki kouri pa defo sou kont sistèm lan, p ap kapab egzekite yon demann konsa. Mwen te kreye yon kont separe nan domèn nan, te ba li dwa administratif sou serveurs ki nesesè yo, ak konfigirasyon sèvis la kouri anba li sou serveurs sa yo.

Ou ka ale yon lòt fason: paske dfsrdiag, an reyalite, travay nan menm WMI a, Lè sa a, ou ka itilize deskripsyon, Ki jan yo bay yon kont domèn dwa pou itilize li san yo pa bay dwa administratif, men si nou gen anpil gwoup replikasyon, Lè sa a, bay dwa bay chak gwoup ap difisil. Sepandan, nan ka nou vle kontwole Domèn Sistèm Volim replikasyon sou contrôleur domèn, sa a ka sèlman opsyon ki akseptab, depi bay dwa administratè domèn nan kont sèvis siveyans la se pa yon bon lide.

Modèl siveyans

Dapre done mwen te resevwa yo, mwen te kreye yon modèl ki:

  • Kouri otomatik dekouvèt gwoup replikasyon yon fwa pa èdtan,
  • Tcheke gwosè reta pou chak gwoup yon fwa chak 5 minit,
  • Gen yon deklanche ki bay yon alèt lè gwosè a reta pou nenpòt gwoup se plis pase 100 pou 30 minit. Deklanche a dekri kòm yon pwototip ki otomatikman ajoute nan gwoup detekte yo,
  • Bati graf gwosè reta pou chak gwoup replikasyon.

Ou ka telechaje modèl la pou Zabbix 2.2 isit la.

Total

Apre enpòte modèl la nan Zabbix ak kreye yon kont ak dwa ki nesesè yo, nou pral sèlman bezwen kopye scripts yo sou sèvè fichye yo ke nou vle kontwole pou DFSR, ajoute de liy nan konfigirasyon ajan an sou yo epi rekòmanse sèvis ajan Zabbix la. , mete li nan kouri kòm kont la vle. Pa gen okenn lòt paramèt manyèl obligatwa pou siveyans DFSR.

Sous: www.habr.com

Add nouvo kòmantè