Zabbix හි DFS අනුවර්තනය සරල අධීක්ෂණය

හැඳින්වීම

දත්ත මධ්‍යස්ථාන සහ ශාඛා සේවාදායකයන් අතර දත්ත අනුවර්තනය සඳහා දත්ත වෙත ප්‍රවේශ වීමේ තනි ලක්ෂ්‍යයක් ලෙස DFS සහ DFSR භාවිතා කරන තරමක් විශාල සහ බෙදා හරින ලද යටිතල පහසුකම් සමඟ, මෙම අනුකරණයේ තත්ත්වය නිරීක්ෂණය කිරීමේ ප්‍රශ්නය පැන නගී.
අහඹු ලෙස, අපි DFSR භාවිතා කිරීමට පටන් ගත් වහාම, අපි Zabbix ක්‍රියාත්මක කිරීමට පටන් ගත්තේ දැනට පවතින විවිධ මෙවලම්වල සත්වෝද්‍යානය ප්‍රතිස්ථාපනය කිරීම සහ යටිතල පහසුකම් අධීක්‍ෂණය වඩාත් තොරතුරු, සම්පූර්ණ සහ තාර්කික ස්වරූපයකට ගෙන ඒමේ අරමුණ ඇතිවය. DFS අනුවර්තනය නිරීක්ෂණය කිරීමට Zabbix භාවිතා කිරීම ගැන අපි කතා කරමු.

පළමුවෙන්ම, එහි තත්ත්වය නිරීක්ෂණය කිරීම සඳහා DFS අනුවර්තනය පිළිබඳ දත්ත මොනවාදැයි අප තීරණය කළ යුතුය. වඩාත්ම අදාළ දර්ශකය වන්නේ පසුබැසීමයි. අනුකරණ කණ්ඩායමේ අනෙකුත් සාමාජිකයන් සමඟ සමමුහුර්ත කර නොමැති ගොනු එහි අඩංගු වේ. උපයෝගීතාව භාවිතයෙන් ඔබට එහි විශාලත්වය නැරඹිය හැකිය dfsrdiag, DFSR භූමිකාව සමඟ ස්ථාපනය කර ඇත. සාමාන්‍ය ප්‍රතිවර්තන තත්වයකදී, පසුබැසීමේ ප්‍රමාණය ශුන්‍යයට ළඟා විය යුතුය. ඒ අනුව, පසුබැසීමේ ඇති ලිපිගොනු විශාල සංඛ්‍යාවක් අනුකරණයේ ගැටළු පෙන්නුම් කරයි.

දැන් ගැටලුවේ ප්‍රායෝගික පැත්ත ගැන.

Zabbix නියෝජිතයා හරහා පසුබැසීමේ ප්‍රමාණය නිරීක්ෂණය කිරීම සඳහා, අපට අවශ්‍ය වනු ඇත:

  • ප්‍රතිදානය විග්‍රහ කරන ස්ක්‍රිප්ට් dfsrdiag Zabbix වෙත අවසාන පසුබැසීමේ ප්‍රමාණයේ අගයන් සැපයීමට,
  • සේවාදායකයේ කොපමණ අනුකරණ කණ්ඩායම් තිබේද යන්න තීරණය කරන ස්ක්‍රිප්ට් එකක්, ඒවා ප්‍රතිනිර්මාණය කරන ෆෝල්ඩර මොනවාද සහ ඒවාට ඇතුළත් කර ඇති වෙනත් සේවාදායකයන් මොනවාද (එක් එක් සේවාදායකය සඳහා මේ සියල්ල Zabbix වෙත අතින් ඇතුල් කිරීමට අපට අවශ්‍ය නැත, හරිද?),
  • අධීක්ෂණ සේවාදායකයෙන් පසුව ඇමතීම සඳහා Zabbix නියෝජිත වින්‍යාසයට UserParameter ලෙස මෙම ස්ක්‍රිප්ට් එක් කිරීම,
  • පසුපොත කියවීමට හිමිකම් ඇති පරිශීලකයෙකු ලෙස Zabbix නියෝජිත සේවාව ආරම්භ කිරීම,
  • Zabbix සඳහා සැකිල්ලක්, කණ්ඩායම් හඳුනාගැනීම, ලැබුණු දත්ත සැකසීම සහ ඒවා පිළිබඳ ඇඟවීම් නිකුත් කිරීම වින්‍යාස කෙරේ.

ස්ක්‍රිප්ට් විග්‍රහකය

විග්‍රහකය ලිවීමට, මම Windows Server හි සියලුම අනුවාදවල පවතින වඩාත්ම විශ්වීය භාෂාව ලෙස VBS තෝරා ගත්තෙමි. ස්ක්‍රිප්ට් එකේ තර්කය සරලයි: එය අනුරූ කන්ඩායමේ නම, ප්‍රතිනිර්මාණය කරන ලද ෆෝල්ඩරය සහ විධාන රේඛාව හරහා යැවීමේ සහ ලැබීමේ සේවාදායකයන්ගේ නම් ලැබේ. මෙම පරාමිතීන් පසුව සම්මත කරනු ලැබේ dfsrdiag, සහ එහි නිමැවුම අනුව එය නිෂ්පාදනය කරයි:
ගොනු සංඛ්‍යාව - පසුබැසීමේ ලිපිගොනු පවතින බවට පණිවිඩයක් ලැබුනේ නම්,
0 — පසුබැසීමේ ලිපිගොනු නොමැති වීම ගැන පණිවිඩයක් ලැබුනේ නම් ("බැක්ලොග් නැත"),
-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"}]}

අප උනන්දු වන තොරතුරු ලබා ගැනීමට ඇති පහසුම ක්‍රමය වන්නේ WMI හරහා එය DfsrReplicationGroupConfig හි අනුරූප කොටස් වලින් ඉවත් කිරීමයි. එහි ප්රතිඵලයක් වශයෙන්, 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 විසින් තේරුම් ගත හැකි ආකෘතියකින් අනුකරණ කණ්ඩායම්වල පරාමිතීන් පිළිබඳ තොරතුරු සැපයීම.

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"

ඇත්ත වශයෙන්ම, අපි ස්ක්‍රිප්ට් ඇති ඒවාට මාර්ග සකස් කරමු. මම ඒවා නියෝජිතයා ස්ථාපනය කර ඇති එකම ෆෝල්ඩරයේ තැබුවෙමි.

වෙනස්කම් සිදු කිරීමෙන් පසු, Zabbix නියෝජිත සේවාව නැවත ආරම්භ කරන්න.

Zabbix නියෝජිත සේවාව ක්‍රියාත්මක වන පරිශීලකයා වෙනස් කිරීම

හරහා තොරතුරු ලබා ගැනීම සඳහා dfsrdiag, උපයෝගිතා අනුවර්තන කණ්ඩායමේ සාමාජිකයින් යැවීම සහ ලැබීම යන දෙකටම පරිපාලන අයිතිවාසිකම් ඇති ගිණුමක් යටතේ ධාවනය කළ යුතුය. පද්ධති ගිණුම යටතේ පෙරනිමියෙන් ක්‍රියාත්මක වන Zabbix නියෝජිත සේවාවට එවැනි ඉල්ලීමක් ක්‍රියාත්මක කිරීමට නොහැකි වනු ඇත. මම වසම තුළ වෙනම ගිණුමක් සාදා, එයට අවශ්‍ය සේවාදායකයන්හි පරිපාලන අයිතිවාසිකම් ලබා දී, මෙම සේවාදායකයන් මත එය යටතේ ක්‍රියාත්මක වන පරිදි සේවාව වින්‍යාස කළෙමි.

ඔබට වෙනත් මාර්ගයකට යා හැකිය: මන්ද dfsrdiag, ඇත්ත වශයෙන්ම, එකම WMI හරහා ක්රියා කරයි, එවිට ඔබට භාවිතා කළ හැකිය විස්තර, ඩොමේන් ගිණුමක් පරිපාලන අයිතිවාසිකම් නිකුත් නොකර එය භාවිතා කිරීමේ අයිතිය ලබා දෙන්නේ කෙසේද, නමුත් අපට බොහෝ අනුකරණ කණ්ඩායම් තිබේ නම්, එක් එක් කණ්ඩායමට අයිතිවාසිකම් නිකුත් කිරීම දුෂ්කර වනු ඇත. කෙසේ වෙතත්, අපට වසම් පාලක මත වසම් පද්ධති වෙළුම් අනුකරණය නිරීක්ෂණය කිරීමට අවශ්‍ය නම්, අධීක්ෂණ සේවා ගිණුමට වසම් පරිපාලක අයිතිවාසිකම් ලබා දීම හොඳ අදහසක් නොවන බැවින් මෙය එකම පිළිගත හැකි විකල්පය විය හැකිය.

අධීක්ෂණ අච්චුව

මට ලැබුණු දත්ත මත පදනම්ව, මම සැකිල්ලක් නිර්මාණය කළෙමි:

  • පැයකට වරක් අනුකරණ කණ්ඩායම් ස්වයංක්‍රීයව සොයාගැනීම ක්‍රියාත්මක කරයි,
  • සෑම මිනිත්තු 5 කට වරක් එක් එක් කණ්ඩායම සඳහා පසුබැසීමේ ප්‍රමාණය පරීක්ෂා කරයි,
  • ඕනෑම කණ්ඩායමක් සඳහා පසුබැසීමේ ප්‍රමාණය මිනිත්තු 100ක් සඳහා 30ට වඩා වැඩි වූ විට අනතුරු ඇඟවීමක් නිකුත් කරන ප්‍රේරකයක් අඩංගු වේ. ප්‍රේරකය විස්තර කර ඇත්තේ හඳුනාගත් කණ්ඩායම් වෙත ස්වයංක්‍රීයව එකතු වන මූලාකෘතියක් ලෙසය.
  • එක් එක් අනුකරණ කණ්ඩායම සඳහා පසුතල ප්‍රමාණයේ ප්‍රස්ථාර ගොඩනඟයි.

ඔබට Zabbix 2.2 සඳහා අච්චුව බාගත කළ හැකිය මෙහි.

ප්රතිඵලය

අච්චුව Zabbix වෙත ආනයනය කර අවශ්‍ය අයිතීන් සහිත ගිණුමක් නිර්මාණය කිරීමෙන් පසුව, අපට අවශ්‍ය වන්නේ අපට DFSR සඳහා නිරීක්ෂණය කිරීමට අවශ්‍ය ගොනු සේවාදායකයන් වෙත ස්ක්‍රිප්ට් පිටපත් කර, ඒවායේ නියෝජිත වින්‍යාසයට පේළි දෙකක් එකතු කර Zabbix නියෝජිත සේවාව නැවත ආරම්භ කිරීම පමණි. , අපේක්ෂිත ගිණුම ලෙස ධාවනය කිරීමට එය සැකසීම. DFSR අධීක්ෂණය සඳහා වෙනත් අතින් සැකසීම් අවශ්‍ය නොවේ.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න