መግቢያ
በበቂ ሁኔታ ትልቅ እና የተከፋፈለ መሠረተ ልማት 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