Lihtne DFS Replikatsiooni jÀlgimine Zabbixis

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 intBackLog

Avastusskript

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 kirjeldust, 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 siin.

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

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster