Yano nga pag-monitor sa DFS Replication sa Zabbix

Pasiuna

Uban sa igo nga dako ug gipang-apod-apod nga imprastraktura nga naggamit sa DFS isip usa ka data access point ug DFSR alang sa data replication tali sa data center ug branch server, ang pangutana mitungha sa pagmonitor sa status niini nga replikasyon.
Sa tinuud, hapit dayon pagkahuman sa pagsugod sa paggamit sa DFSR, gisugdan namon ang pagpatuman sa Zabbix aron mapulihan ang naglungtad nga zoo sa lainlaing mga himan ug dad-on ang pag-monitor sa imprastraktura sa usa ka labi ka kasayuran, kompleto ug lohikal nga porma. Maghisgot kami bahin sa paggamit sa Zabbix aron ma-monitor ang pagkopya sa DFS.

Una sa tanan, kinahanglan naton nga magdesisyon kung unsang datos bahin sa replikasyon sa DFS ang kinahanglan naton madawat aron ma-monitor ang kahimtang niini. Ang labing may kalabutan nga timailhan mao ang backlog. Naglangkob kini og mga file nga wala ma-synchronize sa ubang mga miyembro sa grupo sa pagkopya. Makita nimo ang gidak-on niini gamit ang utility dfsrdiaginstalar uban sa DFSR papel. Sa normal nga kahimtang sa pagkopya, ang gidak-on sa backlog kinahanglan nga zero. Tungod niini, daghang mga file sa backlog nagpaila sa mga problema sa pagkopya.

Karon bahin sa praktikal nga bahin sa isyu.

Aron mamonitor ang gidak-on sa backlog pinaagi sa Zabbix Agent, kinahanglan namon:

  • Script nga mag-parse sa output dfsrdiag aron mahatagan ang katapusang mga kantidad sa gidak-on sa backlog sa Zabbix,
  • Usa ka script nga magtino kung pila ka mga grupo sa pagkopya ang naa sa server, unsang mga folder ang ilang gisundog ug kung unsa ang ubang mga server nga ilang gilakip (dili namon gusto nga i-drive kining tanan sa Zabbix pinaagi sa kamot alang sa matag server, di ba?),
  • Pagsulod niini nga mga script isip UserParameter ngadto sa Zabbix agent configuration alang sa sunod nga tawag gikan sa monitoring server,
  • Pagsugod sa serbisyo sa ahente sa Zabbix ingon usa ka tiggamit nga adunay katungod sa pagbasa sa backlog,
  • Template alang sa Zabbix, diin ang pagdiskobre sa grupo ma-configure, pagproseso sa nadawat nga datos ug pag-isyu sa mga alerto niini.

Script Parser

Aron isulat ang parser, gipili nako ang VBS isip labing unibersal nga pinulongan nga anaa sa tanang bersyon sa Windows Server. Ang lohika sa script yano ra: nakadawat kini nga ngalan sa grupo sa pagkopya, ang gikopya nga folder, ug ang mga ngalan sa nagpadala ug nakadawat nga mga server pinaagi sa command line. Kini nga mga parameter ipasa ngadto sa dfsrdiag, ug depende sa output niini:
Gidaghanon sa mga file - kung ang usa ka mensahe bahin sa presensya sa mga file sa backlog nadawat,
0 - kung ang usa ka mensahe nadawat bahin sa pagkawala sa mga file sa backlog ("Wala'y Backlog"),
-1 - kung adunay nadawat nga mensahe sa sayup dfsrdiag kung gipatuman ang hangyo ("[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

Discovery script

Aron mahibal-an ni Zabbix ang tanan nga mga grupo sa pagkopya nga naa sa server mismo ug mahibal-an ang tanan nga mga parameter nga gikinahanglan alang sa hangyo (pangalan sa folder, mga ngalan sa silingan nga mga server), kinahanglan naton makuha kini nga kasayuran, una, ug ikaduha, ipresentar kini sa usa ka pormat nga nasabtan ni Zabbix. Ang pormat nga nasabtan sa himan sa pagdiskobre sama niini:

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

...

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

Ang pinakasayon ​​nga paagi sa pagkuha sa impormasyon nga atong gusto mao ang pinaagi sa WMI, pagbira niini gikan sa katugbang nga mga seksyon sa DfsrReplicationGroupConfig. Ingon usa ka sangputanan, usa ka script ang natawo nga nagmugna usa ka hangyo sa WMI ug nagpagawas usa ka lista sa mga grupo, ilang mga folder ug mga server sa gikinahanglan nga format.

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

Mouyon ako, ang script mahimong dili modan-ag uban ang kaanindot sa code ug ang usa ka butang sa sulod niini siguradong mapasimple, apan ang panguna nga gimbuhaton niini - aron mahatagan ang kasayuran bahin sa mga parameter sa mga grupo sa pagkopya sa usa ka pormat nga masabtan sa Zabbix - kini malampuson nga nahimo.

Pagdugang og mga script sa configuration sa ahente sa Zabbix

Ang tanan yano ra kaayo dinhi. Idugang ang mosunod nga mga linya sa katapusan sa file sa configuration sa ahente:

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"

Siyempre, gitul-id namo ang mga agianan paingon sa kung asa kami adunay mga script. Gibutang nako sila sa parehas nga folder diin gi-install ang ahente.

Pagkahuman sa paghimo og mga pagbag-o, i-restart ang serbisyo sa ahente sa Zabbix.

Ang pagbag-o sa tiggamit diin ang serbisyo sa Zabbix Agent nagdagan

Aron makadawat og impormasyon pinaagi sa dfsrdiag, ang utility kinahanglan ipadagan alang sa usa ka account nga adunay mga katungod sa pagdumala sa pagpadala ug pagdawat sa mga miyembro sa grupo sa pagkopya. Ang serbisyo sa ahente sa Zabbix, nga nagdagan nga default sa ilawom sa account sa sistema, dili makatuman sa ingon nga hangyo. Naghimo ako usa ka lahi nga account sa domain, gihatagan kini nga mga katungod sa administratibo sa gikinahanglan nga mga server, ug gi-configure kini nga mga server aron masugdan ang serbisyo gikan sa ilawom niini.

Mahimo ka usab nga moadto sa laing paagi: sukad dfsrdiag, sa tinuud, nagtrabaho pinaagi sa parehas nga WMI, mahimo nimong gamiton paghulagway, unsaon paghatag sa usa ka domain account sa katungod sa paggamit niini nga walay pag-isyu sa mga katungod sa administratibo, apan kung kita adunay daghang mga grupo sa pagkopya, nan lisud ang pag-isyu sa mga katungod sa matag grupo. Bisan pa, kung gusto namon nga bantayan ang pagkopya sa Volume System sa Domain sa mga tigkontrol sa domain, mahimo’g kini ra ang madawat nga kapilian, tungod kay ang paghatag mga katungod sa tagdumala sa domain sa account sa serbisyo sa pagmonitor dili ang labing kaayo nga ideya.

Template sa pagmonitor

Base sa datos nga akong nadawat, naghimo ko og template nga:

  • Nagpadagan sa awtomatikong pagdiskobre sa mga grupo sa pagkopya kausa matag oras,
  • Kausa sa matag 5 ka minuto susihon ang gidak-on sa backlog alang sa matag grupo,
  • Naglangkob sa usa ka gatilyo nga nag-isyu sa usa ka alerto kung ang gidak-on sa backlog alang sa bisan unsang grupo labaw pa sa 100 sa 30 minuto. Ang gatilyo gihulagway nga usa ka prototype nga awtomatikong idugang sa mga nadiskobrehan nga mga grupo,
  • Nagplano sa gidak-on sa backlog alang sa matag grupo sa replikasyon.

Mahimo nimong i-download ang template alang sa Zabbix 2.2 dinhi.

Ang resulta

Human ma-import ang template sa Zabbix ug maghimo usa ka account nga adunay kinahanglan nga mga katungod, kinahanglan ra namon nga kopyahon ang mga script sa mga file server nga gusto namon nga bantayan alang sa DFSR, pagdugang duha ka linya sa pag-configure sa ahente sa kanila ug i-restart ang serbisyo sa ahente sa Zabbix, pag-configure niini aron modagan alang sa gusto nga account. Walay laing manwal nga mga setting ang gikinahanglan aron mamonitor ang DFSR.

Source: www.habr.com

Idugang sa usa ka comment