Sissejuhatus
Kui infrastruktuur on piisavalt suur ja hajutatud, kasutades DFS-i kui ainus andmete pÀÀsupunkt ja DFSR-i andmete replikatsiooniks andmekeskuse ja filiaaliserverite vahel, kerkib esile kĂŒsimus selle replikatsiooni oleku jĂ€lgimisest.
Nii juhtus, et peaaegu kohe pÀrast DFSR-iga alustamist alustasime Zabbixi rakendamist, et asendada olemasolev erinevate tööriistade zootsirkus ja tuua infrastruktuuri jÀlgimine informatiivsemaks, tÀielikumaks ja loogilisemaks. RÀÀgime Zabbixi kasutamisest DFS-replikatsiooni jÀlgimiseks.
Esimese asjana peame selgitama, milliseid DFS-replikatsiooni andmeid on vaja saada selle oleku jĂ€lgimiseks. KĂ”ige olulisem nĂ€itaja on backlog. Sellesse kuuluvad failid, mis ei ole sĂŒnkroniseeritud teiste replikatsiooni grupi liikmete kanssa. Selle suurust saab vaadata utiliidiga dfsrdiag, mis paigaldatakse koos DFSR-i rolliga. Terve replikatsiooni oleku korral peaks backlog'i suurus pĂŒĂŒdlema nulli poole. Seega mĂ€rkimisvÀÀrsed backlog'i failide arvud viitavad replikatsiooniprobleemidele.
RÀÀgime nĂŒĂŒd kĂŒsimuse praktilisest kĂŒljest.
Selleks, et jÀlgida backlog'i suurust Zabbixi kaudu, vajame:
- Skripti, mis töötleb vÀljundit dfsrdiag tagamaks Zabbixile backlog'i suuruse lÔppvÀÀrtuste provideerimise,
- Skripti, mis mÀÀrab, kui palju replikatsioonigrupe on serveris, milliseid kaustu nad replitseerivad ja millised veel serverid neisse kuuluvad (me ju ei taha need andmed Zabbixisse kÀsitsi iga serveri jaoks sisestada, eks?);
- Nende skriptide lisamine Zabbixi agendi konfiguratsiooni UserParameterina edasiseks kutsumiseks jÀlgimisse serverist,
- Zabbixi agendi teenuse kÀivitamine kasutajana, kellel on Ôigused backlog'i lugemiseks,
- Zabbixi mall, milles on seadistatud grupi avastamine, saadud andmete töötlemine ja nende pÔhjal hÀirete vÀljastamine.
Skripti-parsija
Parsija kirjutamiseks valisin VBS-i, kuna see on kÔige universaalsem keel, mis on olemas kÔigis Windows Serveri versioonides. Skripti loogika on lihtne: see vÔtab kÀsurealt replikatsioonigrupi nime, replitseeritud kausta nime ning saatmise ja vastuvÔtmise serverite nimed. SeejÀrel edastatakse need parameetrid dfsrdiag, ja lÔpptulemusena antakse vÀlja:
Failide arv â kui saadi teade backlog'is failide olemasolust,
0 â kui saadakse sĂ”num, et backlog on tĂŒhi («No Backlog»),
-1 â kui saadakse veateade dfsrdiag pĂ€ringu tĂ€itmisel ("[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 intBackLogAvastusskript
Et Zabbix suudaks ise tuvastada kĂ”ik replikatsiooni gruppide, mis on serveris olemas, ja selgitada vĂ€lja kĂ”ik kĂŒll vajalikud pĂ€ringu parameetrid (kaustade nimed, naaberserverite nimed), peame need andmed kĂ”igepealt hankima ja seejĂ€rel esitama Zabbixi jaoks arusaadavas formaadis. Tuvastustööriista mĂ”istetav formaat on jĂ€rgmine:
"data":[
{
"{#GROUP}":"Share1",
"{#FOLDER}":"Folder1",
"{#SENDING}":"Server1",
"{#RECEIVING}":"Server2"}
...
"{#GROUP}":"ShareN",
"{#FOLDER}":"FolderN",
"{#SENDING}":"Server1",
"{#RECEIVING}":"ServerN"}]}KĂŒll vajalikku teavet on kĂ”ige lihtsam saada WMI kaudu, vĂ€lja tĂ”mmates selle vastavatest DfsrReplicationGroupConfig osadest. LĂ”pptulemusena sĂŒndis skript, mis loob pĂ€ringu WMI-le ja vĂ€ljastab loendi rĂŒhmadest, nende kaustadest ja serveritest vajalikus formaadis.
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
NĂ”ustun, skript ei pruugi olla koodilt kĂ”ige elegantsem ja seal on kindlasti kohti, mida saaks lihtsustada, kuid peamine funktsioon â edastada teavet replikatsioonigruppide parameetrite kohta Zabbixile arusaadavas formaadis â töötab see edukalt.
Skriptide lisamine Zabbixi agendi konfiguratsiooni
Siin on kÔik vÀga lihtne. Lisame agendi konfiguratsiooni faili lÔppu read:
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"
Loomulikult muudame tee nendele, kuhu meie skriptid on salvestatud. Mina panin need samasse kausta, kuhu agent on installitud.
PÀrast muudatuste tegemist taaskÀivitame Zabbixi agendi teenuse.
Zabbixi agendi teenuse kÀitamise kasutaja muutmine
Kuna teavet saamiseks tuleb dfsrdiag, utiliit tuleb kĂ€ivitada haldusĂ”igustega konto all, nii saatmise kui ka vastuvĂ”tmise replikatsiooni grupis. Vaikimisi kĂ€ivitatud Zabbixi agent ei saa sellist pĂ€ringut tĂ€ita sĂŒsteemi kontole. Loodud eraldi konto domeenis, andsin sellele haldusĂ”igused vajalikutele serveritele ja seadistasin nendel serveritel teenuse kĂ€ivitamise selle alt.
On vÔimalik minna ka teist teed: kuna dfsrdiag, pÔhimÔtteliselt töötab see sama WMI kaudu, siis saab kasutada , kuidas anda domeeni kasutajakontole Ôigused selle kasutamiseks ilma haldusÔiguste andmiseta, kuid kui meil on palju replikatsiooni gruppe, siis on iga grupi Ôiguste andmine keeruline. Kuid juhul, kui me soovime jÀlgida Domain System Volume'i replikatsiooni domeeni juhtimisseadmetes, vÔib see osutuda ainukeseks sobivaks valikuks, kuna domeeni administraatori Ôiguste andmine jÀlgimist teenusele ei ole kÔige parem idee.
Monitooringu mall
Saadud andmete pÔhjal lÔin malli, mis:
- KĂ€ivitab automaatse replikatsiooni gruppide avastamise iga tunni tagant,
- Kontrollib iga grupi backlog'i suurust iga 5 minuti jÀrel,
- Sisaldab kĂ€ivitajat, mis annab teate, kui mĂ”ne grupi backlog'i suurus ĂŒletab 100 30 minuti jooksul. KĂ€ivitaja on kirjeldatud prototĂŒĂŒbi kujul, mis lisatakse automaatselt avastatud gruppidele,
- Konstruktsioon graafikud backlog'i suurusest iga replikatsiooni grupi jaoks.
Zabbix 2.2 malli allalaadimine on vÔimalik .
KokkuvÔte
PÀrast malli importimist Zabbixisse ja vajalike Ôigustega konto loomist piisab, kui kopeerida skriptid failiserveritesse, mida soovime jÀlgida DFSR osas, lisada neisse agentide konfiguratsioonis kaks rida ning taaskÀivitada Zabbixi agendi teenus, seades selle kÀivitamise vajaliku konto alt. Mingeid muid kÀsitsi seadistusi DFSR jÀlgimiseks ei ole vaja.
Allikas: habr.com
