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