Simplex vigilantia DFS Replicationis in Zabbix

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 descriptioquomodo ditione rationem reddere iura utendi sine ferendis administrativis iuribus, si autem plures replicationes circulos habemus, tum ius utrique coetui ferendi difficile erit. Attamen, in casu velimus ut monitor Domain System Volubilis replicationem in moderatoribus domain moderatoris, haec sola optio accepta esse potest, cum administrator ius domain dare ad rationem muneris vigilantiae utilem non sit.

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

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