Paraqitje
Me një infrastrukturë mjaft të madhe dhe të shpërndarë që përdor DFS si një pikë të vetme aksesi në të dhëna dhe DFSR për riprodhimin e të dhënave midis qendrave të të dhënave dhe serverëve të degëve, lind pyetja e monitorimit të statusit të këtij replikimi.
Rastësisht, pothuajse menjëherë pasi filluam përdorimin e DFSR-së, filluam zbatimin e Zabbix me synimin për të zëvendësuar kopshtin zoologjik ekzistues të mjeteve të ndryshme dhe për ta sjellë monitorimin e infrastrukturës në një formë më informuese, të plotë dhe logjike. Ne do të flasim për përdorimin e Zabbix për të monitoruar përsëritjen e DFS.
Para së gjithash, ne duhet të vendosim se cilat të dhëna në lidhje me riprodhimin e DFS duhet të merren për të monitoruar statusin e tij. Treguesi më i rëndësishëm është prapambetja. Ai përmban skedarë që nuk janë sinkronizuar me anëtarët e tjerë të grupit të riprodhimit. Ju mund të shikoni madhësinë e tij duke përdorur programin dfsrdiag, i instaluar me rolin DFSR. Në një gjendje normale të përsëritjes, madhësia e prapambetjes duhet t'i afrohet zeros. Rrjedhimisht, një numër i madh skedarësh në dosjen e mbetur tregojnë probleme me riprodhimin.
Tani për anën praktike të çështjes.
Për të monitoruar madhësinë e prapambetjes përmes Agjentit Zabbix, do të na duhet:
- Skript që do të analizojë daljen dfsrdiag për të ofruar vlerat përfundimtare të madhësisë së mbeturinave për Zabbix,
- Një skript që do të përcaktojë sa grupe riprodhimi ka në server, çfarë dosjesh replikojnë dhe cilët serverë të tjerë përfshihen në to (nuk duam t'i fusim të gjitha këto në Zabbix me dorë për secilin server, apo jo?),
- Shtimi i këtyre skripteve si UserParameter në konfigurimin e agjentit Zabbix për thirrje të mëvonshme nga serveri i monitorimit,
- Nisja e shërbimit të agjentit Zabbix si një përdorues që ka të drejtë të lexojë dosjet e prapambetura,
- Një shabllon për Zabbix, në të cilin do të konfigurohet zbulimi i grupeve, përpunimi i të dhënave të marra dhe lëshimi i sinjalizimeve mbi to.
Analizuesi i skriptit
Për të shkruar analizuesin, zgjodha VBS si gjuhën më universale të pranishme në të gjitha versionet e Windows Server. Logjika e skriptit është e thjeshtë: ai merr emrin e grupit të replikimit, dosjen e përsëritur dhe emrat e serverëve dërgues dhe marrës nëpërmjet linjës së komandës. Këta parametra kalohen më pas te dfsrdiag, dhe në varësi të prodhimit të tij prodhon:
Numri i skedarëve - nëse merret një mesazh në lidhje me praninë e skedarëve në dosjen e mbetur,
0 - nëse merret një mesazh në lidhje me mungesën e skedarëve në dosjen e mbetur ("Nuk ka prapambetje"),
-1 - nëse merret një mesazh gabimi dfsrdiag kur ekzekutoni një kërkesë ("[GABIM]").
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
Skript zbulimi
Në mënyrë që Zabbix të përcaktojë të gjitha grupet e riprodhimit të pranishëm në server dhe të zbulojë të gjithë parametrat e kërkuar për kërkesën (emri i dosjes, emrat e serverëve fqinjë), ne duhet, së pari, të marrim këtë informacion dhe së dyti, ta paraqesim atë. në një format të kuptueshëm për Zabbix. Formati që kupton mjeti i zbulimit duket si ky:
"data":[
{
"{#GROUP}":"Share1",
"{#FOLDER}":"Folder1",
"{#SENDING}":"Server1",
"{#RECEIVING}":"Server2"}
...
"{#GROUP}":"ShareN",
"{#FOLDER}":"FolderN",
"{#SENDING}":"Server1",
"{#RECEIVING}":"ServerN"}]}
Mënyra më e lehtë për të marrë informacionin që na intereson është përmes WMI, duke e nxjerrë atë nga seksionet përkatëse të DfsrReplicationGroupConfig. Si rezultat, lindi një skript që gjeneron një kërkesë për WMI dhe nxjerr një listë të grupeve, dosjeve dhe serverëve të tyre në formatin e kërkuar.
DFSRDdiscovery.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
Jam dakord, skripti mund të mos shkëlqejë me elegancën e kodit dhe disa gjëra në të sigurisht që mund të thjeshtohen, por ai kryen funksionin e tij kryesor - siguron informacion në lidhje me parametrat e grupeve të riprodhimit në një format të kuptueshëm nga Zabbix.
Shtimi i skripteve në konfigurimin e agjentit Zabbix
Gjithçka këtu është jashtëzakonisht e thjeshtë. Shtoni rreshtat e mëposhtëm në fund të skedarit të konfigurimit të agjentit:
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"
Sigurisht, ne i rregullojmë shtigjet me ato ku kemi skripta. I vendosa në të njëjtën dosje ku është instaluar agjenti.
Pasi të bëni ndryshime, rinisni shërbimin e agjentit Zabbix.
Ndryshimi i përdoruesit nën të cilin funksionon shërbimi Zabbix Agent
Për të marrë informacion përmes dfsrdiag, programi duhet të ekzekutohet nën një llogari që ka të drejta administrative për dërgimin dhe marrjen e anëtarëve të grupit të replikimit. Shërbimi i agjentit Zabbix, i cili funksionon si parazgjedhje nën llogarinë e sistemit, nuk do të jetë në gjendje të ekzekutojë një kërkesë të tillë. Krijova një llogari të veçantë në domen, i dhashë të drejta administrative në serverët e nevojshëm dhe konfigurova shërbimin që të funksionojë nën të në këta serverë.
Mund të shkoni në një mënyrë tjetër: sepse dfsrdiag, në fakt, funksionon përmes të njëjtës WMI, atëherë mund ta përdorni
Modeli i monitorimit
Bazuar në të dhënat që kam marrë, kam krijuar një shabllon që:
- Kryen zbulimin automatik të grupeve të përsëritjes një herë në orë,
- Kontrollon madhësinë e lëndës së mbetur për secilin grup një herë në 5 minuta,
- Përmban një shkas që lëshon një sinjalizim kur madhësia e mbeturinave për çdo grup është më shumë se 100 për 30 minuta. Shkaku përshkruhet si një prototip që shtohet automatikisht në grupet e zbuluara,
- Ndërton grafikët e madhësisë së mbeturinave për çdo grup replikimi.
Mund ta shkarkoni shabllonin për Zabbix 2.2
Total
Pas importimit të shabllonit në Zabbix dhe krijimit të një llogarie me të drejtat e nevojshme, do të na duhet vetëm të kopjojmë skriptet në serverët e skedarëve që duam të monitorojmë për DFSR, të shtojmë dy rreshta në konfigurimin e agjentit në to dhe të rifillojmë shërbimin e agjentit Zabbix , duke e vendosur që të ekzekutohet si llogaria e dëshiruar. Nuk kërkohen cilësime të tjera manuale për monitorimin e DFSR.
Burimi: www.habr.com