Utangulizi
Ikiwa na miundombinu mikubwa na iliyosambazwa kiasi ambayo hutumia DFS kama sehemu moja ya kufikia data na DFSR kwa uigaji wa data kati ya vituo vya data na seva za matawi, swali linajitokeza la kufuatilia hali ya urudufishaji huu.
Kwa bahati mbaya, mara tu baada ya kuanza kutumia DFSR, tulianza kutekeleza Zabbix kwa lengo la kuchukua nafasi ya zoo iliyopo ya zana mbalimbali na kuleta ufuatiliaji wa miundombinu kwa fomu ya taarifa zaidi, kamili na yenye mantiki. Tutazungumza juu ya kutumia Zabbix kufuatilia urudufishaji wa DFS.
Kwanza kabisa, tunahitaji kuamua ni data gani kuhusu urudiaji wa DFS inahitaji kupatikana ili kufuatilia hali yake. Kiashiria kinachofaa zaidi ni kurudi nyuma. Ina faili ambazo hazijasawazishwa na washiriki wengine wa kikundi cha urudufishaji. Unaweza kuona ukubwa wake kwa kutumia matumizi dfsrdiag, iliyosakinishwa na jukumu la DFSR. Katika hali ya urudufu wa kawaida, saizi ya kumbukumbu inapaswa kukaribia sifuri. Ipasavyo, idadi kubwa ya faili kwenye kumbukumbu zinaonyesha shida na urudufishaji.
Sasa kuhusu upande wa vitendo wa suala hilo.
Ili kufuatilia saizi ya kumbukumbu kupitia Wakala wa Zabbix, tutahitaji:
- Hati ambayo itachanganua matokeo dfsrdiag kutoa maadili ya mwisho ya saizi ya nyuma kwa Zabbix,
- Hati ambayo itaamua ni vikundi ngapi vya urudufishaji vilivyo kwenye seva, ni folda gani wanaiga na ni seva gani zingine zilizojumuishwa ndani yao (hatutaki kuingiza haya yote kwenye Zabbix kwa mkono kwa kila seva, sivyo?),
- Kuongeza hati hizi kama UserParameter kwa usanidi wa wakala wa Zabbix kwa simu zinazofuata kutoka kwa seva ya ufuatiliaji,
- Kuanzisha huduma ya wakala wa Zabbix kama mtumiaji ambaye ana haki ya kusoma kumbukumbu,
- Kiolezo cha Zabbix, ambapo ugunduzi wa vikundi, usindikaji wa data iliyopokelewa na kutoa arifa juu yao utasanidiwa.
Kichanganuzi hati
Ili kuandika kichanganuzi, nilichagua VBS kama lugha ya ulimwengu wote iliyopo katika matoleo yote ya Windows Server. Mantiki ya script ni rahisi: inapokea jina la kikundi cha replication, folda iliyorudiwa, na majina ya seva za kutuma na kupokea kupitia mstari wa amri. Vigezo hivi basi hupitishwa kwa dfsrdiag, na kulingana na matokeo yake hutoa:
Idadi ya faili - ikiwa ujumbe umepokelewa kuhusu uwepo wa faili kwenye kumbukumbu,
0 - ikiwa ujumbe umepokelewa kuhusu kukosekana kwa faili kwenye kumbukumbu ("Hakuna Nyuma"),
-1 - ikiwa ujumbe wa hitilafu umepokelewa dfsrdiag wakati wa kutekeleza ombi ("[ERROR]").
pata-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
Hati ya ugunduzi
Ili Zabbix atambue vikundi vyote vya replication vilivyopo kwenye seva na kujua vigezo vyote vinavyohitajika kwa ombi (jina la folda, majina ya seva za jirani), tunahitaji, kwanza, kupata habari hii, na pili, kuiwasilisha. katika umbizo linaloeleweka kwa Zabbix. Umbizo ambalo zana ya ugunduzi inaelewa inaonekana kama hii:
"data":[
{
"{#GROUP}":"Share1",
"{#FOLDER}":"Folder1",
"{#SENDING}":"Server1",
"{#RECEIVING}":"Server2"}
...
"{#GROUP}":"ShareN",
"{#FOLDER}":"FolderN",
"{#SENDING}":"Server1",
"{#RECEIVING}":"ServerN"}]}
Njia rahisi zaidi ya kupata taarifa tunayopenda ni kupitia WMI, kuiondoa kutoka sehemu zinazolingana za DfsrReplicationGroupConfig. Kama matokeo, hati ilizaliwa ambayo hutoa ombi kwa WMI na kutoa orodha ya vikundi, folda zao na seva katika muundo unaohitajika.
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
Nakubali, hati inaweza ising'ae kwa umaridadi wa msimbo na baadhi ya mambo ndani yake bila shaka yanaweza kurahisishwa, lakini hufanya kazi yake kuu - kutoa taarifa kuhusu vigezo vya vikundi vya urudufishaji katika umbizo linaloeleweka na Zabbix.
Kuongeza hati kwenye usanidi wa wakala wa Zabbix
Kila kitu hapa ni rahisi sana. Ongeza mistari ifuatayo hadi mwisho wa faili ya usanidi wa wakala:
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"
Kwa kweli, tunarekebisha njia kwa zile ambazo tuna maandishi. Ninaziweka kwenye folda moja ambapo wakala amewekwa.
Baada ya kufanya mabadiliko, anzisha upya huduma ya wakala wa Zabbix.
Kubadilisha mtumiaji ambaye huduma ya Wakala wa Zabbix inaendeshwa
Ili kupata taarifa kupitia dfsrdiag, shirika lazima liendeshwe chini ya akaunti ambayo ina haki za usimamizi kwa kutuma na kupokea washiriki wa kikundi cha urudufishaji. Huduma ya wakala wa Zabbix, inayoendeshwa kwa chaguomsingi chini ya akaunti ya mfumo, haitaweza kutekeleza ombi kama hilo. Niliunda akaunti tofauti kwenye kikoa, nikaipa haki za kiutawala kwenye seva zinazohitajika, na kusanidi huduma kuendesha chini yake kwenye seva hizi.
Unaweza kwenda kwa njia nyingine: kwa sababu dfsrdiag, kwa kweli, inafanya kazi kupitia WMI sawa, basi unaweza kutumia
Kiolezo cha ufuatiliaji
Kulingana na data niliyopokea, niliunda kiolezo ambacho:
- Huendesha ugunduzi wa kiotomatiki wa vikundi vya urudufishaji mara moja kwa saa,
- Huangalia saizi ya kumbukumbu kwa kila kikundi mara moja kila baada ya dakika 5,
- Ina kichochezi ambacho hutoa arifa wakati ukubwa wa kumbukumbu kwa kikundi chochote ni zaidi ya 100 kwa dakika 30. Kichochezi kinaelezewa kama mfano ambao huongezwa kiotomatiki kwa vikundi vilivyogunduliwa,
- Huunda grafu za saizi ya kumbukumbu kwa kila kikundi cha urudufishaji.
Unaweza kupakua kiolezo cha Zabbix 2.2
Jumla ya
Baada ya kuingiza kiolezo kwenye Zabbix na kuunda akaunti yenye haki zinazohitajika, tutahitaji tu kunakili hati kwenye seva za faili ambazo tunataka kufuatilia kwa DFSR, ongeza mistari miwili kwenye usanidi wa wakala juu yao na uanze upya huduma ya wakala wa Zabbix. , ikiiweka ili iendeshe kama akaunti inayotakiwa. Hakuna mipangilio mingine ya mwongozo inayohitajika kwa ufuatiliaji wa DFSR.
Chanzo: mapenzi.com