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