በዛቢክስ ውስጥ የDFS ማባዛትን ቀላል ክትትል

መግቢያ

በበቂ ሁኔታ ትልቅ እና የተከፋፈለ መሠረተ ልማት DFSን እንደ አንድ የውሂብ መዳረሻ ነጥብ እና ዲኤፍኤስአር በመረጃ ማእከል እና በቅርንጫፍ አገልጋዮች መካከል ለመረጃ ማባዛት, የዚህን ድግግሞሽ ሁኔታ የመከታተል ጥያቄ ይነሳል.
እንደ አጋጣሚ ሆኖ የDFRን መጠቀም ከጀመረ በኋላ ወዲያውኑ የዛቢክስን መተግበር ጀመርን የተለያዩ መሳሪያዎች ያለውን መካነ አራዊት ለመተካት እና የመሰረተ ልማት ክትትልን ወደ የበለጠ መረጃ ሰጪ፣ የተሟላ እና ምክንያታዊ ቅርፅ ለማምጣት። የDFS መባዛትን ለመቆጣጠር ስለ Zabbix መጠቀም እንነጋገራለን.

በመጀመሪያ ደረጃ፣ ሁኔታውን ለመከታተል ስለ DFS ማባዛት ምን አይነት መረጃ መቀበል እንዳለብን መወሰን አለብን። በጣም አስፈላጊው አመላካች የኋላ መዝገብ ነው. ከሌሎች የማባዛት ቡድኑ አባላት ጋር ያልተመሳሰሉ ፋይሎችን ይዟል። በመገልገያው አማካኝነት መጠኑን ማየት ይችላሉ DFsrdiagበDFR ሚና ተጭኗል። በተለመደው የማባዛት ሁኔታ, የጀርባው መጠን ወደ ዜሮ መሆን አለበት. በዚህ መሠረት ብዙ ቁጥር ያላቸው ፋይሎች በማባዛት ላይ ያሉ ችግሮችን ያመለክታሉ.

አሁን ስለ ጉዳዩ ተግባራዊ ጎን.

የኋለኛውን መዝገብ መጠን በዛቢክስ ወኪል በኩል ለመከታተል እኛ እንፈልጋለን፡-

  • ውጤቱን የሚተነተን ስክሪፕት DFsrdiag ለ Zabbix የመጨረሻ የመጠባበቂያ መጠን ዋጋዎችን ለማቅረብ ፣
  • በአገልጋዩ ላይ ምን ያህል የማባዛት ቡድኖች እንዳሉ፣ ምን ያህል ማህደሮች እንደሚባዙ እና ምን ሌሎች አገልጋዮችን እንደሚያካትቱ የሚወስን ስክሪፕት (ይህን ሁሉ ለእያንዳንዱ አገልጋይ በእጃችን ወደ ዛቢቢክስ መንዳት አንፈልግም ፣ አይደል?)
  • እነዚህን ስክሪፕቶች እንደ የተጠቃሚ ፓራሜትር ወደ ዛቢክስ ወኪል ውቅር ከክትትል አገልጋዩ ለሚመጣ ጥሪ፣
  • የኋላ መዝገብ የማንበብ መብት ያለው እንደ ተጠቃሚ የዛቢክስ ወኪል አገልግሎትን መጀመር፣
  • የዛቢክስ አብነት፣ የትኛው የቡድን ግኝት እንደሚዋቀር፣ የተቀበለውን ውሂብ ማቀናበር እና በእነሱ ላይ ማንቂያዎችን መስጠት።

ስክሪፕት ተንታኝ

ተንታኙን ለመጻፍ፣ በሁሉም የዊንዶውስ አገልጋይ ስሪቶች ውስጥ VBSን እንደ ሁለንተናዊ ቋንቋ መርጫለሁ። የስክሪፕቱ አመክንዮ ቀላል ነው፡ የተባዛ ቡድን ስም፣ የተባዛ ማህደር እና የላኪ እና ተቀባይ አገልጋዮችን ስም በትእዛዝ መስመር ይቀበላል። ከዚያም እነዚህ መለኪያዎች ወደ ተላልፈዋል DFsrdiagእና በውጤቱ ላይ በመመስረት፡-
የፋይሎች ብዛት - በጀርባ መዝገብ ውስጥ ስለ ፋይሎች መኖር መልእክት ከደረሰ ፣
0 - በጀርባ መዝገብ ውስጥ ያሉ ፋይሎች አለመኖራቸውን በተመለከተ መልእክት ከደረሰ ("Backlog No") ፣
-1 - የስህተት መልእክት ከደረሰ DFsrdiag ጥያቄውን ሲፈጽሙ ("[ERROR]")።

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

የግኝት ስክሪፕት።

Zabbix በአገልጋዩ ላይ የሚገኙትን ሁሉንም የማባዛት ቡድኖች ለመወሰን እና ለጥያቄው የሚያስፈልጉትን ሁሉንም መመዘኛዎች ለማወቅ (የአቃፊ ስም ፣ የአጎራባች አገልጋዮች ስሞች) ይህንን መረጃ ማግኘት አለብን ፣ በመጀመሪያ እና በሁለተኛ ደረጃ ፣ በ ውስጥ ያቅርቡ ። Zabbix የሚረዳው ቅርጸት. የግኝት መሳሪያው የተረዳው ቅርጸት ይህን ይመስላል።

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

...

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

የምንፈልገውን መረጃ ለማግኘት ቀላሉ መንገድ ከDfsrReplicationGroupConfig ተጓዳኝ ክፍሎችን በማውጣት በWMI በኩል ነው። በውጤቱም, ለ WMI ጥያቄ የሚያቀርብ እና የቡድኖች ዝርዝር, ማህደሮች እና አገልጋዮች በሚፈለገው ቅርጸት የሚያወጣ ስክሪፕት ተወለደ.

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

እስማማለሁ ፣ ስክሪፕቱ በኮዱ ውበት ላይበራ ይችላል እና በውስጡ የሆነ ነገር በእርግጠኝነት ቀላል ሊሆን ይችላል ፣ ግን ዋና ተግባሩ - ስለ ማባዛት ቡድኖች መለኪያዎች መረጃ በዛቢክስ ሊረዳ በሚችል ቅርጸት ለመስጠት - በተሳካ ሁኔታ ያከናውናል።

ወደ Zabbix ወኪል ውቅር ስክሪፕቶችን ማከል

እዚህ ሁሉም ነገር በጣም ቀላል ነው. በወኪሉ ውቅር ፋይል መጨረሻ ላይ የሚከተሉትን መስመሮች ያክሉ።

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"

እርግጥ ነው, እኛ ስክሪፕቶች ወዳለንባቸው መንገዶችን እናስተካክላለን. ወኪሉ በተጫነበት አቃፊ ውስጥ አስቀምጣቸዋለሁ.

ለውጦችን ካደረጉ በኋላ የዛቢክስ ወኪል አገልግሎትን እንደገና ያስጀምሩ።

የዛቢክስ ወኪል አገልግሎት የሚሰራበትን ተጠቃሚ መለወጥ

በኩል መረጃ ለማግኘት DFsrdiag, መገልገያው የማባዛት ቡድን አባላትን ለመላክ እና ለመቀበል አስተዳደራዊ መብቶች ባለው አካውንት በመወከል መከናወን አለበት. በስርዓት መለያው ስር በነባሪ የሚሰራው የዛቢክስ ወኪል አገልግሎት እንደዚህ አይነት ጥያቄን ማሟላት አይችልም። በጎራው ውስጥ የተለየ መለያ ፈጠርኩ፣ በሚፈለጉት አገልጋዮች ላይ አስተዳደራዊ መብቶችን ሰጠሁ እና አገልግሎቱን ከሥሩ እንዲጀምሩ እነዚህን አገልጋዮች አዋቅሬአለሁ።

እንዲሁም በሌላ መንገድ መሄድ ይችላሉ: ጀምሮ DFsrdiag, በእውነቱ, በተመሳሳይ WMI በኩል ይሰራል, እርስዎ መጠቀም ይችላሉ መግለጫ, የዶሜይን አካውንት የአስተዳደር መብቶችን ሳይሰጥ የመጠቀም መብትን እንዴት መስጠት እንደሚቻል, ነገር ግን ብዙ የማባዛት ቡድኖች ካሉን, ለእያንዳንዱ ቡድን መብቶችን መስጠት አስቸጋሪ ይሆናል. ነገር ግን፣ የጎራ ስርዓት ድምጽ ማባዛትን በጎራ ተቆጣጣሪዎች ላይ መከታተል ከፈለግን፣ ይህ ብቸኛው ተቀባይነት ያለው አማራጭ ሊሆን ይችላል፣ ምክንያቱም ለጎራ አስተዳዳሪ ለክትትል አገልግሎት መለያ መብቶችን መስጠት ጥሩ ሀሳብ አይደለም።

የክትትል አብነት

ባገኘሁት መረጃ መሰረት አብነት ፈጠርኩ፡-

  • የማባዛት ቡድኖችን በሰዓት አንድ ጊዜ አውቶማቲክ ፍለጋ ያካሂዳል፣
  • በየ 5 ደቂቃው አንዴ ለእያንዳንዱ ቡድን የጀርባ መዝገብ መጠን ይፈትሻል፣
  • ለማንኛውም ቡድን ከ 100 በላይ ለ 30 ደቂቃዎች የጀርባ መዝገብ መጠን በሚሆንበት ጊዜ ማስጠንቀቂያ የሚሰጥ ቀስቅሴን ይዟል። ቀስቅሴው ወደ ተገኙ ቡድኖች በራስ-ሰር የሚታከል እንደ ፕሮቶታይፕ ተገልጿል፣
  • ለእያንዳንዱ የማባዛት ቡድን የኋላ መዝገብ መጠን ያሴራል።

ለ Zabbix 2.2 አብነት ማውረድ ይችላሉ እዚህ.

ውጤቱ

አብነቱን ወደ ዛቢቢክስ ካስገባን በኋላ እና አስፈላጊ መብቶች ያለው አካውንት ከፈጠርን በኋላ ስክሪፕቶቹን ለDFR ልንከታተላቸው ወደምንፈልጋቸው የፋይል አገልጋዮች ብቻ መቅዳት አለብን፣ በእነሱ ላይ ወደ ወኪል ውቅር ሁለት መስመሮችን ማከል እና የዛቢክስ ወኪል አገልግሎትን እንደገና ማስጀመር አለብን። የተፈለገውን መለያ ወክሎ እንዲሰራ ማዋቀር. DFSRን ለመከታተል ሌላ በእጅ ቅንጅቶች አያስፈልግም።

ምንጭ: hab.com

አስተያየት ያክሉ