kirish
DFS dan ma'lumotlarga yagona kirish nuqtasi sifatida va ma'lumotlar markazlari va filial serverlari o'rtasida ma'lumotlarni replikatsiya qilish uchun DFSR dan foydalanadigan juda katta va taqsimlangan infratuzilma bilan ushbu replikatsiya holatini kuzatish haqida savol tug'iladi.
Tasodifan, biz DFSR-dan foydalanishni boshlaganimizdan so'ng, biz mavjud turli xil vositalarning hayvonot bog'ini almashtirish va infratuzilma monitoringini yanada ma'lumotli, to'liq va mantiqiy shaklga keltirish maqsadida Zabbix-ni amalga oshirishni boshladik. DFS replikatsiyasini kuzatish uchun Zabbix-dan foydalanish haqida gaplashamiz.
Avvalo, uning holatini kuzatish uchun DFS replikatsiyasi haqida qanday ma'lumotlarni olish kerakligini hal qilishimiz kerak. Eng muhim ko'rsatkich - bu orqada qolish. U replikatsiya guruhining boshqa a'zolari bilan sinxronlashtirilmagan fayllarni o'z ichiga oladi. Yordamchi dastur yordamida uning hajmini ko'rishingiz mumkin dfsrdiag, DFSR roli bilan o'rnatilgan. Oddiy replikatsiya holatida kechikish hajmi nolga yaqinlashishi kerak. Shunga ko'ra, orqada qolgan fayllarning ko'pligi replikatsiya bilan bog'liq muammolarni ko'rsatadi.
Endi masalaning amaliy tomoni haqida.
Zabbix Agent orqali orqada qoladigan ish hajmini kuzatish uchun bizga kerak bo'ladi:
- Chiqishni tahlil qiladigan skript dfsrdiag Zabbix-ga yakuniy zaxira hajmi qiymatlarini taqdim etish,
- Serverda nechta replikatsiya guruhlari mavjudligini, ular qanday papkalarni ko'paytirishini va ularga qanday boshqa serverlar kiritilganligini aniqlaydigan skript (biz bularning barchasini har bir server uchun Zabbix-ga qo'lda kiritishni xohlamaymiz, to'g'rimi?),
- Monitoring serveridan keyingi qo'ng'iroq qilish uchun ushbu skriptlarni Zabbix agenti konfiguratsiyasiga UserParameter sifatida qo'shish,
- Zabbix agent xizmatini orqada qolgan ma'lumotlarni o'qish huquqiga ega foydalanuvchi sifatida ishga tushirish,
- Zabbix uchun shablon, unda guruhlarni aniqlash, olingan ma'lumotlarni qayta ishlash va ular bo'yicha ogohlantirishlarni berish sozlanadi.
Skript tahlilchisi
Tahlil qiluvchini yozish uchun men Windows Serverning barcha versiyalarida mavjud bo'lgan eng universal til sifatida VBS ni tanladim. Skriptning mantig'i oddiy: u replikatsiya guruhi nomini, replikatsiya qilingan papkani, jo'natuvchi va qabul qiluvchi serverlar nomlarini buyruq qatori orqali oladi. Keyinchalik bu parametrlar o'tkaziladi dfsrdiag, va uning chiqishiga qarab u ishlab chiqaradi:
Fayllar soni - agar zaxira ro'yxatida fayllar mavjudligi haqida xabar olingan bo'lsa,
0 - agar orqada qoldirilgan fayllar yo'qligi to'g'risida xabar olingan bo'lsa ("Boshlash yo'q"),
-1 - xato xabari olingan bo'lsa dfsrdiag so'rovni bajarishda ("[XATO]").
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
Kashfiyot skripti
Zabbix serverda mavjud bo'lgan barcha replikatsiya guruhlarini aniqlashi va so'rov uchun zarur bo'lgan barcha parametrlarni (papka nomi, qo'shni serverlarning nomlari) bilib olish uchun biz, birinchi navbatda, ushbu ma'lumotni olishimiz, ikkinchidan, uni taqdim etishimiz kerak. Zabbix uchun tushunarli formatda. Kashfiyot vositasi tushunadigan format quyidagicha ko'rinadi:
"data":[
{
"{#GROUP}":"Share1",
"{#FOLDER}":"Folder1",
"{#SENDING}":"Server1",
"{#RECEIVING}":"Server2"}
...
"{#GROUP}":"ShareN",
"{#FOLDER}":"FolderN",
"{#SENDING}":"Server1",
"{#RECEIVING}":"ServerN"}]}
Bizni qiziqtirgan ma'lumotni olishning eng oson yo'li WMI orqali uni DfsrReplicationGroupConfig ning tegishli bo'limlaridan tortib olishdir. Natijada, WMI ga so'rov yaratadigan va guruhlar, ularning papkalari va serverlari ro'yxatini kerakli formatda chiqaradigan skript tug'ildi.
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
Qabul qilaman, skript kodning nafisligi bilan porlamasligi mumkin va undagi ba'zi narsalarni soddalashtirish mumkin, lekin u o'zining asosiy vazifasini bajaradi - Zabbix tomonidan tushunarli formatda replikatsiya guruhlari parametrlari haqida ma'lumot beradi.
Zabbix agenti konfiguratsiyasiga skriptlar qo'shish
Bu erda hamma narsa juda oddiy. Agent konfiguratsiya faylining oxiriga quyidagi qatorlarni qo'shing:
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"
Albatta, biz skriptlar mavjud bo'lgan joylarga yo'llarni moslashtiramiz. Men ularni agent o'rnatilgan papkaga joylashtirdim.
O'zgartirishlar kiritilgandan so'ng, Zabbix agent xizmatini qayta ishga tushiring.
Zabbix Agent xizmati ishlaydigan foydalanuvchini o'zgartirish
orqali ma'lumot olish uchun dfsrdiag, yordamchi dastur replikatsiya guruhi a'zolarini yuborish va qabul qilish uchun ma'muriy huquqlarga ega bo'lgan hisob ostida ishlashi kerak. Tizim hisobi ostida sukut bo'yicha ishlaydigan Zabbix agent xizmati bunday so'rovni bajara olmaydi. Men domenda alohida hisob yaratdim, unga kerakli serverlarda ma'muriy huquqlarni berdim va ushbu serverlarda uning ostida ishlash uchun xizmatni sozladim.
Siz boshqa yo'l bilan borishingiz mumkin: chunki dfsrdiag, aslida, bir xil WMI orqali ishlaydi, keyin siz foydalanishingiz mumkin
Monitoring shabloni
Olingan ma'lumotlarga asoslanib, men quyidagi shablonni yaratdim:
- Replikatsiya guruhlarini soatiga bir marta avtomatik aniqlashni ishga tushiradi,
- Har 5 daqiqada bir marta har bir guruh uchun to'lov hajmini tekshiradi,
- 100 daqiqa davomida har qanday guruh uchun kechikish hajmi 30 dan ortiq bo'lsa, ogohlantirish chiqaradigan triggerni o'z ichiga oladi. Trigger aniqlangan guruhlarga avtomatik ravishda qo'shiladigan prototip sifatida tavsiflanadi,
- Har bir replikatsiya guruhi uchun kechikish hajmining grafiklarini tuzadi.
Zabbix 2.2 uchun shablonni yuklab olishingiz mumkin
Xulosa
Shablonni Zabbix-ga import qilgandan va kerakli huquqlarga ega hisob qaydnomasini yaratgandan so'ng, biz faqat skriptlarni DFSR uchun kuzatmoqchi bo'lgan fayl serverlariga nusxalashimiz, ulardagi agent konfiguratsiyasiga ikkita qator qo'shishimiz va Zabbix agent xizmatini qayta ishga tushirishimiz kerak. , uni kerakli hisob sifatida ishlatish uchun sozlash. DFSR monitoringi uchun boshqa qo'lda sozlashlar talab qilinmaydi.
Manba: www.habr.com