Zabbix ۾ DFS نقل جي سادي نگراني

تعارف

ڪافي وڏي ۽ ورهايل انفراسٽرڪچر سان جيڪو DFS استعمال ڪري ٿو ڊيٽا تائين رسائي جي واحد نقطي جي طور تي ۽ DFSR ڊيٽا سينٽرن ۽ برانچ سرورز جي وچ ۾ ڊيٽا جي نقل لاءِ، سوال پيدا ٿئي ٿو هن نقل جي صورتحال جي نگراني ڪرڻ جو.
اتفاق سان، اسان DFSR استعمال ڪرڻ شروع ڪرڻ کان فوري طور تي، اسان مختلف اوزارن جي موجوده زو کي تبديل ڪرڻ ۽ انفراسٽرڪچر مانيٽرنگ کي وڌيڪ معلوماتي، مڪمل ۽ منطقي شڪل ۾ آڻڻ جي مقصد سان زيبڪس کي لاڳو ڪرڻ شروع ڪيو. اسان DFS نقل جي نگراني ڪرڻ لاء زيبڪس استعمال ڪرڻ بابت ڳالهائينداسين.

سڀ کان پهريان، اسان کي اهو فيصلو ڪرڻو پوندو ته ڊي ايف ايس جي نقل بابت ڪهڙي ڊيٽا حاصل ڪرڻ جي ضرورت آهي ان جي حيثيت جي نگراني ڪرڻ لاء. سڀ کان وڌيڪ لاڳاپيل اشارو بيڪ لاگ آهي. ان ۾ فائلون شامل آھن جن کي نقل ڪرڻ واري گروپ جي ٻين ميمبرن سان هم وقت سازي نه ڪئي وئي آھي. توھان استعمال ڪري سگھوٿا ان جي سائيز کي استعمال ڪندي dfsrdiag، DFSR ڪردار سان نصب ٿيل. عام نقل واري حالت ۾، بيڪ لاگ سائيز صفر جي ويجهو اچڻ گهرجي. ان جي مطابق، بيڪ لاگ ۾ فائلن جو وڏو تعداد نقل سان مسئلا ظاهر ڪري ٿو.

هاڻي مسئلي جي عملي پاسي جي باري ۾.

زبڪس ايجنٽ ذريعي بيڪ لاگ جي سائيز کي مانيٽر ڪرڻ لاء، اسان کي ضرورت پوندي:

  • اسڪرپٽ جيڪو آئوٽ پٽ کي پارس ڪندو dfsrdiag زبڪس کي حتمي بيڪ لاگ سائيز ويلز مهيا ڪرڻ لاءِ،
  • هڪ اسڪرپٽ جيڪو اهو طئي ڪندو ته سرور تي ڪيترا ريپليڪشن گروپ آهن، اهي ڪهڙا فولڊر ٺاهيندا آهن ۽ انهن ۾ ڪهڙا ٻيا سرور شامل آهن (اسان اهو سڀ ڪجهه هر سرور لاءِ هٿ سان زيبڪس ۾ داخل ڪرڻ نٿا چاهيون، صحيح؟)
  • انهن اسڪرپٽس کي يوزر پيراميٽر جي طور تي شامل ڪندي زبڪس ايجنٽ جي ترتيب ۾ نگراني سرور کان ايندڙ ڪالنگ لاءِ،
  • Zabbix ايجنٽ سروس کي هڪ صارف جي طور تي شروع ڪري رهيو آهي جنهن کي بيڪ لاگ پڙهڻ جا حق حاصل آهن،
  • Zabbix لاءِ هڪ ٽيمپليٽ، جنهن ۾ گروپن جي ڳولا، وصول ڪيل ڊيٽا جي پروسيسنگ ۽ انهن تي الرٽ جاري ڪرڻ کي ترتيب ڏنو ويندو.

اسڪرپٽ پارسر

parser لکڻ لاءِ، مون چونڊيو 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 کي سمجھڻ واري شڪل ۾. فارميٽ جنهن کي دريافت ڪرڻ وارو اوزار سمجهي ٿو هن طرح نظر اچي ٿو:

        "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 پاران سمجهي سگهجي ٿي.

زبڪس ايجنٽ جي ترتيب ۾ اسڪرپٽ شامل ڪرڻ

هتي هر شيء بلڪل سادي آهي. ايجنٽ جي ترتيب واري فائل جي آخر ۾ ھيٺيون لائينون شامل ڪريو:

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 ايجنٽ سروس.

استعمال ڪندڙ کي تبديل ڪندي جنهن جي تحت زبڪس ايجنٽ سروس هلندي آهي

ذريعي معلومات حاصل ڪرڻ لاء dfsrdiag, افاديت کي هڪ اڪائونٽ تحت هلائڻ گهرجي جنهن ۾ انتظامي حق آهن ٻنهي کي موڪلڻ ۽ وصول ڪرڻ واري گروپ جي ميمبرن جا. زبڪس ايجنٽ سروس، سسٽم اڪائونٽ تحت ڊفالٽ طور تي هلندڙ، اهڙي درخواست تي عمل ڪرڻ جي قابل نه هوندي. مون ڊومين ۾ هڪ الڳ اڪائونٽ ٺاهيو، ان کي ضروري سرورز تي انتظامي حق ڏنائين، ۽ انهن سرورن تي ان جي تحت هلائڻ لاءِ خدمت ترتيب ڏني.

توهان ٻئي طريقي سان وڃي سگهو ٿا: ڇاڪاڻ ته dfsrdiag, حقيقت ۾, ساڳي WMI ذريعي ڪم, پوء توهان استعمال ڪري سگهو ٿا وضاحت، هڪ ڊومين اڪائونٽ کي انتظامي حق جاري ڪرڻ کان سواءِ ان کي استعمال ڪرڻ جا حق ڪيئن ڏنا وڃن، پر جيڪڏهن اسان وٽ ڪيترائي نقل گروپ آهن، ته پوءِ هر گروپ کي حق جاري ڪرڻ ڏکيو ٿي پوندو. تنهن هوندي، جيڪڏهن اسان ڊومين ڪنٽرولرز تي ڊومين سسٽم جي حجم جي نقل جي نگراني ڪرڻ چاهيون ٿا، اهو صرف قابل قبول اختيار ٿي سگهي ٿو، ڇاڪاڻ ته مانيٽرنگ سروس اڪائونٽ کي ڊومين ايڊمنسٽريٽر حق ڏيڻ سٺو خيال ناهي.

مانيٽرنگ ٽيمپليٽ

حاصل ڪيل ڊيٽا جي بنياد تي، مون ھڪڙي ٽيمپليٽ ٺاھيو آھي:

  • هڪ ڀيرو في ڪلاڪ جي نقل گروپن جي خودڪار دريافت کي هلائي ٿو،
  • هر گروپ لاءِ بيڪ لاگ سائيز چيڪ ڪري ٿو هڪ ڀيرو هر 5 منٽن ۾،
  • هڪ ٽرگر تي مشتمل آهي جيڪو هڪ الرٽ جاري ڪري ٿو جڏهن ڪنهن به گروپ لاءِ بيڪ لاگ سائيز 100 منٽن لاءِ 30 کان وڌيڪ آهي. ٽريگر هڪ پروٽوٽائپ جي طور تي بيان ڪيو ويو آهي جيڪو خودڪار طور تي دريافت ڪيل گروپن ۾ شامل ڪيو ويو آهي،
  • هر نقل ڪرڻ واري گروپ لاءِ بيڪ لاگ سائيز گرافس ٺاهي ٿو.

توھان ڊائون لوڊ ڪري سگھوٿا Zabbix 2.2 لاءِ ٽيمپليٽ هتي.

نتيجو

ٽيمپليٽ کي زيبڪس ۾ درآمد ڪرڻ ۽ ضروري حقن سان هڪ اڪائونٽ ٺاهڻ کان پوءِ، اسان کي صرف فائل سرورز تي اسڪرپٽس کي نقل ڪرڻ جي ضرورت پوندي جيڪا اسان DFSR لاءِ مانيٽر ڪرڻ چاهيون ٿا، انهن تي ايجنٽ جي ترتيب ۾ ٻه لائينون شامل ڪريو ۽ Zabbix ايجنٽ سروس کي ٻيهر شروع ڪريو. ، ان کي ترتيب ڏيڻ لاءِ مطلوب اڪائونٽ طور هلائڻ. DFSR مانيٽرنگ لاءِ ڪا ٻي دستي سيٽنگ گهربل ناهي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو