په زبیبکس کې د DFS نقل کولو ساده څارنه

پېژندنه

د کافي لوی او توزیع شوي زیربنا سره چې DFS ډیټا ته د لاسرسي واحد نقطې په توګه کاروي او د ډیټا مرکزونو او شاخ سرورونو ترمینځ د ډیټا نقل کولو لپاره DFSR ، د دې نقل حالت نظارت کولو پوښتنه راپورته کیږي.
په تصادفي توګه، نږدې سمدلاسه وروسته له دې چې موږ د DFSR کارول پیل کړل، موږ د زبیکس پلي کول پیل کړل چې هدف یې د مختلفو وسیلو موجود ژوبڼ ځای پرځای کول او د زیربناوو نظارت ډیر معلوماتي، بشپړ او منطقي بڼه ته راوړل. موږ به د DFS نقل څارلو لپاره د زیبکس کارولو په اړه وغږیږو.

تر ټولو لومړی، موږ باید پریکړه وکړو چې د DFS نقل په اړه کوم معلومات باید ترلاسه شي ترڅو د دې حالت څارنه وکړي. ترټولو اړونده شاخص بیکلاګ دی. دا هغه فایلونه لري چې د نقل کولو ګروپ نورو غړو سره همغږي شوي ندي. تاسو کولی شئ د یوټیلیټ په کارولو سره د هغې اندازه وګورئ dfsrdiag، د DFSR رول سره نصب شوی. په عادي نقل حالت کې، د بیکلاګ اندازه باید صفر ته نږدې شي. په دې اساس، په بیکلاګ کې د فایلونو لوی شمیر د نقل کولو ستونزې په ګوته کوي.

اوس د مسلې د عملي اړخ په اړه.

د زبکس ایجنټ له لارې د بیکلاګ اندازې څارلو لپاره، موږ به اړتیا ولرو:

  • سکریپټ چې محصول به پارس کړي dfsrdiag زبیکس ته د وروستي بیکلاګ اندازې ارزښتونو چمتو کولو لپاره،
  • یو سکریپټ چې دا به وټاکي چې په سرور کې څومره د نقل کولو ګروپونه شتون لري، کوم فولډر دوی نقل کوي او کوم نور سرورونه په دوی کې شامل دي (موږ نه غواړو چې دا ټول د هر سرور لپاره د لاس په واسطه زیبکس ته داخل کړو، سمه ده؟)
  • د دې سکریپټونو اضافه کول د کارن پیرامیټر په توګه د زبکس ایجنټ ترتیب کې د نظارت سرور څخه د راتلونکي زنګ وهلو لپاره ،
  • د زبکس ایجنټ خدمت د یو کارونکي په توګه پیل کول چې د بیکلاګ لوستلو حق لري،
  • د زیبکس لپاره یوه ټیمپلیټ، په کوم کې چې د ډلو کشف کول، د ترلاسه شویو معلوماتو پروسس کول او په دوی باندې د خبرتیاو صادرول به ترتیب شي.

سکریپټ پارسر

د پارسر لیکلو لپاره، ما 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

د کشف سکریپټ

د دې لپاره چې زبیکس په سرور کې موجود د نقل کولو ټولې ډلې وټاکي او د غوښتنې لپاره اړین ټول پیرامیټونه ومومي (د فولډر نوم، د ګاونډیو سرورونو نومونه)، موږ باید لومړی دا معلومات ترلاسه کړو، او دویم یې وړاندې کړو. په داسې شکل کې چې زبیکس ته د پوهیدو وړ وي. هغه بڼه چې د کشف وسیله پوهیږي داسې ښکاري:

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

...

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

د هغه معلوماتو ترلاسه کولو ترټولو اسانه لار چې موږ یې لیوالتیا لرو د WMI له لارې ده، د DfsrReplicationGroupConfig اړوندو برخو څخه یې ایستل. د پایلې په توګه، یو سکریپټ رامینځته شوی چې WMI ته غوښتنه رامینځته کوي او د اړتیا وړ ب formatه کې د ډلو لیست ، د دوی فولډرونه او سرورونه تولیدوي.

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

زه موافق یم، سکریپټ ممکن د کوډ په ښکلا سره روښانه نه وي او ځینې شیان په یقیني توګه ساده کیدی شي، مګر دا خپل اصلي دنده ترسره کوي - د زبیبکس لخوا د پوهیدو وړ بڼه کې د نقل ګروپونو پیرامیټونو په اړه معلومات چمتو کوي.

د زیبکس ایجنټ ترتیب ته د سکریپټونو اضافه کول

دلته هرڅه خورا ساده دي. د اجنټ ترتیب کولو فایل پای ته لاندې لینونه اضافه کړئ:

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 لپاره ټیمپلیټ ډاونلوډ کړئ دلته.

نتیجه

زیبکس ته د ټیمپلیټ واردولو او د اړینو حقونو سره حساب رامینځته کولو وروسته ، موږ به یوازې د فایل سرورونو ته سکریپټونه کاپي کولو ته اړتیا ولرو چې موږ یې د DFSR لپاره نظارت کول غواړو ، په دوی کې د اجنټ ترتیب کې دوه لینونه اضافه کړئ او د زبیکس اجنټ خدمت بیا پیل کړئ. ، دا د مطلوب حساب په توګه چلولو لپاره تنظیم کړئ. د DFSR څارنې لپاره نور لارښود ترتیباتو ته اړتیا نشته.

سرچینه: www.habr.com

Add a comment