Zabbixలో DFS రెప్లికేషన్ యొక్క సాధారణ పర్యవేక్షణ

పరిచయం

డేటా సెంటర్‌లు మరియు బ్రాంచ్ సర్వర్‌ల మధ్య డేటా రెప్లికేషన్ కోసం DFSని డేటా మరియు DFSRకి యాక్సెస్ యొక్క ఒకే పాయింట్‌గా ఉపయోగించే చాలా పెద్ద మరియు పంపిణీ చేయబడిన మౌలిక సదుపాయాలతో, ఈ రెప్లికేషన్ స్థితిని పర్యవేక్షించడం అనే ప్రశ్న తలెత్తుతుంది.
యాదృచ్ఛికంగా, మేము DFSRని ఉపయోగించడం ప్రారంభించిన వెంటనే, మేము ఇప్పటికే ఉన్న వివిధ సాధనాల జంతుప్రదర్శనశాలను భర్తీ చేయడం మరియు మౌలిక సదుపాయాల పర్యవేక్షణను మరింత సమాచారం, పూర్తి మరియు తార్కిక రూపానికి తీసుకురావాలనే లక్ష్యంతో Zabbixని అమలు చేయడం ప్రారంభించాము. మేము DFS ప్రతిరూపణను పర్యవేక్షించడానికి Zabbixని ఉపయోగించడం గురించి మాట్లాడుతాము.

అన్నింటిలో మొదటిది, దాని స్థితిని పర్యవేక్షించడానికి DFS రెప్లికేషన్ గురించి ఏ డేటాను పొందాలో మనం నిర్ణయించుకోవాలి. అత్యంత సంబంధిత సూచిక బ్యాక్‌లాగ్. ఇది ప్రతిరూపణ సమూహంలోని ఇతర సభ్యులతో సమకాలీకరించబడని ఫైల్‌లను కలిగి ఉంది. మీరు యుటిలిటీని ఉపయోగించి దాని పరిమాణాన్ని చూడవచ్చు dfsrdiag, DFSR పాత్రతో ఇన్‌స్టాల్ చేయబడింది. సాధారణ ప్రతిరూపణ స్థితిలో, బ్యాక్‌లాగ్ పరిమాణం సున్నాకి చేరుకోవాలి. దీని ప్రకారం, బ్యాక్‌లాగ్‌లోని పెద్ద సంఖ్యలో ఫైల్‌లు ప్రతిరూపణతో సమస్యలను సూచిస్తాయి.

ఇప్పుడు సమస్య యొక్క ఆచరణాత్మక వైపు గురించి.

Zabbix ఏజెంట్ ద్వారా బ్యాక్‌లాగ్ పరిమాణాన్ని పర్యవేక్షించడానికి, మాకు ఇవి అవసరం:

  • అవుట్‌పుట్‌ని అన్వయించే స్క్రిప్ట్ dfsrdiag Zabbixకి చివరి బ్యాక్‌లాగ్ పరిమాణం విలువలను అందించడానికి,
  • సర్వర్‌లో ఎన్ని రెప్లికేషన్ గ్రూప్‌లు ఉన్నాయి, అవి ఏ ఫోల్డర్‌లను రిప్లికేట్ చేస్తాయి మరియు వాటిలో ఏ ఇతర సర్వర్‌లు చేర్చబడ్డాయో నిర్ణయించే స్క్రిప్ట్ (మేము ప్రతి సర్వర్‌కు చేతితో Zabbix లోకి ఇవన్నీ నమోదు చేయకూడదనుకుంటున్నాము, సరియైనదా?),
  • పర్యవేక్షణ సర్వర్ నుండి తదుపరి కాల్ కోసం Zabbix ఏజెంట్ కాన్ఫిగరేషన్‌కు ఈ స్క్రిప్ట్‌లను UserParameter వలె జోడించడం,
  • బ్యాక్‌లాగ్‌ను చదవడానికి హక్కులు ఉన్న వినియోగదారుగా Zabbix ఏజెంట్ సేవను ప్రారంభించడం,
  • Zabbix కోసం ఒక టెంప్లేట్, దీనిలో సమూహాలను గుర్తించడం, స్వీకరించిన డేటాను ప్రాసెస్ చేయడం మరియు వాటిపై హెచ్చరికలు జారీ చేయడం వంటివి కాన్ఫిగర్ చేయబడతాయి.

స్క్రిప్ట్ పార్సర్

పార్సర్‌ని వ్రాయడానికి, నేను Windows సర్వర్ యొక్క అన్ని వెర్షన్‌లలో ఉన్న అత్యంత సార్వత్రిక భాషగా VBSని ఎంచుకున్నాను. స్క్రిప్ట్ యొక్క తర్కం చాలా సులభం: ఇది ప్రతిరూపణ సమూహం యొక్క పేరు, ప్రతిరూప ఫోల్డర్ మరియు కమాండ్ లైన్ ద్వారా పంపే మరియు స్వీకరించే సర్వర్‌ల పేర్లను అందుకుంటుంది. ఈ పారామితులు తర్వాత పంపబడతాయి dfsrdiag, మరియు దాని ఉత్పత్తిని బట్టి ఇది ఉత్పత్తి చేస్తుంది:
ఫైల్‌ల సంఖ్య - బ్యాక్‌లాగ్‌లో ఫైల్‌ల ఉనికి గురించి సందేశం వస్తే,
0 — బ్యాక్‌లాగ్‌లో ఫైల్‌లు లేకపోవడం గురించి సందేశం వస్తే (“బ్యాక్‌లాగ్ లేదు”),
-1 - దోష సందేశం వచ్చినట్లయితే dfsrdiag అభ్యర్థనను అమలు చేస్తున్నప్పుడు ("[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

డిస్కవరీ స్క్రిప్ట్

Zabbix సర్వర్‌లో ఉన్న అన్ని రెప్లికేషన్ సమూహాలను గుర్తించడానికి మరియు అభ్యర్థనకు అవసరమైన అన్ని పారామితులను (ఫోల్డర్ పేరు, పొరుగు సర్వర్‌ల పేర్లు) కనుగొనడానికి, మేము మొదట, ఈ సమాచారాన్ని పొందాలి మరియు రెండవది, దానిని సమర్పించాలి. Zabbixకి అర్థమయ్యే ఆకృతిలో. డిస్కవరీ టూల్ అర్థం చేసుకునే ఆకృతి ఇలా కనిపిస్తుంది:

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

...

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

DfsrReplicationGroupConfig యొక్క సంబంధిత విభాగాల నుండి దానిని తీసివేయడం WMI ద్వారా మనకు ఆసక్తి ఉన్న సమాచారాన్ని పొందడానికి సులభమైన మార్గం. ఫలితంగా, 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 ఏజెంట్ కాన్ఫిగరేషన్‌కు స్క్రిప్ట్‌లను జోడిస్తోంది

ఇక్కడ ప్రతిదీ చాలా సులభం. ఏజెంట్ కాన్ఫిగరేషన్ ఫైల్ చివర కింది పంక్తులను జోడించండి:

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 ఏజెంట్ సేవ అమలులో ఉన్న వినియోగదారుని మార్చడం

ద్వారా సమాచారాన్ని స్వీకరించడానికి dfsrdiag, ప్రతిరూపణ సమూహంలోని సభ్యులను పంపడం మరియు స్వీకరించడం రెండింటికీ నిర్వాహక హక్కులను కలిగి ఉన్న ఖాతా కింద యుటిలిటీ తప్పనిసరిగా అమలు చేయబడాలి. Zabbix ఏజెంట్ సేవ, సిస్టమ్ ఖాతాలో డిఫాల్ట్‌గా అమలు చేయబడదు, అటువంటి అభ్యర్థనను అమలు చేయలేరు. నేను డొమైన్‌లో ఒక ప్రత్యేక ఖాతాను సృష్టించాను, అవసరమైన సర్వర్‌లపై దానికి అడ్మినిస్ట్రేటివ్ హక్కులను ఇచ్చాను మరియు ఈ సర్వర్‌లలో దాని క్రింద పనిచేయడానికి సేవను కాన్ఫిగర్ చేసాను.

మీరు మరొక మార్గంలో వెళ్ళవచ్చు: ఎందుకంటే dfsrdiag, నిజానికి, అదే WMI ద్వారా పనిచేస్తుంది, అప్పుడు మీరు ఉపయోగించవచ్చు వివరణ, ఒక డొమైన్ ఖాతాకు పరిపాలనా హక్కులను జారీ చేయకుండా దానిని ఉపయోగించే హక్కులను ఎలా ఇవ్వాలి, కానీ మనకు అనేక ప్రతిరూపణ సమూహాలు ఉంటే, ప్రతి సమూహానికి హక్కులను జారీ చేయడం కష్టం. అయితే, మేము డొమైన్ కంట్రోలర్‌లలో డొమైన్ సిస్టమ్ వాల్యూమ్ రెప్లికేషన్‌ను పర్యవేక్షించాలనుకుంటే, మానిటరింగ్ సర్వీస్ ఖాతాకు డొమైన్ అడ్మినిస్ట్రేటర్ హక్కులను ఇవ్వడం మంచి ఆలోచన కానందున ఇది మాత్రమే ఆమోదయోగ్యమైన ఎంపిక కావచ్చు.

మానిటరింగ్ టెంప్లేట్

నేను అందుకున్న డేటా ఆధారంగా, నేను ఒక టెంప్లేట్‌ని సృష్టించాను:

  • గంటకు ఒకసారి ప్రతిరూపణ సమూహాల స్వయంచాలక ఆవిష్కరణను అమలు చేస్తుంది,
  • ప్రతి 5 నిమిషాలకు ఒకసారి ప్రతి సమూహానికి బ్యాక్‌లాగ్ పరిమాణాన్ని తనిఖీ చేస్తుంది,
  • ఏదైనా సమూహం కోసం బ్యాక్‌లాగ్ పరిమాణం 100 నిమిషాలకు 30 కంటే ఎక్కువగా ఉన్నప్పుడు హెచ్చరికను జారీ చేసే ట్రిగ్గర్‌ను కలిగి ఉంటుంది. ట్రిగ్గర్ కనుగొనబడిన సమూహాలకు స్వయంచాలకంగా జోడించబడే నమూనాగా వర్ణించబడింది,
  • ప్రతి రెప్లికేషన్ గ్రూప్ కోసం బ్యాక్‌లాగ్ సైజు గ్రాఫ్‌లను రూపొందిస్తుంది.

మీరు Zabbix 2.2 కోసం టెంప్లేట్‌ను డౌన్‌లోడ్ చేసుకోవచ్చు ఇక్కడ.

ఫలితం

టెంప్లేట్‌ను Zabbixలోకి దిగుమతి చేసి, అవసరమైన హక్కులతో ఖాతాను సృష్టించిన తర్వాత, మేము DFSR కోసం పర్యవేక్షించదలిచిన ఫైల్ సర్వర్‌లకు స్క్రిప్ట్‌లను కాపీ చేసి, వాటిపై ఏజెంట్ కాన్ఫిగరేషన్‌కు రెండు లైన్లను జోడించి, Zabbix ఏజెంట్ సేవను పునఃప్రారంభించాలి. , కావలసిన ఖాతా వలె అమలు చేయడానికి దీన్ని సెట్ చేయండి. DFSR పర్యవేక్షణ కోసం ఇతర మాన్యువల్ సెట్టింగ్‌లు అవసరం లేదు.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి