Monatóireacht shimplí ar mhacasamhlú DFS in Zabbix

Réamhrá

Le bonneagar sách mór agus dáilte a úsáideann DFS mar phointe rochtana aonair ar shonraí agus DFSR le haghaidh macasamhlú sonraí idir ionaid sonraí agus freastalaithe brainse, ardaítear an cheist maidir le monatóireacht a dhéanamh ar stádas an mhacasamhlú seo.
Mar a tharla, beagnach díreach tar éis dúinn tosú ag baint úsáide as DFSR, thosaigh muid ag cur Zabbix i bhfeidhm agus é mar sprioc againn uirlisí éagsúla a chur in ionad an zú atá ann cheana féin agus monatóireacht ar bhonneagar a thabhairt go foirm níos faisnéiseach, iomlán agus loighciúil. Déanfaimid labhairt faoi Zabbix a úsáid chun monatóireacht a dhéanamh ar mhacasamhlú DFS.

Ar an gcéad dul síos, ní mór dúinn a chinneadh cad iad na sonraí faoi mhacasamhlú DFS is gá a fháil chun monatóireacht a dhéanamh ar a stádas. Is é an táscaire is ábhartha ná riaráiste. Tá comhaid ann nár sioncronaíodh iad le baill eile den ghrúpa macasamhlaithe. Is féidir leat a mhéid a fheiceáil ag baint úsáide as an bhfóntas dfsrdiag, suiteáilte le ról DFSR. I stát macasamhlaithe gnáth, ba cheart go mbeadh méid an riaráiste gar do nialas. Dá réir sin, léiríonn líon mór comhad sa riaráiste fadhbanna le macasamhlú.

Anois faoin taobh praiticiúil den cheist.

Chun monatóireacht a dhéanamh ar mhéid an riaráiste trí Ghníomhaire Zabbix, beidh orainn:

  • Script a pharsáil an t-aschur dfsrdiag chun luachanna méide riaráiste deiridh a sholáthar do Zabbix,
  • Script a chinnfidh cé mhéad grúpa macasamhlaithe atá ar an bhfreastalaí, cad iad na fillteáin a dhéanann siad a mhacasamhlú agus cad iad na freastalaithe eile atá san áireamh iontu (nílimid ag iarraidh é seo go léir a chur isteach i Zabbix de láimh do gach freastalaí, ar dheis?),
  • Agus na scripteanna seo á gcur mar UserParameter le cumraíocht ghníomhaire Zabbix le haghaidh glaonna ina dhiaidh sin ón bhfreastalaí monatóireachta,
  • Ag tosú le seirbhís gníomhaire Zabbix mar úsáideoir a bhfuil cearta aige an riaráiste a léamh,
  • Teimpléad le haghaidh Zabbix, ina ndéanfar grúpaí a bhrath, sonraí a fhaightear a phróiseáil agus foláirimh a eisiúint ina dtaobh a chumrú.

Parsálaí script

Chun an parsálaí a scríobh, roghnaigh mé VBS mar an teanga is uilíoch atá i láthair i ngach leagan de Windows Server. Tá loighic na scripte simplí: faigheann sé ainm an ghrúpa macasamhlaithe, an fillteán athdhéanta, agus ainmneacha na bhfreastalaithe seolta agus glactha tríd an líne ordaithe. Cuirtear na paraiméadair seo ar aghaidh ansin chuig dfsrdiag, agus ag brath ar a aschur táirgeann sé:
Líon na gcomhad - má fhaightear teachtaireacht faoi láithreacht comhad sa riaráiste,
0 — má fhaightear teachtaireacht faoi easpa comhad sa riaráiste (“Gan Riaráiste”),
-1 - má fhaightear teachtaireacht earráide dfsrdiag agus iarratas á dhéanamh ("[ERROR]").

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

Script fionnachtana

Ionas go bhféadfaidh Zabbix na grúpaí macasamhlaithe go léir atá ar an bhfreastalaí a chinneadh agus na paraiméadair go léir a theastaíonn don iarratas a fháil amach (ainm fillteáin, ainmneacha freastalaithe comharsanacha), ní mór dúinn, ar an gcéad dul síos, an fhaisnéis seo a fháil, agus ar an dara dul síos, é a chur i láthair i bhformáid atá intuigthe do Zabbix. Breathnaíonn an fhormáid a thuigeann an uirlis fionnachtana mar seo:

        "data":[
                {
                        "{#GROUP}":"Share1",
                        "{#FOLDER}":"Folder1",
                        "{#SENDING}":"Server1",
                        "{#RECEIVING}":"Server2"}

...

                        "{#GROUP}":"ShareN",
                        "{#FOLDER}":"FolderN",
                        "{#SENDING}":"Server1",
                        "{#RECEIVING}":"ServerN"}]}

Is é an bealach is éasca chun an fhaisnéis a bhfuil suim againn inti a fháil trí WMI, é a tharraingt amach as na hailt comhfhreagracha de DfsrReplicationGroupConfig. Mar thoradh air sin, rugadh script a ghineann iarratas chuig WMI agus a aschuireann liosta grúpaí, a bhfillteáin agus a bhfreastalaithe san fhormáid riachtanach.

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

Aontaím, b'fhéidir nach bhfuil an script ag taitneamh le galántas an chóid agus is cinnte go bhféadfaí roinnt rudaí ann a shimpliú, ach comhlíonann sé a phríomhfheidhm - faisnéis a sholáthar faoi pharaiméadair na ngrúpaí macasamhlú i bhformáid atá intuigthe ag Zabbix.

Scripteanna a chur le cumraíocht an ghníomhaire Zabbix

Tá gach rud anseo thar a bheith simplí. Cuir na línte seo a leanas le deireadh an chomhaid cumraíochta gníomhaire:

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"

Ar ndóigh, déanaimid na cosáin a choigeartú dóibh siúd ina bhfuil scripteanna againn. Cuirim iad san fhillteán céanna ina bhfuil an gníomhaire suiteáilte.

Tar éis athruithe a dhéanamh, atosú ar an tseirbhís gníomhaire Zabbix.

Athrú ar an úsáideoir faoina ritheann an tseirbhís Gníomhaire Zabbix

Chun eolas a fháil trí dfsrdiag, ní mór an áirgiúlacht a reáchtáil faoi chuntas a bhfuil cearta riaracháin aige maidir le comhaltaí an ghrúpa macasamhlaithe a sheoladh agus a fháil. Ní bheidh an tseirbhís gníomhaire Zabbix, a ritheann de réir réamhshocraithe faoi chuntas an chórais, in ann iarratas den sórt sin a fhorghníomhú. Chruthaigh mé cuntas ar leith san fhearann, thug mé cearta riaracháin dó ar na freastalaithe riachtanacha, agus chumraigh mé na freastalaithe seo chun an tseirbhís a rith faoi.

Is féidir leat dul ar bhealach eile: mar gheall ar dfsrdiag, i ndáiríre, oibríonn tríd an WMI céanna, ansin is féidir leat é a úsáid tuairisc, conas a thabhairt do chuntas fearainn na cearta chun é a úsáid gan cearta riaracháin a eisiúint, ach má tá go leor grúpaí macasamhlaithe againn, beidh sé deacair cearta a eisiúint do gach grúpa. Mar sin féin, i gcás gur mhaith linn monatóireacht a dhéanamh ar mhacasamhlú Imleabhar an Chórais Fearainn ar rialtóirí fearainn, b'fhéidir gurb é seo an t-aon rogha inghlactha, ós rud é nach smaoineamh maith é cearta riarthóir fearainn a thabhairt don chuntas seirbhíse monatóireachta.

Teimpléad monatóireachta

Bunaithe ar na sonraí a fuair mé, chruthaigh mé teimpléad:

  • Ritheann sé fionnachtain uathoibríoch ar ghrúpaí macasamhlú uair san uair,
  • Seiceálann sé méid an riaráiste do gach grúpa uair amháin gach 5 nóiméad,
  • Tá truicear ann a eisíonn foláireamh nuair a bhíonn méid an riaráiste d’aon ghrúpa níos mó ná 100 ar feadh 30 nóiméad. Déantar cur síos ar an truicear mar fhréamhshamhail a chuirtear go huathoibríoch le grúpaí braite,
  • Tógann sé graif méide riaráiste do gach grúpa macasamhlaithe.

Is féidir leat an teimpléad le haghaidh Zabbix 2.2 a íoslódáil anseo.

Iomlán na

Tar éis an teimpléad a allmhairiú isteach i Zabbix agus cuntas a chruthú leis na cearta riachtanacha, ní bheidh orainn ach na scripteanna a chóipeáil chuig na freastalaithe comhaid a dteastaíonn uainn monatóireacht a dhéanamh orthu le haghaidh DFSR, cuir dhá líne leis an gcumraíocht gníomhaire orthu agus atosú ar an tseirbhís gníomhaire Zabbix , ag socrú é a rith mar an cuntas atá ag teastáil. Níl aon socruithe láimhe eile ag teastáil le haghaidh monatóireachta DFSR.

Foinse: will.com

Add a comment