VienkārŔa DFS replikācijas uzraudzība programmā Zabbix

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 intBackLog

AtklāŔ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 apraksts, 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 Å”eit.

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

Pievieno komentāru