Zabbix дахь DFS хуулбарыг хялбархан хянах

Танилцуулга

DFS-ийг өгөгдөлд хандах нэг цэг болгон ашигладаг нэлээд том, тархсан дэд бүтэцтэй бол өгөгдлийн төвүүд болон салбар серверүүдийн хооронд өгөгдлийг хуулбарлахад зориулсан DFSR-ийг ашигладаг тул энэ хуулбарын статусыг хянах асуулт гарч ирдэг.
Санамсаргүй тохиолдлоор бид DFSR-ийг ашиглаж эхэлснээс хойш бараг тэр даруйдаа одоо байгаа амьтны хүрээлэнг янз бүрийн хэрэгслээр сольж, дэд бүтцийн мониторингийг илүү мэдээлэл сайтай, бүрэн гүйцэд, логик хэлбэрт оруулах зорилготойгоор Zabbix-ийг хэрэгжүүлж эхэлсэн. Бид DFS хуулбарыг хянахын тулд Zabbix ашиглах талаар ярих болно.

Юуны өмнө бид DFS хуулбарын статусыг хянахын тулд ямар өгөгдөл авах шаардлагатайг шийдэх хэрэгтэй. Хамгийн их хамааралтай үзүүлэлт бол хоцрогдол юм. Энэ нь хуулбарлах бүлгийн бусад гишүүдтэй синхрончлогдоогүй файлуудыг агуулдаг. Та түүний хэмжээг хэрэгслийг ашиглан харж болно dfsrdiag, DFSR үүрэг бүхий суулгасан. Хэвийн хуулбарлах төлөвт хоцрогдлын хэмжээ тэг рүү ойртох ёстой. Үүний дагуу, хуримтлагдсан олон тооны файлууд нь хуулбарлахтай холбоотой асуудлуудыг илтгэнэ.

Одоо асуудлын практик талын талаар.

Zabbix Agent-ээр дамжуулан хоцрогдлын хэмжээг хянахын тулд бидэнд дараахь зүйлс хэрэгтэй болно.

  • Гаралтыг задлан шинжлэх скрипт dfsrdiag Zabbix-д эцсийн нөөцийн хэмжээг өгөх,
  • Сервер дээр хичнээн хуулбарлах бүлгүүд байгаа, тэдгээр нь ямар фолдеруудыг хуулбарлаж, өөр ямар серверүүд агуулагдаж байгааг тодорхойлох скрипт (бид энэ бүгдийг сервер бүрийн хувьд Zabbix-д гараар оруулахыг хүсэхгүй байна, тийм ээ?)
  • Хяналтын серверээс дараагийн дуудлага хийх зорилгоор Zabbix агентын тохиргоонд эдгээр скриптийг UserParameter болгон нэмэх,
  • Заббикс агентийн үйлчилгээг хоцролтыг унших эрхтэй хэрэглэгчийн хувьд эхлүүлж,
  • Zabbix-ийн загвар нь бүлгүүдийг илрүүлэх, хүлээн авсан өгөгдлийг боловсруулах, тэдгээрт анхааруулга өгөхийг тохируулах болно.

Скрипт задлан шинжлэгч

Шинжилгээг бичихийн тулд би VBS-ийг Windows Server-ийн бүх хувилбарт байдаг хамгийн түгээмэл хэлээр сонгосон. Скриптийн логик нь энгийн: энэ нь хуулбарлах бүлгийн нэр, хуулбарласан хавтас, илгээх болон хүлээн авах серверүүдийн нэрийг тушаалын мөрөөр хүлээн авдаг. Дараа нь эдгээр параметрүүдийг дамжуулна 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"}]}

Бидний сонирхож буй мэдээллийг авах хамгийн хялбар арга бол 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 үйлчилгээ ажилладаг хэрэглэгчийг өөрчлөх

дамжуулан мэдээлэл хүлээн авахын тулд dfsrdiag, хэрэгсэл нь хуулбарлах бүлгийн гишүүдийг илгээх болон хүлээн авах захиргааны эрх бүхий дансны дор ажиллах ёстой. Системийн бүртгэлээр анхдагчаар ажилладаг Zabbix агент үйлчилгээ нь ийм хүсэлтийг гүйцэтгэх боломжгүй болно. Би домэйн дээр тусдаа данс үүсгэж, түүнд шаардлагатай серверүүд дээр захиргааны эрхийг өгч, үйлчилгээгээ эдгээр серверүүд дээр ажиллуулахаар тохируулсан.

Та өөр замаар явж болно: учир нь dfsrdiag, үнэндээ, ижил WMI дамжуулан ажилладаг, Дараа нь та ашиглаж болно тайлбар, домайны дансанд захиргааны эрх олгохгүйгээр ашиглах эрхийг хэрхэн өгөх вэ, гэхдээ хэрэв бид олон хуулбарлах бүлгүүдтэй бол бүлэг тус бүрт эрх олгоход хэцүү байх болно. Гэсэн хэдий ч, хэрэв бид домэйн хянагч дээрх Домэйн системийн эзлэхүүний хуулбарыг хянахыг хүсч байгаа бол хяналтын үйлчилгээний дансанд домэйн администраторын эрхийг өгөх нь тийм ч сайн санаа биш тул энэ нь хүлээн зөвшөөрөгдөх цорын ганц сонголт байж магадгүй юм.

Хяналтын загвар

Хүлээн авсан өгөгдөл дээрээ үндэслэн би дараах загварыг бүтээсэн:

  • Цаг тутамд нэг удаа хуулбарлах бүлгүүдийг автоматаар илрүүлдэг.
  • Бүлэг тус бүрийн хоцрогдлын хэмжээг 5 минут тутамд нэг удаа шалгана.
  • Аль ч бүлэгт 100 минутын турш 30-аас дээш тооны хоцрогдол гарах үед дохио өгөх гохыг агуулна. Триггерийг илрүүлсэн бүлгүүдэд автоматаар нэмдэг прототип гэж тодорхойлсон.
  • Хуулбарлах бүлэг тус бүрийн хоцрогдлын хэмжээний графикийг бүтээдэг.

Та Zabbix 2.2-ийн загварыг татаж авах боломжтой энд.

Үр дүн

Загварыг Zabbix руу оруулж, шаардлагатай эрх бүхий бүртгэл үүсгэсний дараа бид зөвхөн DFSR-д хяналт тавихыг хүссэн файлын серверүүд рүү скриптүүдийг хуулж, тэдгээрийн агентын тохиргоонд хоёр мөр нэмж, Zabbix агент үйлчилгээг дахин эхлүүлэх хэрэгтэй болно. , үүнийг хүссэн бүртгэлээр ажиллуулахаар тохируулна уу. DFSR мониторингийн хувьд өөр гарын авлагын тохиргоо шаардлагагүй.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх