Танилцуулга
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