Bevezetés
Egy meglehetősen nagy és elosztott infrastruktúra esetében, amely az elosztott fájlrendszert használja egyetlen hozzáférési pontként az adatokhoz, és a DFSR-t használja az adatreplikációhoz az adatközpontok és a fiókkiszolgálók között, felmerül a kérdés, hogy ellenőrizni kell-e a replikáció állapotát.
Véletlenül a DFSR használatának megkezdése után szinte azonnal megkezdtük a Zabbix bevezetését azzal a céllal, hogy a meglévő állatkertet különféle eszközökkel lecseréljük, és az infrastruktúra-felügyeletet informatívabb, teljesebb és logikusabb formába hozzuk. Szó lesz a Zabbix használatáról az elosztott fájlrendszer-replikáció figyelésére.
Mindenekelőtt el kell döntenünk, hogy az elosztott fájlrendszer-replikációról milyen adatokat kell beszerezni az állapotának figyeléséhez. A legrelevánsabb mutató a lemaradás. Olyan fájlokat tartalmaz, amelyek nincsenek szinkronizálva a replikációs csoport többi tagjával. A méretét a segédprogram segítségével tekintheti meg dfsrdiag, DFSR szerepkörrel telepítve. Normál replikációs állapotban a hátralék méretének megközelítenie kell a nullát. Ennek megfelelően a hátralékban lévő fájlok nagy száma a replikációval kapcsolatos problémákat jelez.
Most pedig a kérdés gyakorlati oldaláról.
A hátralék nagyságának a Zabbix Agenten keresztül történő nyomon követéséhez szükségünk lesz:
- Szkript, amely elemzi a kimenetet dfsrdiag a lemaradás végső méretének megadása a Zabbix számára,
- Egy szkript, amely meghatározza, hogy hány replikációs csoport van a szerveren, milyen mappákat replikálnak, és milyen más szerverek szerepelnek bennük (nem akarjuk mindezt kézzel beírni a Zabbixba minden szerverhez, ugye?),
- Ezeket a szkripteket UserParameterként hozzáadva a Zabbix ügynök konfigurációjához a megfigyelő szerverről történő későbbi hívásokhoz,
- A Zabbix ügynök szolgáltatás elindítása olyan felhasználóként, aki jogosult a hátralék olvasására,
- A Zabbix sablonja, amelyben a csoportok észlelése, a kapott adatok feldolgozása és az azokra vonatkozó riasztások konfigurálása történik meg.
Szkriptelemző
Az elemző megírásához a VBS-t választottam, mint a leguniverzálisabb nyelvet, amely a Windows Server összes verziójában megtalálható. A szkript logikája egyszerű: a parancssoron keresztül megkapja a replikációs csoport nevét, a replikált mappát, valamint a küldő és fogadó szerverek nevét. Ezek a paraméterek ezután átadásra kerülnek dfsrdiag, és a kimenetétől függően a következőket állítja elő:
Fájlok száma - ha üzenet érkezik a fájlok lemaradásban való jelenlétéről,
0 – ha üzenet érkezik a lemaradásban lévő fájlok hiányáról („Nincs hátralék”),
-1 - ha hibaüzenet érkezik dfsrdiag kérés végrehajtásakor ("[HIBA]").
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
Felfedezési forgatókönyv
Ahhoz, hogy a Zabbix meg tudja határozni a szerveren található összes replikációs csoportot, és megtudja a kéréshez szükséges összes paramétert (mappanév, szomszédos szerverek nevei), először is meg kell szereznünk ezeket az információkat, másodsorban pedig be kell mutatnunk. Zabbix számára érthető formátumban. A felderítő eszköz által értelmezett formátum a következőképpen néz ki:
"data":[
{
"{#GROUP}":"Share1",
"{#FOLDER}":"Folder1",
"{#SENDING}":"Server1",
"{#RECEIVING}":"Server2"}
...
"{#GROUP}":"ShareN",
"{#FOLDER}":"FolderN",
"{#SENDING}":"Server1",
"{#RECEIVING}":"ServerN"}]}
A minket érdeklő információkhoz a legegyszerűbben a WMI-n keresztül juthatunk hozzá, a DfsrReplicationGroupConfig megfelelő szakaszaiból kihúzva. Ennek eredményeként megszületett egy szkript, amely egy kérést generál a WMI felé, és a kívánt formátumban kiadja a csoportok, azok mappáinak és szervereinek listájá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
Egyetértek, lehet, hogy a szkript nem tündököl a kód eleganciájával, és bizonyos dolgokat biztosan le lehetne egyszerűsíteni benne, de a fő funkcióját teljesíti - a replikációs csoportok paramétereiről ad tájékoztatást a Zabbix számára érthető formátumban.
Szkriptek hozzáadása a Zabbix ügynök konfigurációjához
Itt minden rendkívül egyszerű. Adja hozzá a következő sorokat az ügynök konfigurációs fájljának végéhez:
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"
Természetesen az elérési utakat azokhoz igazítjuk, ahol szkriptjeink vannak. Ugyanabba a mappába tettem őket, ahol az ügynök telepítve van.
A módosítások elvégzése után indítsa újra a Zabbix ügynökszolgáltatást.
A felhasználó módosítása, aki alatt a Zabbix Agent szolgáltatás fut
Annak érdekében, hogy információt kapjon keresztül dfsrdiag, a segédprogramot olyan fiók alatt kell futtatni, amely rendszergazdai jogokkal rendelkezik a replikációs csoport küldő és fogadó tagjaihoz egyaránt. A rendszerfiók alatt alapértelmezés szerint futó Zabbix ügynökszolgáltatás nem tud ilyen kérést végrehajtani. Létrehoztam egy külön fiókot a tartományban, adminisztrátori jogokat adtam neki a szükséges szervereken, és beállítottam a szolgáltatást, hogy ezeken a szervereken ez alatt fusson.
Lehet másképp is: mert dfsrdiag, valójában ugyanazon a WMI-n keresztül működik, akkor használhatod
Monitoring sablon
A kapott adatok alapján létrehoztam egy sablont, amely:
- A replikációs csoportok automatikus felderítését óránként egyszer futtatja,
- Minden csoportnál 5 percenként ellenőrzi a lemaradás méretét,
- Tartalmaz egy triggert, amely riasztást ad ki, ha bármely csoport lemaradási mérete meghaladja a 100-at 30 percig. A trigger prototípusként van leírva, amely automatikusan hozzáadódik az észlelt csoportokhoz,
- Az egyes replikációs csoportokhoz hátralékméret-grafikonokat készít.
Letöltheti a Zabbix 2.2 sablont
Teljes
Miután importáltuk a sablont a Zabbixba, és létrehoztunk egy fiókot a szükséges jogosultságokkal, már csak át kell másolnunk a szkripteket a DFSR-hez figyelni kívánt fájlszerverekre, két sort kell hozzáadnunk az ügynökkonfigurációhoz, és újra kell indítanunk a Zabbix ügynök szolgáltatást. , állítsa be, hogy a kívánt fiókként fusson. A DFSR felügyeletéhez nincs szükség más kézi beállításra.
Forrás: will.com