Zabbix ရှိ DFS Replication ကို ရိုးရှင်းစွာ စောင့်ကြည့်ခြင်း။

နိဒါန်း

ဒေတာစင်တာများနှင့် ဌာနခွဲဆာဗာများအကြား ဒေတာကူးယူမှုအတွက် DFS နှင့် ဒေတာကူးယူခြင်းအတွက် DFS ၏ တစ်ခုတည်းသောအချက်အဖြစ် အသုံးပြုသည့် ကြီးမားပြီး ဖြန့်ဝေသည့် အခြေခံအဆောက်အအုံတစ်ခုဖြင့်၊ ဤပုံတူပွားခြင်း၏ အခြေအနေကို စောင့်ကြည့်ရန် မေးခွန်းပေါ်လာပါသည်။
တိုက်ဆိုင်စွာပင်၊ ကျွန်ုပ်တို့သည် DFSR ကိုစတင်အသုံးပြုပြီးနောက် ချက်ချင်းနီးပါးတွင်၊ ရှိရင်းစွဲတိရစ္ဆာန်ရုံကို ကိရိယာမျိုးစုံဖြင့် အစားထိုးကာ အခြေခံအဆောက်အအုံဆိုင်ရာ စောင့်ကြည့်ခြင်းအား ပိုမိုသိရှိနားလည်နိုင်သော၊ ပြည့်စုံပြီး ယုတ္တိရှိသောပုံစံတစ်ခုအဖြစ် Zabbix ကို စတင်အကောင်အထည်ဖော်ခဲ့သည်။ DFS ပုံတူပွားမှုကို စောင့်ကြည့်ရန် Zabbix ကို အသုံးပြုခြင်းအကြောင်း ဆွေးနွေးပါမည်။

ပထမဦးစွာ၊ ၎င်း၏ အခြေအနေကို စောင့်ကြည့်ရန် DFS ကူးယူခြင်းဆိုင်ရာ အချက်အလက်များကို ရယူရန် လိုအပ်ကြောင်း ဆုံးဖြတ်ရန် လိုအပ်ပါသည်။ အသက်ဆိုင်ဆုံး ညွှန်ပြချက်မှာ နောက်ကြောင်းပြန်မှု ဖြစ်သည်။ ၎င်းတွင် ထပ်တူပြုခြင်းအဖွဲ့၏ အခြားအဖွဲ့ဝင်များနှင့် ထပ်တူပြု၍မရသော ဖိုင်များ ပါရှိသည်။ utility ကို အသုံးပြု၍ ၎င်း၏အရွယ်အစားကို သင်ကြည့်ရှုနိုင်ပါသည်။ dfsrdiagDFSR အခန်းကဏ္ဍဖြင့် ထည့်သွင်းထားသည်။ သာမာန်ပုံတူကူးခြင်းအခြေအနေတွင်၊ backlog အရွယ်အစားသည် သုညသို့ ချဉ်းကပ်သင့်သည်။ ထို့ကြောင့်၊ backlog ရှိ ဖိုင်အများအပြားသည် ပုံတူပွားခြင်းနှင့် ပြဿနာများကို ညွှန်ပြသည်။

အခုက လက်တွေ့ကျတဲ့ ကိစ္စပါ။

Zabbix Agent မှတဆင့် backlog ၏အရွယ်အစားကိုစောင့်ကြည့်ရန်အတွက်၊ ကျွန်ုပ်တို့လိုအပ်သည်-

  • အထွက်ကို ခွဲခြမ်းစိပ်ဖြာပေးမည့် ဇာတ်ညွှန်း dfsrdiag Zabbix သို့ နောက်ဆုံး backlog အရွယ်အစားတန်ဖိုးများ ပံ့ပိုးပေးရန်၊
  • ဆာဗာပေါ်တွင် ပုံတူပွားအဖွဲ့ မည်မျှရှိကြောင်း၊ ၎င်းတို့ ကူးယူထားသည့် ဖိုင်တွဲများနှင့် ၎င်းတို့တွင် အခြားဆာဗာများ ပါဝင်ကြောင်း ဆုံးဖြတ်ပေးမည့် script တစ်ခု (ဆာဗာတစ်ခုစီအတွက် Zabbix တွင် ဤအရာအားလုံးကို ကျွန်ုပ်တို့ လက်ဖြင့် မထည့်လိုပါ ၊ ဟုတ်တယ်မလား?)
  • စောင့်ကြည့်စစ်ဆေးသည့်ဆာဗာမှ နောက်ဆက်တွဲခေါ်ဆိုမှုအတွက် Zabbix အေးဂျင့်ဖွဲ့စည်းမှုပုံစံတွင် ဤစခရစ်များကို UserParameter အဖြစ် ထည့်သွင်းခြင်း၊
  • Backlog ကိုဖတ်ခွင့်ရှိသည့် အသုံးပြုသူအနေဖြင့် Zabbix အေးဂျင့်ဝန်ဆောင်မှုကို စတင်ခြင်း၊
  • အဖွဲ့များကိုရှာဖွေခြင်း၊ လက်ခံရရှိသောဒေတာကိုလုပ်ဆောင်ခြင်းနှင့် ၎င်းတို့အပေါ်သတိပေးချက်များထုတ်ပေးခြင်းတို့ကို စီစဉ်သတ်မှတ်ပေးသည့် Zabbix အတွက် ပုံစံတစ်ခု။

Script parser

parser ကိုရေးရန်၊ Windows Server ၏ဗားရှင်းအားလုံးတွင်ရှိသော universal language အဖြစ် VBS ကို ရွေးချယ်ခဲ့သည်။ Script ၏ ယုတ္တိယုဂ်သည် ရိုးရှင်းသည်- ၎င်းသည် ကူးယူထားသော အုပ်စု၏ အမည်၊ ထပ်တူပြုထားသော ဖိုင်တွဲ၏ အမည်များနှင့် အမိန့်စာလိုင်းမှတစ်ဆင့် ပေးပို့ခြင်းနှင့် လက်ခံခြင်း ဆာဗာများ၏ အမည်များကို ရရှိသည်။ အဲဒီ့ဘောင်တွေကို ဖြတ်သွားမယ်။ dfsrdiagနှင့်၎င်း၏ထွက်ရှိမှုပေါ်မူတည်ပြီး၎င်းသည်ထုတ်လုပ်သည်-
ဖိုင်အရေအတွက် - backlog တွင် ဖိုင်များရှိနေခြင်းနှင့် ပတ်သက်၍ မက်ဆေ့ချ်တစ်ခု လက်ခံရရှိပါက၊
0 — backlog တွင် ဖိုင်များမရှိခြင်းနှင့် ပတ်သက်၍ မက်ဆေ့ချ်ကို လက်ခံရရှိပါက (“No Backlog”)၊
-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

Discovery ဇာတ်ညွှန်း

Zabbix သည် ဆာဗာတွင်ရှိနေသော ကူးယူမှုအုပ်စုအားလုံးကို ဆုံးဖြတ်ရန်နှင့် တောင်းဆိုချက် (ဖိုင်တွဲအမည်၊ အနီးနားရှိဆာဗာများ၏အမည်များ) အတွက် လိုအပ်သည့် ကန့်သတ်ဘောင်များအားလုံးကို သိရှိနိုင်ရန် ကျွန်ုပ်တို့သည် ပထမဦးစွာ၊ ဤအချက်အလက်ကို ရယူပြီး ဒုတိယအချက်မှာ ၎င်းကိုတင်ပြရန် လိုအပ်ပါသည်။ Zabbix ကိုနားလည်နိုင်သော format တစ်ခုဖြစ်သည်။ ရှာဖွေမှုတူးလ်နားလည်သည့် ဖော်မတ်သည် ဤကဲ့သို့ ဖြစ်သည်-

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

...

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

ကျွန်ုပ်တို့စိတ်ဝင်စားသောအချက်အလက်များကိုရရှိရန် အလွယ်ကူဆုံးနည်းလမ်းမှာ DfsrReplicationGroupConfig ၏သက်ဆိုင်ရာကဏ္ဍများမှ ၎င်းကို WMI မှ ဆွဲထုတ်ခြင်းဖြစ်သည်။ ရလဒ်အနေဖြင့် WMI သို့ တောင်းဆိုချက်ကို ထုတ်ပေးပြီး လိုအပ်သော ဖော်မတ်ဖြင့် အုပ်စုများ၊ ၎င်းတို့၏ ဖိုင်တွဲများနှင့် ဆာဗာများစာရင်းကို ထုတ်ပေးသည့် script တစ်ခု မွေးဖွားလာခဲ့သည်။

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 အေးဂျင့်ဖွဲ့စည်းမှုပုံစံသို့ script များထည့်ခြင်း။

ဤနေရာတွင် အရာအားလုံးသည် အလွန်ရိုးရှင်းပါသည်။ အေးဂျင့်ဖွဲ့စည်းမှုပုံစံဖိုင်၏အဆုံးတွင် အောက်ပါလိုင်းများကို ပေါင်းထည့်ပါ-

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"

ဟုတ်ပါတယ်၊ ငါတို့မှာ script တွေရှိတဲ့သူတွေဆီ လမ်းကြောင်းတွေကို ညှိပေးတယ်။ အေးဂျင့်ထည့်သွင်းထားသည့် တူညီသောဖိုင်တွဲတွင် ၎င်းတို့ကို ကျွန်ုပ်ထည့်ထားသည်။

အပြောင်းအလဲများပြုလုပ်ပြီးနောက် Zabbix အေးဂျင့်ဝန်ဆောင်မှုကို ပြန်လည်စတင်ပါ။

Zabbix Agent ဝန်ဆောင်မှုအောက်တွင် အသုံးပြုသူကို ပြောင်းလဲခြင်း။

သတင်းအချက် အလက်များကို ရယူနိုင်ရန် dfsrdiagအသုံးချမှုအား ပုံတူပွားအဖွဲ့၏ အဖွဲ့ဝင်များ ပေးပို့ခြင်းနှင့် လက်ခံခြင်း နှစ်ခုစလုံးအတွက် စီမံခန့်ခွဲပိုင်ခွင့်ရှိသော အကောင့်တစ်ခုအောက်တွင် လုပ်ဆောင်ရပါမည်။ စနစ်အကောင့်အောက်တွင် ပုံမှန်အားဖြင့် လုပ်ဆောင်နေသည့် Zabbix အေးဂျင့်ဝန်ဆောင်မှုသည် ထိုတောင်းဆိုချက်ကို လုပ်ဆောင်နိုင်မည်မဟုတ်ပေ။ ကျွန်ုပ်သည် ဒိုမိန်းတွင် သီးခြားအကောင့်တစ်ခုကို ဖန်တီးခဲ့ပြီး လိုအပ်သောဆာဗာများတွင် စီမံခန့်ခွဲပိုင်ခွင့်များပေးကာ ဝန်ဆောင်မှုကို ဤဆာဗာများအောက်တွင် လုပ်ဆောင်ရန် စီစဉ်သတ်မှတ်ပေးခဲ့သည်။

တခြားနည်းနဲ့ သွားလို့ရတယ်။ dfsrdiagတကယ်တော့၊ တူညီသော WMI မှတဆင့်အလုပ်လုပ်သည်၊ ထို့နောက်သင်သုံးနိုင်သည်။ ဖော်ပြချက်စီမံခန့်ခွဲရေးဆိုင်ရာ အခွင့်အရေးများ မထုတ်ပြန်ဘဲ ဒိုမိန်းအကောင့်တစ်ခုအား အသုံးပြုခွင့်ကို မည်သို့ပေးရမည်နည်း၊ သို့သော် ကျွန်ုပ်တို့တွင် ပုံစံတူအုပ်စုများစွာရှိလျှင် အုပ်စုတစ်ခုစီသို့ အခွင့်အရေးထုတ်ပေးရန် ခက်ခဲပါလိမ့်မည်။ သို့သော်၊ ကျွန်ုပ်တို့သည် ဒိုမိန်းထိန်းချုပ်သူများပေါ်တွင် ဒိုမိန်းစနစ်၏ ထုထည်ပုံတူပွားမှုကို စောင့်ကြည့်လိုပါက၊ ၎င်းသည် ဒိုမိန်းစီမံခန့်ခွဲသူအား စောင့်ကြည့်ရေးဝန်ဆောင်မှုအကောင့်သို့ ဒိုမိန်းစီမံခန့်ခွဲခွင့်ကို ပေးဆောင်ခြင်းသည် ကောင်းသောအကြံမဟုတ်သောကြောင့်၊ ၎င်းသည် တစ်ခုတည်းသော လက်ခံနိုင်သော ရွေးချယ်မှုဖြစ်နိုင်ပါသည်။

စောင့်ကြည့်ရေးပုံစံ

ကျွန်တော်လက်ခံရရှိသည့်ဒေတာအပေါ်အခြေခံ၍ ပုံစံတစ်မျိုးကို ဖန်တီးခဲ့သည်-

  • တစ်နာရီလျှင် တစ်ကြိမ် ကူးယူထားသော အုပ်စုများကို အလိုအလျောက် ရှာဖွေတွေ့ရှိခြင်း လုပ်ဆောင်သည်
  • အဖွဲ့တစ်ခုစီအတွက် 5 မိနစ်လျှင်တစ်ကြိမ် backlog အရွယ်အစားကို စစ်ဆေးသည်၊
  • အဖွဲ့တစ်ခု၏ backlog အရွယ်အစားသည် မိနစ် 100 ကြာ 30 ထက်ပိုသည့်အခါ သတိပေးချက်ထုတ်ပေးသည့် အစပျိုးတစ်ခုပါရှိသည်။ Trigger ကို ရှာဖွေတွေ့ရှိထားသော အဖွဲ့များထံ အလိုအလျောက် ထည့်သွင်းသည့် ရှေ့ပြေးပုံစံအဖြစ် ဖော်ပြသည်၊
  • ကူးယူမှုအုပ်စုတစ်ခုစီအတွက် backlog အရွယ်အစားဂရပ်များကို ဖန်တီးပေးသည်။

Zabbix 2.2 အတွက် နမူနာပုံစံကို သင်ဒေါင်းလုဒ်လုပ်နိုင်ပါသည်။ ဒီမှာ.

ရလဒ်

နမူနာပုံစံကို Zabbix သို့ ထည့်သွင်းပြီး လိုအပ်သောအခွင့်အရေးများဖြင့် အကောင့်တစ်ခုဖန်တီးပြီးနောက်၊ ကျွန်ုပ်တို့သည် DFSR အတွက် စောင့်ကြည့်လိုသော ဖိုင်ဆာဗာများသို့ scripts များကို ကူးယူရန် လိုအပ်မည်ဖြစ်ပြီး ၎င်းတို့ရှိ အေးဂျင့်ဖွဲ့စည်းပုံတွင် စာကြောင်းနှစ်ကြောင်းထည့်ကာ Zabbix အေးဂျင့်ဝန်ဆောင်မှုကို ပြန်လည်စတင်ရန် လိုအပ်မည်ဖြစ်သည်။ ၎င်းကို အလိုရှိသောအကောင့်အဖြစ် လုပ်ဆောင်ရန် သတ်မှတ်ခြင်း။ DFSR စောင့်ကြည့်မှုအတွက် အခြားသော လက်စွဲဆက်တင်များ မလိုအပ်ပါ။

source: www.habr.com

မှတ်ချက် Add