DFS-ի վերարտադրության պարզ մոնիտորինգ Zabbix-ում

Ներածություն

Բավականին մեծ և բաշխված ենթակառուցվածքով, որն օգտագործում է DFS-ը՝ որպես տվյալների մուտքի մեկ կետ, և DFSR-ը՝ տվյալների կենտրոնների և մասնաճյուղային սերվերների միջև տվյալների կրկնօրինակման համար, հարց է առաջանում՝ վերահսկել այս վերարտադրության կարգավիճակը:
Պատահաբար, DFSR-ն օգտագործելուց գրեթե անմիջապես հետո մենք սկսեցինք կիրառել Zabbix-ը՝ նպատակ ունենալով փոխարինել գոյություն ունեցող կենդանաբանական այգին տարբեր գործիքներով և ենթակառուցվածքի մոնիտորինգը բերել ավելի տեղեկատվական, ամբողջական և տրամաբանական ձևի: Մենք կխոսենք Zabbix-ի օգտագործման մասին DFS-ի վերարտադրությունը վերահսկելու համար:

Առաջին հերթին, մենք պետք է որոշենք, թե DFS-ի կրկնօրինակման մասին ինչ տվյալներ պետք է ձեռք բերվեն՝ դրա կարգավիճակը վերահսկելու համար: Ամենաարդիական ցուցանիշը հետաձգումն է: Այն պարունակում է ֆայլեր, որոնք չեն համաժամացվել կրկնօրինակման խմբի այլ անդամների հետ: Դուք կարող եք դիտել դրա չափը, օգտագործելով կոմունալը դֆսրդիագ, տեղադրված է DFSR դերով: Նորմալ կրկնօրինակման վիճակում, հետնահերթության չափը պետք է մոտենա զրոյին: Համապատասխանաբար, մեծ թվով ֆայլեր հետքայլում ցույց են տալիս կրկնօրինակման հետ կապված խնդիրներ:

Հիմա հարցի գործնական կողմի մասին։

Zabbix Agent-ի միջոցով կուտակված կուտակումների չափը վերահսկելու համար մեզ անհրաժեշտ կլինի.

  • Սցենար, որը կվերլուծի ելքը դֆսրդիագ Zabbix-ին տրամադրել վերջնական հետնահերթ չափի արժեքներ,
  • Սկրիպտ, որը կորոշի, թե քանի վերարտադրման խումբ կա սերվերում, ինչ թղթապանակներ են նրանք կրկնօրինակում և ինչ այլ սերվերներ են ներառված դրանցում (մենք չենք ցանկանում այս ամենը ձեռքով մուտքագրել Zabbix յուրաքանչյուր սերվերի համար, այնպես չէ՞):
  • Այս սկրիպտները որպես UserParameter ավելացնելով Zabbix գործակալի կազմաձևում՝ մոնիտորինգի սերվերից հետագա զանգերի համար,
  • Սկսելով Zabbix գործակալի ծառայությունը որպես օգտատեր, ով իրավունք ունի կարդալու հետնահերթությունները,
  • Zabbix-ի ձևանմուշ, որում կկազմաձևվեն խմբերի հայտնաբերումը, ստացված տվյալների մշակումը և դրանց վերաբերյալ ահազանգերի տրամադրումը:

Սցենարի վերլուծիչ

Վերլուծիչը գրելու համար ես ընտրեցի VBS-ը որպես Windows Server-ի բոլոր տարբերակներում առկա ամենահամընդհանուր լեզու: Սկրիպտի տրամաբանությունը պարզ է՝ այն հրամանի տողի միջոցով ստանում է վերարտադրման խմբի անվանումը, կրկնօրինակվող թղթապանակը և ուղարկող և ստացող սերվերների անունները։ Այնուհետև այս պարամետրերը փոխանցվում են դֆսրդիագ, և կախված իր արտադրանքից այն արտադրում է.
Ֆայլերի քանակը - եթե հաղորդագրություն է ստացվել հետնամասում ֆայլերի առկայության մասին,
0 — եթե հաղորդագրություն է ստացվել հետնախագիծում ֆայլերի բացակայության մասին («Ոչ մի հետք»),
-1 - եթե սխալ հաղորդագրություն է ստացվել դֆսրդիագ հարցումը կատարելիս («[ՍԽԱԼ]»):

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

Բացահայտման սցենար

Որպեսզի Zabbix-ը որոշի սերվերում առկա բոլոր կրկնօրինակման խմբերը և պարզի հարցման համար պահանջվող բոլոր պարամետրերը (թղթապանակի անվանումը, հարևան սերվերների անունները), մենք պետք է, առաջին հերթին, ստանանք այս տեղեկատվությունը և երկրորդը ներկայացնենք այն: Zabbix-ին հասկանալի ձևաչափով։ Ձևաչափը, որը հասկանում է հայտնաբերման գործիքը, ունի հետևյալ տեսքը.

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

...

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

Մեզ հետաքրքրող տեղեկատվությունը ստանալու ամենահեշտ ձևը WMI-ի միջոցով է՝ այն դուրս բերելով DfsrReplicationGroupConfig-ի համապատասխան բաժիններից: Արդյունքում ծնվեց մի սկրիպտ, որը ստեղծում է հարցում WMI-ին և դուրս է բերում խմբերի, դրանց թղթապանակների և սերվերների ցանկը պահանջվող ձևաչափով։

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

Համաձայն եմ, որ սցենարը կարող է չփայլել կոդերի նրբագեղությամբ, և դրա մեջ որոշ բաներ, անշուշտ, կարող են պարզեցվել, բայց այն կատարում է իր հիմնական գործառույթը՝ տրամադրելով տեղեկատվություն կրկնօրինակման խմբերի պարամետրերի մասին Zabbix-ի համար հասկանալի ձևաչափով:

Սցենարների ավելացում Zabbix գործակալի կազմաձևում

Այստեղ ամեն ինչ չափազանց պարզ է. Գործակալի կազմաձևման ֆայլի վերջում ավելացրեք հետևյալ տողերը.

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"

Իհարկե, մենք ճանապարհները հարմարեցնում ենք նրանց, որտեղ մենք ունենք սցենարներ: Ես դրանք դնում եմ նույն թղթապանակում, որտեղ տեղադրված է գործակալը:

Փոփոխություններ կատարելուց հետո վերագործարկեք Zabbix գործակալական ծառայությունը:

Օգտատիրոջ փոփոխություն, որի ներքո աշխատում է Zabbix Agent ծառայությունը

միջոցով տեղեկատվություն ստանալու համար դֆսրդիագ, կոմունալ ծրագիրը պետք է գործարկվի այնպիսի հաշվի ներքո, որն ունի ադմինիստրատիվ իրավունքներ կրկնօրինակման խմբի անդամներին ուղարկելու և ստանալու համար: Zabbix գործակալի ծառայությունը, որը լռելյայնորեն աշխատում է համակարգի հաշվի տակ, չի կարողանա կատարել նման հարցում: Ես ստեղծեցի առանձին հաշիվ տիրույթում, նրան տվեցի ադմինիստրատիվ իրավունքներ պահանջվող սերվերների վրա և կարգավորեցի այս սերվերները, որպեսզի գործարկեն ծառայությունը դրա տակ։

Դուք կարող եք գնալ այլ ճանապարհով, քանի որ դֆսրդիագ, փաստորեն, աշխատում է նույն WMI-ի միջոցով, ապա կարող եք օգտագործել նկարագրությունը, ինչպես դոմենային հաշվին տալ այն օգտագործելու իրավունքներ՝ առանց ադմինիստրատիվ իրավունքներ տրամադրելու, բայց եթե մենք ունենք բազմաթիվ կրկնօրինակման խմբեր, ապա յուրաքանչյուր խմբի համար իրավունքներ տրամադրելը դժվար կլինի։ Այնուամենայնիվ, եթե մենք ցանկանում ենք վերահսկել տիրույթի համակարգի ծավալի վերարտադրությունը տիրույթի կարգավորիչների վրա, սա կարող է լինել միակ ընդունելի տարբերակը, քանի որ մոնիտորինգի ծառայության հաշվին տիրույթի ադմինիստրատորի իրավունքները տրամադրելը լավ գաղափար չէ:

Մոնիտորինգի ձևանմուշ

Իմ ստացած տվյալների հիման վրա ես ստեղծեցի ձևանմուշ, որը.

  • Գործարկում է կրկնօրինակման խմբերի ավտոմատ հայտնաբերումը ժամում մեկ անգամ,
  • Յուրաքանչյուր խմբի համար յուրաքանչյուր 5 րոպեն մեկ ստուգում է հետնահերթության չափը,
  • Պարունակում է գործարկիչ, որը ծանուցում է տալիս, երբ որևէ խմբի համար 100-ից ավելի է 30 րոպեի ընթացքում: Գործարկիչը նկարագրվում է որպես նախատիպ, որն ավտոմատ կերպով ավելացվում է հայտնաբերված խմբերին,
  • Կառուցում է հետնաժամկետ չափի գրաֆիկներ յուրաքանչյուր կրկնօրինակման խմբի համար:

Դուք կարող եք ներբեռնել Zabbix 2.2-ի ձևանմուշը այստեղ.

Լրիվ

Կաղապարը Zabbix ներմուծելուց և անհրաժեշտ իրավունքներով հաշիվ ստեղծելուց հետո մեզ միայն պետք է պատճենել սկրիպտները ֆայլերի սերվերների վրա, որոնք ցանկանում ենք վերահսկել DFSR-ի համար, ավելացնել երկու տող գործակալի կազմաձևում դրանց վրա և վերագործարկել Zabbix գործակալի ծառայությունը: , սահմանելով այն աշխատել որպես ցանկալի հաշիվ: DFSR մոնիտորինգի համար այլ ձեռքով կարգավորումներ չեն պահանջվում:

Source: www.habr.com

Добавить комментарий