تعارف
ڪافي وڏي ۽ ورهايل انفراسٽرڪچر سان جيڪو 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