Ngawaskeun basajan tina réplikasi DFS di Zabbix

perkenalan

Kalayan infrastruktur anu cukup ageung sareng disebarkeun anu ngagunakeun DFS salaku titik aksés tunggal kana data sareng DFSR pikeun réplikasi data antara pusat data sareng server cabang, timbul patarosan ngeunaan ngawaskeun status réplikasi ieu.
Kabeneran, ampir langsung saatos urang mimitian nganggo DFSR, urang mimiti nerapkeun Zabbix kalayan tujuan ngagentos kebon binatang anu aya tina rupa-rupa alat sareng nyangking ngawaskeun infrastruktur kana bentuk anu langkung informatif, lengkep sareng logis. Urang bakal ngobrol ngeunaan ngagunakeun Zabbix pikeun ngawas réplikasi DFS.

Anu mimiti, urang kedah mutuskeun naon data ngeunaan réplikasi DFS kedah didapet pikeun ngawas statusna. Indikator anu paling relevan nyaéta backlog. Éta ngandung file anu teu acan disingkronkeun sareng anggota sanés tina grup réplikasi. Anjeun tiasa ningali ukuranana nganggo utilitas dfsrdiag, dipasang sareng peran DFSR. Dina kaayaan réplikasi normal, ukuran backlog kedah ngadeukeutan nol. Sasuai, sajumlah ageung file dina backlog nunjukkeun masalah sareng réplikasi.

Ayeuna ngeunaan sisi praktis tina masalah.

Pikeun ngawas ukuran backlog ngaliwatan Agen Zabbix, urang peryogi:

  • Script nu bakal parse kaluaran dfsrdiag nyadiakeun nilai ukuran backlog ahir ka Zabbix,
  • Skrip anu bakal nangtukeun sabaraha grup réplikasi anu aya dina server, polder naon anu ditiru sareng naon server anu sanésna kalebet (kami henteu hoyong lebetkeun sadayana ieu kana Zabbix ku panangan pikeun tiap server, leres?),
  • Nambahkeun skrip ieu salaku UserParameter kana konfigurasi agén Zabbix pikeun nelepon salajengna ti server monitoring,
  • Ngamimitian jasa agén Zabbix salaku pangguna anu ngagaduhan hak pikeun maca backlog,
  • Témplat pikeun Zabbix, dimana deteksi grup, ngolah data anu ditampi sareng ngaluarkeun panggeuing aranjeunna bakal dikonpigurasi.

Parser naskah

Pikeun nyerat parser, kuring milih VBS salaku basa anu paling universal anu aya dina sadaya vérsi Windows Server. Logika naskah téh basajan: eta narima ngaran grup réplikasi, folder replicated, sarta ngaran server ngirim jeung narima via garis paréntah. Parameter ieu lajeng dibikeun ka dfsrdiag, sareng gumantung kana kaluaranna ngahasilkeun:
Jumlah file - upami pesen katampi ngeunaan ayana file dina backlog,
0 - upami aya pesen ngeunaan henteuna file dina backlog ("No Backlog"),
-1 - lamun pesen kasalahan narima dfsrdiag nalika ngalaksanakeun pamundut ("[ERROR]").

meunang-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

naskah Papanggihan

Supados Zabbix nangtukeun sadaya grup réplikasi anu aya dina server sareng milari sadaya parameter anu diperyogikeun pikeun pamundut (ngaran polder, nami server tatangga), urang kedah, mimiti, kéngingkeun inpormasi ieu, sareng kadua, nampilkeunana. dina format kaharti ku Zabbix. Format anu kahartos ku alat panemuan sapertos kieu:

        "data":[
                {
                        "{#GROUP}":"Share1",
                        "{#FOLDER}":"Folder1",
                        "{#SENDING}":"Server1",
                        "{#RECEIVING}":"Server2"}

...

                        "{#GROUP}":"ShareN",
                        "{#FOLDER}":"FolderN",
                        "{#SENDING}":"Server1",
                        "{#RECEIVING}":"ServerN"}]}

Cara panggampangna pikeun kéngingkeun inpormasi anu kami pikahoyong nyaéta ngalangkungan WMI, narik éta tina bagian anu aya dina DfsrReplicationGroupConfig. Hasilna, dilahirkeun skrip anu ngahasilkeun pamundut ka WMI sareng ngaluarkeun daptar grup, polder sareng serverna dina format anu diperyogikeun.

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

Kuring satuju, naskah bisa jadi teu caang kalawan elegance kode jeung sababaraha hal di dinya pasti bisa disederhanakeun, tapi ngalakukeun fungsi utamina - nyadiakeun informasi ngeunaan parameter grup réplikasi dina format kaharti ku Zabbix.

Nambahkeun skrip kana konfigurasi agén Zabbix

Sagalana di dieu pisan basajan. Tambahkeun garis di handap ieu ka tungtung file konfigurasi agén:

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"

Tangtosna, urang nyaluyukeun jalur ka tempat dimana urang gaduh naskah. Kuring nempatkeun aranjeunna dina folder anu sami dimana agén dipasang.

Sanggeus nyieun parobahan, balikan deui jasa agén Zabbix.

Ngarobih pangguna dimana jasa Zabbix Agent dijalankeun

Dina raraga nampi informasi ngaliwatan dfsrdiag, Utiliti kedah dijalankeun dina akun anu gaduh hak administratif pikeun ngirim sareng nampi anggota grup réplikasi. Ladenan agén Zabbix, dijalankeun sacara standar dina akun sistem, moal tiasa ngalaksanakeun pamundut sapertos kitu. Kuring nyieun hiji akun misah dina domain nu, masihan eta hak administratif dina server diperlukeun, sarta ngonpigurasi layanan pikeun ngajalankeun handapeun eta dina server ieu.

Anjeun tiasa balik cara séjén: sabab dfsrdiag, kanyataanna, jalan ngaliwatan WMI sarua, mangka anjeun bisa make katerangan, kumaha carana masihan hiji akun domain hak ngagunakeun eta tanpa ngaluarkeun hak administratif, tapi lamun urang boga loba grup réplikasi, lajeng ngaluarkeun hak pikeun tiap grup bakal hésé. Nanging, upami urang hoyong ngawas réplikasi Volume System Domain dina pangendali domain, ieu tiasa janten hiji-hijina pilihan anu tiasa ditampi, sabab masihan hak administrator domain ka akun jasa ngawaskeun sanés ide anu saé.

template pangimeutan

Dumasar data anu kuring tampi, kuring nyiptakeun témplat anu:

  • Ngajalankeun panemuan otomatis grup réplikasi sakali per jam,
  • Pariksa ukuran backlog pikeun tiap grup sakali unggal 5 menit,
  • Ngandung pemicu anu ngaluarkeun waspada nalika ukuran backlog pikeun grup naon waé langkung ti 100 salami 30 menit. Pemicu digambarkeun salaku prototipe anu otomatis ditambahkeun kana grup nu dideteksi,
  • Ngawangun grafik ukuran backlog pikeun tiap grup réplikasi.

Anjeun tiasa ngundeur template pikeun Zabbix 2.2 di dieu.

hasil

Saatos ngimpor témplat kana Zabbix sareng nyiptakeun akun kalayan hak anu diperyogikeun, urang ngan ukur kedah nyalin skrip ka server file anu urang hoyong monitor pikeun DFSR, tambahkeun dua garis kana konfigurasi agén dina éta sareng balikan deui jasa agén Zabbix. , nyetel eta pikeun ngajalankeun sakumaha akun nu dipikahoyong. Taya setélan manual séjén diperlukeun pikeun monitoring DFSR.

sumber: www.habr.com

Tambahkeun komentar