Ievads
Ar diezgan lielu un izkliedētu infrastruktūru, kas izmanto DFS kā vienotu piekļuves punktu datiem un DFSR datu replikācijai starp datu centriem un filiāles serveriem, rodas jautājums par šīs replikācijas statusa uzraudzību.
Nejaušība ir tāda, ka gandrīz uzreiz pēc DFSR lietošanas sākšanas mēs sākām ieviest Zabbix ar mērķi aizstāt esošo dažādu rīku zoodārzu un padarīt infrastruktūras uzraudzību informatīvākā, pilnīgākā un loģiskākā formā. Mēs runāsim par Zabbix izmantošanu, lai uzraudzītu DFS replikāciju.
Pirmkārt, mums ir jāizlemj, kādi dati par DFS replikāciju ir jāiegūst, lai uzraudzītu tā statusu. Visatbilstošākais rādītājs ir neizpildītie rādītāji. Tajā ir faili, kas nav sinhronizēti ar citiem replikācijas grupas dalībniekiem. Varat skatīt tā lielumu, izmantojot utilītu dfsrdiag, kas instalēta ar DFSR lomu. Parastā replikācijas stāvoklī atlikumu apjomam vajadzētu tuvoties nullei. Attiecīgi liels failu skaits neizpildītajā programmā norāda uz problēmām ar replikāciju.
Tagad par jautājuma praktisko pusi.
Lai, izmantojot Zabbix Agent, pārraudzītu neizpildītā apjoma lielumu, mums būs nepieciešams:
- Skripts, kas parsēs izvadi dfsrdiag nodrošināt Zabbix galīgās neizpildītās summas vērtības,
- Skripts, kas noteiks, cik replikācijas grupu ir serverī, kādas mapes tās replicē un kādi citi serveri tajās ir iekļauti (mēs nevēlamies to visu ievadīt Zabbix ar roku katram serverim, vai ne?)
- Šo skriptu pievienošana kā UserParameter Zabbix aģenta konfigurācijai turpmākai izsaukšanai no uzraudzības servera,
- Palaižot Zabbix aģenta pakalpojumu kā lietotājam, kuram ir tiesības lasīt neizpildīto informāciju,
- Zabbix veidne, kurā tiks konfigurēta grupu noteikšana, saņemto datu apstrāde un brīdinājumu izsniegšana par tām.
Skriptu parsētājs
Lai rakstītu parsētāju, es izvēlējos VBS kā universālāko valodu visās Windows Server versijās. Skripta loģika ir vienkārša: tas saņem replikācijas grupas nosaukumu, replicēto mapi un sūtīšanas un saņemšanas serveru nosaukumus, izmantojot komandrindu. Pēc tam šie parametri tiek nodoti dfsrdiag, un atkarībā no izlaides tas ražo:
Failu skaits - ja tiek saņemts ziņojums par failu esamību atpalicībā,
0 — ja tiek saņemts ziņojums par failu neesamību uzkrājumos (“Nav atpalicības”),
-1 - ja tiek saņemts kļūdas ziņojums dfsrdiag izpildot pieprasījumu ("[KĻŪDA]").
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 intBackLogAtklāšanas skripts
Lai Zabbix varētu noteikt visas serverī esošās replikācijas grupas un noskaidrot visus pieprasījumam nepieciešamos parametrus (mapes nosaukumu, blakus esošo serveru nosaukumus), mums, pirmkārt, ir jāiegūst šī informācija un, otrkārt, tā jāuzrāda. Zabbix saprotamā formātā. Formāts, ko saprot atklāšanas rīks, izskatās šādi:
"data":[
{
"{#GROUP}":"Share1",
"{#FOLDER}":"Folder1",
"{#SENDING}":"Server1",
"{#RECEIVING}":"Server2"}
...
"{#GROUP}":"ShareN",
"{#FOLDER}":"FolderN",
"{#SENDING}":"Server1",
"{#RECEIVING}":"ServerN"}]}Vienkāršākais veids, kā iegūt mūs interesējošo informāciju, ir WMI, izvelkot to no attiecīgajām DfsrReplicationGroupConfig sadaļām. Rezultātā radās skripts, kas ģenerē pieprasījumu WMI un izvada grupu, to mapju un serveru sarakstu vajadzīgajā formātā.
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
Piekrītu, skripts var nespīdēt ar koda eleganci un dažas lietas tajā noteikti varētu vienkāršot, taču tas pilda savu galveno funkciju - sniedz informāciju par replikācijas grupu parametriem Zabbix saprotamā formātā.
Skriptu pievienošana Zabbix aģenta konfigurācijai
Šeit viss ir ārkārtīgi vienkārši. Aģenta konfigurācijas faila beigās pievienojiet šādas rindiņas:
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"
Protams, mēs pielāgojam ceļus tiem, kur mums ir skripti. Es ievietoju tos tajā pašā mapē, kurā ir instalēts aģents.
Pēc izmaiņu veikšanas restartējiet Zabbix aģenta pakalpojumu.
Lietotāja maiņa, ar kuru darbojas Zabbix Agent pakalpojums
Lai saņemtu informāciju caur dfsrdiag, utilīta ir jāpalaiž kontā, kuram ir administratīvās tiesības gan replikācijas grupas sūtītājiem, gan saņēmējiem. Zabbix aģenta pakalpojums, kas pēc noklusējuma darbojas sistēmas kontā, nevarēs izpildīt šādu pieprasījumu. Es izveidoju atsevišķu kontu domēnā, piešķīru tam administratīvās tiesības nepieciešamajos serveros un konfigurēju pakalpojumu, lai tas darbotos šajos serveros.
Jūs varat iet citu ceļu: tāpēc, ka dfsrdiag, patiesībā, darbojas caur to pašu WMI, tad varat izmantot , kā piešķirt domēna kontam lietošanas tiesības, neizsniedzot administratīvās tiesības, bet, ja mums ir daudz replikācijas grupu, tad tiesību izsniegšana katrai grupai būs sarežģīta. Tomēr, ja vēlamies pārraudzīt domēna sistēmas apjoma replikāciju domēna kontrolleros, šī var būt vienīgā pieņemamā iespēja, jo domēna administratora tiesību piešķiršana uzraudzības pakalpojuma kontam nav laba ideja.
Uzraudzības veidne
Pamatojoties uz saņemtajiem datiem, es izveidoju veidni, kas:
- Reizi stundā veic automātisku replikācijas grupu atrašanu,
- Reizi 5 minūtēs pārbauda katras grupas neizpildīto apjomu,
- Ietver aktivizētāju, kas izdod brīdinājumu, ja jebkuras grupas neizpildītās summas lielums ir lielāks par 100 30 minūtēm. Trigeris ir aprakstīts kā prototips, kas tiek automātiski pievienots atklātajām grupām,
- Katrai replikācijas grupai izveido neizpildīto uzkrājumu lieluma diagrammas.
Varat lejupielādēt veidni Zabbix 2.2 .
Kopsavilkums
Pēc veidnes importēšanas Zabbix un konta ar nepieciešamajām tiesībām izveidošanas mums būs tikai jākopē skripti uz failu serveriem, kurus vēlamies pārraudzīt DFSR, jāpievieno divas rindas aģenta konfigurācijai un jārestartē Zabbix aģenta pakalpojums. , iestatot to darboties kā vēlamo kontu. DFSR uzraudzībai nav nepieciešami citi manuāli iestatījumi.
Avots: www.habr.com
