Ներածություն
Բավականին մեծ և բաշխված ենթակառուցվածքով, որն օգտագործում է DFS-ը՝ որպես տվյալների մուտքի մեկ կետ, և DFSR-ը՝ տվյալների կենտրոնների և մասնաճյուղային սերվերների միջև տվյալների կրկնօրինակման համար, հարց է առաջանում՝ վերահսկել այս վերարտադրության կարգավիճակը:
Պատահաբար, DFSR-ն օգտագործելուց գրեթե անմիջապես հետո մենք սկսեցինք կիրառել Zabbix-ը՝ նպատակ ունենալով փոխարինել գոյություն ունեցող կենդանաբանական այգին տարբեր գործիքներով և ենթակառուցվածքի մոնիտորինգը բերել ավելի տեղեկատվական, ամբողջական և տրամաբանական ձևի: Մենք կխոսենք Zabbix-ի օգտագործման մասին DFS-ի վերարտադրությունը վերահսկելու համար:
Առաջին հերթին, մենք պետք է որոշենք, թե DFS-ի կրկնօրինակման մասին ինչ տվյալներ պետք է ձեռք բերվեն՝ դրա կարգավիճակը վերահսկելու համար: Ամենաարդիական ցուցանիշը հետաձգումն է: Այն պարունակում է ֆայլեր, որոնք չեն համաժամացվել կրկնօրինակման խմբի այլ անդամների հետ: Դուք կարող եք դիտել դրա չափը, օգտագործելով կոմունալը դֆսրդիագ, տեղադրված է DFSR դերով: Նորմալ կրկնօրինակման վիճակում, հետնահերթության չափը պետք է մոտենա զրոյին: Համապատասխանաբար, մեծ թվով ֆայլեր հետքայլում ցույց են տալիս կրկնօրինակման հետ կապված խնդիրներ:
Հիմա հարցի գործնական կողմի մասին։
Zabbix Agent-ի միջոցով կուտակված կուտակումների չափը վերահսկելու համար մեզ անհրաժեշտ կլինի.
- Սցենար, որը կվերլուծի ելքը դֆսրդիագ Zabbix-ին տրամադրել վերջնական հետնահերթ չափի արժեքներ,
- Սկրիպտ, որը կորոշի, թե քանի վերարտադրման խումբ կա սերվերում, ինչ թղթապանակներ են նրանք կրկնօրինակում և ինչ այլ սերվերներ են ներառված դրանցում (մենք չենք ցանկանում այս ամենը ձեռքով մուտքագրել Zabbix յուրաքանչյուր սերվերի համար, այնպես չէ՞):
- Այս սկրիպտները որպես UserParameter ավելացնելով Zabbix գործակալի կազմաձևում՝ մոնիտորինգի սերվերից հետագա զանգերի համար,
- Սկսելով Zabbix գործակալի ծառայությունը որպես օգտատեր, ով իրավունք ունի կարդալու հետնահերթությունները,
- Zabbix-ի ձևանմուշ, որում կկազմաձևվեն խմբերի հայտնաբերումը, ստացված տվյալների մշակումը և դրանց վերաբերյալ ահազանգերի տրամադրումը:
Սցենարի վերլուծիչ
Վերլուծիչը գրելու համար ես ընտրեցի VBS-ը որպես Windows Server-ի բոլոր տարբերակներում առկա ամենահամընդհանուր լեզու: Սկրիպտի տրամաբանությունը պարզ է՝ այն հրամանի տողի միջոցով ստանում է վերարտադրման խմբի անվանումը, կրկնօրինակվող թղթապանակը և ուղարկող և ստացող սերվերների անունները։ Այնուհետև այս պարամետրերը փոխանցվում են դֆսրդիագ, և կախված իր արտադրանքից այն արտադրում է.
Ֆայլերի քանակը - եթե հաղորդագրություն է ստացվել հետնամասում ֆայլերի առկայության մասին,
0 — եթե հաղորդագրություն է ստացվել հետնախագիծում ֆայլերի բացակայության մասին («Ոչ մի հետք»),
-1 - եթե սխալ հաղորդագրություն է ստացվել դֆսրդիագ հարցումը կատարելիս («[ՍԽԱԼ]»):
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 Agent ծառայությունը
միջոցով տեղեկատվություն ստանալու համար դֆսրդիագ, կոմունալ ծրագիրը պետք է գործարկվի այնպիսի հաշվի ներքո, որն ունի ադմինիստրատիվ իրավունքներ կրկնօրինակման խմբի անդամներին ուղարկելու և ստանալու համար: Zabbix գործակալի ծառայությունը, որը լռելյայնորեն աշխատում է համակարգի հաշվի տակ, չի կարողանա կատարել նման հարցում: Ես ստեղծեցի առանձին հաշիվ տիրույթում, նրան տվեցի ադմինիստրատիվ իրավունքներ պահանջվող սերվերների վրա և կարգավորեցի այս սերվերները, որպեսզի գործարկեն ծառայությունը դրա տակ։
Դուք կարող եք գնալ այլ ճանապարհով, քանի որ դֆսրդիագ, փաստորեն, աշխատում է նույն WMI-ի միջոցով, ապա կարող եք օգտագործել
Մոնիտորինգի ձևանմուշ
Իմ ստացած տվյալների հիման վրա ես ստեղծեցի ձևանմուշ, որը.
- Գործարկում է կրկնօրինակման խմբերի ավտոմատ հայտնաբերումը ժամում մեկ անգամ,
- Յուրաքանչյուր խմբի համար յուրաքանչյուր 5 րոպեն մեկ ստուգում է հետնահերթության չափը,
- Պարունակում է գործարկիչ, որը ծանուցում է տալիս, երբ որևէ խմբի համար 100-ից ավելի է 30 րոպեի ընթացքում: Գործարկիչը նկարագրվում է որպես նախատիպ, որն ավտոմատ կերպով ավելացվում է հայտնաբերված խմբերին,
- Կառուցում է հետնաժամկետ չափի գրաֆիկներ յուրաքանչյուր կրկնօրինակման խմբի համար:
Դուք կարող եք ներբեռնել Zabbix 2.2-ի ձևանմուշը
Լրիվ
Կաղապարը Zabbix ներմուծելուց և անհրաժեշտ իրավունքներով հաշիվ ստեղծելուց հետո մեզ միայն պետք է պատճենել սկրիպտները ֆայլերի սերվերների վրա, որոնք ցանկանում ենք վերահսկել DFSR-ի համար, ավելացնել երկու տող գործակալի կազմաձևում դրանց վրա և վերագործարկել Zabbix գործակալի ծառայությունը: , սահմանելով այն աշխատել որպես ցանկալի հաշիվ: DFSR մոնիտորինգի համար այլ ձեռքով կարգավորումներ չեն պահանջվում:
Source: www.habr.com