introduction
Cum infrastructura satis ampla et distributa, quae DFS in uno puncto accessus ad notitias et DFSR utitur, ad replicationem inter data centra et ministrantium replicatio oritur, quaestio oritur in vigilantia status huius replicationis.
Coincidenter, fere statim postquam DFSR uti coepimus, Zabbix propositum exsequendum incepimus cum zoo variorum instrumentorum exsistentium reponendarum et ad maiorem informativum, integram et logicam formam vigilantiam infrastructuram afferemus. Loquemur de usura Zabbix ad monitorem DFS replicationem.
Imprimis, statuendum est quaenam notitia de replicatione DFS obtinenda sit, ut eius status monitor. Maxime pertinet indicator est backlog. Documenta continet quae cum aliis membris replicationis coetus non congruerunt. Magnitudinem eius inspicere potes utens ad utilitatem dfsrdiagcum DFSR munere constitutus est. In normali replicatione statui, backlog amplitudo nulla accedere debet. Itaque multi fasciculi in backlog problemata cum replicatione indicant.
Nunc de practica parte quaestionis.
Ut ad Monitor backlog magnitudinem per Zabbix Agentem, opus erit:
- Script quod parse output dfsrdiag ut finales backlog valores Zabbix praebeant;
- Scriptum quod decernet quot replicationes coetus sunt in calculonis servi, quid folder quod replicant et quid alii servientes in eis comprehenduntur (nolumus haec omnia inire in Zabbix per manus pro quolibet servo, ius?).
- Haec scripta ut UserParameter addens ad configurationem agentis Zabbix pro subsequenti vocatione a servo vigilantia,
- Incipiens Zabbix agentis officium pro usuario qui iura habet legere backlogum
- Exemplum Zabbix, in quo deprehensio circulorum, processus notitiarum receptarum et in summis erectis illis configurabitur.
Scriptor parser
Scribere parser, Linguam maxime universalem delegi VBS praesentem in omnibus versionibus Fenestra Servo. Logica scriptionis simplex est: nomen accipit replicationis coetus, folder replicatur et nomina mittendi et recipiendi servientibus per lineam praecepti. Hi parametri inde transmissi sunt dfsrdiaget secundum suum output producit;
Numerus imaginum - si nuntium recipitur de praesentia files in backlog,
0 - si nuntius de absentia imaginum in backlog recipitur ("Non Backlog"),
-1 - si errorem nuntium recipitur dfsrdiag cum exsequens petitionem ("[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
Inventio script
Ut Zabbix omnes replicationes circulos praesentes ministranti determinare atque invenire parametri omnes requisiti ad petitionem (nomine folder, nomina servientium vicinorum), necesse est ut primum hanc informationem obtineamus, secundo eam exhibeamus. in forma comprehensibilis Zabbix. Forma, quam instrumentum inventionis intelligit, similis est huic:
"data":[
{
"{#GROUP}":"Share1",
"{#FOLDER}":"Folder1",
"{#SENDING}":"Server1",
"{#RECEIVING}":"Server2"}
...
"{#GROUP}":"ShareN",
"{#FOLDER}":"FolderN",
"{#SENDING}":"Server1",
"{#RECEIVING}":"ServerN"}]}
Facillima via est ad informationem quam ad nos quaero, per WMI, trahens eam e sectionibus respondentibus DfsrReplicationGroupConfig. Quam ob rem nata est scriptura quae petitionem WMI gignit et indicem coetuum emittit, eorum folder et servitores in forma inquisita.
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
Assentio, scriptura non splendere cum elegantia codicis et quaedam in eo faciliora certe possunt, sed munus suum principale praestat - edocendi de parametris replicationis coetibus in forma comprehensibilis a Zabbix.
Addens scripta ad configuratione agentis Zabbix
Omnia hic simplicissima sunt. Adde sequentes lineas ad finem configurationis agentis fasciculi:
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"
Utique ad ea, ubi scripta habemus, semitas aptamus. Eos posui in eodem folder ubi procurator inauguratus est.
Post mutationes faciendi, Zabbix ministerium agentis sileo.
Mutato usuario sub quo Zabbix Agens officium decurrit
Ut informationes per dfsrdiagutilitas sub ratiocinatione currere debet, quae iura administrativa habet ad sodales coetus replicationis et mittendis et recipiendis. Ministerium agentis Zabbix, per defaltam sub ratione rationis currens, petitionem talem exsequi non poterit. Ego rationem separatam in provincia creavi, ei iura administrativa ministrantibus necessariis dedi, et servitutem his servientibus sub eo decurrendi figuravi.
Alio modo ire potes: quia dfsrdiagimmo per eundem WMI operatur, tum uti potes
Cras template
Fundatur in notitia accepi, exemplar illud creavi:
- Inventio latae replicationis coetus semel per horam currit;
- Checks backlog size for each group once every 5 minutes,
- Felis continet, quod acris exit cum magnitudine backlog cuiusvis coetus plus quam 100 pro 30 minutis. Felis describitur prototypum quod automatice additur ad coetus detectos;
- Aedificat backlog size graphs for each replication group.
Potes download exemplum Zabbix 2.2
exitum
Formulae in Zabbix invectas et rationem cum iuribus necessariis creandis, tantum opus est scripta exscribere tabellariorum servientium quae monitorem DFSR velimus, duas lineas ad configurationem agentis in illis adde et servitium agentis Zabbix sileo posito quod ad optatam rationem recurrat. Nullae aliae unctiones manuales pro vigilantia DFSR requiruntur.
Source: www.habr.com