پېژندنه
د کافي لوی او توزیع شوي زیربنا سره چې 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