Çavdêriya hêsan a dubarekirina DFS li Zabbix

Pîrozbahiyê

Digel binesaziyek pir mezin û belavkirî ya ku DFS-ê wekî xalek yekane ya gihîştina daneyê û DFSR-ê ji bo dubarekirina daneyê di navbera navendên daneyê û serverên şaxê de bikar tîne, pirsa şopandina rewşa vê dubarekirinê derdikeve holê.
Tesaduf, hema hema yekser piştî ku me dest bi karanîna DFSR kir, me dest bi sepandina Zabbix kir bi mebesta ku em zozanê heyî yên amûrên cihêreng biguhezînin û çavdêriya binesaziyê bigihînin formek agahdartir, bêkêmasî û mentiqî. Em ê li ser karanîna Zabbix ji bo şopandina dubarekirina DFS biaxivin.

Berî her tiştî, pêdivî ye ku em biryar bidin ka kîjan daneyên di derbarê dubarekirina DFS de hewce dike ku were bidestxistin da ku rewşa wê bişopîne. Nîşana herî têkildar paşveçûn e. Ew pelên ku bi endamên din ên koma dubarekirinê re nehatine hevdengkirin dihewîne. Hûn dikarin mezinahiya wê bi karanîna amûreyê bibînin dfsrdiag, bi rola DFSR ve hatî saz kirin. Di rewşek dubarekirinê ya normal de, mezinahiya paşketinê divê nêzîkê sifirê bibe. Li gorî vê yekê, hejmarên mezin ên pelên di paşvekêşanê de pirsgirêkên bi dubarekirinê re destnîşan dikin.

Niha li ser aliyê pratîkî yê meseleyê.

Ji bo ku em bi Zabbix Agent ve mezinahiya paşketinê bişopînin, em ê hewce bikin:

  • Skrîpta ku dê encam parsek bike dfsrdiag ji bo Zabbix nirxên paşîn ên paşîn peyda bikin,
  • Skrîptek ku dê diyar bike ka çend komên dubarekirinê li ser serverê hene, ew kîjan peldankan dubare dikin û kîjan serverên din di nav wan de ne (em naxwazin ji bo her serverek bi destan van tiştan têkevin Zabbix, rast?),
  • Zêdekirina van skrîptan wekî UserParameter li veavakirina nûnerê Zabbix ji bo bangewaziya paşîn ji servera çavdêriyê,
  • Destpêkirina karûbarê nûnerê Zabbix wekî bikarhênerek ku mafê xwendina paşnavê heye,
  • Şablonek ji bo Zabbix, ku tê de tespîtkirina koman, hilanîna daneyên hatine wergirtin û derxistina hişyariyan li ser wan dê were mîheng kirin.

Parsera skrîptê

Ji bo nivîsandina parserê, min VBS wekî zimanê herî gerdûnî yê ku di hemî guhertoyên Windows Server de heye hilbijart. Mantiqa skrîptê hêsan e: ew navê koma repplication, peldanka dubarekirî, û navên pêşkêşkerên şandin û wergirtinê bi rêzika fermanê distîne. Dûv re ev pîvan têne derbas kirin dfsrdiag, û li gorî hilberîna xwe hildiberîne:
Hejmara pelan - heke peyamek li ser hebûna pelan di paşketinê de were wergirtin,
0 - heke peyamek li ser tunebûna pelan di paşketê de were wergirtin ("Bê Paşverû"),
-1 - heke peyamek çewtiyek were wergirtin dfsrdiag dema pêkanîna daxwazek ("[ÇEWT]").

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

Nivîsara Keşfê

Ji bo ku Zabbix hemî komên dubarekirinê yên li ser serverê diyar bike û hemî pîvanên ku ji bo daxwazê ​​hewce ne (navê peldankê, navên pêşkêşkerên cîran) bibîne, divê em, yekem, vê agahiyê bistînin, û ya duyemîn jî, pêşkêş bikin. di formatek ku ji Zabbix re tê fêm kirin. Forma ku amûra keşfê fam dike bi vî rengî xuya dike:

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

...

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

Rêya herî hêsan a bidestxistina agahdariya ku em jê re eleqedar in bi riya WMI ye, ku wê ji beşên têkildar ên DfsrReplicationGroupConfig derxe. Wekî encamek, skrîptek çêbû ku daxwazek ji WMI re çêdike û navnîşek koman, peldank û pêşkêşkerên wan di forma hewce de derdixe.

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

Ez dipejirînim, dibe ku nivîsar bi zerafeta kodê nebiriqe û hin tiştên tê de bê guman dikarin hêsan bibin, lê ew fonksiyona xweya sereke pêk tîne - agahdariya li ser pîvanên komên dubarekirinê bi rengek ku ji hêla Zabbix ve tê fêm kirin peyda dike.

Zêdekirina nivîsan li veavakirina nûnerê Zabbix

Her tişt li vir pir hêsan e. Rêzên jêrîn li dawiya pelê veavakirina nûnerê zêde bikin:

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"

Bê guman, em rê li wan ên ku senaryoyên me hene rast dikin. Min wan xiste heman peldanka ku ajan lê hatiye saz kirin.

Piştî guhertinan, karûbarê nûnerê Zabbix ji nû ve bidin destpêkirin.

Guhertina bikarhênerê ku di bin karûbarê Zabbix Agent de dimeşe

Ji bo ku agahdariya bi rêya dfsrdiag, pêdivî ye ku karûbar di bin hesabek ku hem ji bo şandina hem jî wergirtina endamên koma repplication xwedî mafên îdarî ye were xebitandin. Karûbarê nûnerê Zabbix, ku ji hêla xwerû ve di binê hesabê pergalê de dixebite, dê nikaribe daxwazek wusa pêk bîne. Min di domainê de hesabek cûda çêkir, li ser serverên pêwîst mafên îdarî da wê, û karûbar mîheng kir ku di binê wê de li ser van serveran bixebite.

Hûn dikarin bi rêyek din biçin: ji ber dfsrdiag, bi rastî, bi heman WMI re dixebite, hingê hûn dikarin bikar bînin terîf, Meriv çawa mafên hesabek domainê bide ku bikar bîne bêyî derxistina mafên îdarî, lê heke me gelek komên dubarekirinê hebin, wê hingê dayîna mafên her komê dê dijwar be. Lêbelê, heke em dixwazin li ser kontrolkerên domainê dubarekirina Voluma Pergala Domainê bişopînin, dibe ku ev yek vebijarka pejirandî be, ji ber ku dayîna mafên rêvebirê domainê ji hesabê karûbarê çavdêriyê re ne ramanek baş e.

Şablon Şopandina

Li ser bingeha daneyên ku min wergirtin, min şablonek çêkir ku:

  • Vedîtina otomatîkî ya komên dubarekirinê di demjimêr de carekê dimeşîne,
  • Ji bo her komê her 5 hûrdem carekê mezinahiya paşketinê kontrol dike,
  • Tetkerek vedihewîne ku dema ku mezinahiya paşketinê ji bo her komekê ji 100 hûrdeman zêdetirî 30 be, hişyariyek dide. Tetîkkêş wekî prototîpek ku bixweber li komên naskirî tê zêdekirin tê binav kirin,
  • Ji bo her grûpek dubarekirinê grafikên mezinahiya paşketinê ava dike.

Hûn dikarin şablonê ji bo Zabbix 2.2 dakêşin vir.

Encam

Piştî ku şablonê li Zabbix têxe nav Zabbix û hesabek bi mafên pêwîst biafirîne, em ê tenê hewce bikin ku skrîptan li ser pêşkêşkerên pelan ên ku em dixwazin ji bo DFSR çavdêrî bikin kopî bikin, du rêzan li ser veavakirina nûnerê li ser wan zêde bikin û karûbarê nûnerê Zabbix ji nû ve bidin destpêkirin. , da ku ew wekî hesabê xwestinê bixebite. Ji bo çavdêriya DFSR-ê mîhengên destan ên din ne hewce ne.

Source: www.habr.com

Add a comment