Windows Server 2008 पर कम डिस्क स्थान अलर्ट सेट करना


29

मैं सोच रहा था कि क्या विंडोज सर्वर 2008 पर ई-मेल अलर्ट को ट्रिगर करने का एक आसान तरीका है जब कोई तार्किक डिस्क विभाजन अंतरिक्ष पर कम हो जाता है। मेरे पास 2 SQL सर्वर हैं जो DB लॉग फ़ाइलों के कारण डिस्क स्थान से बाहर चलने के करीब आए हैं।

धन्यवाद, रेयान


1
यदि आपको किसी भी महत्वपूर्ण अवधि के लिए पूर्ण लॉग्स को इधर-उधर रखने की आवश्यकता नहीं है, तो डेटाबेस को सबसे बड़े लॉग के साथ 'सिंपल' बैकअप मोड में सेट करें और एक पूर्ण बैकअप होने के तुरंत बाद आपकी रखरखाव योजना उन्हें छोटा कर दें। यह आपके सवाल का जवाब नहीं देता है, लेकिन अगर आपकी स्थिति इसकी अनुमति देती है, तो ड्राइव को पहले स्थान पर पूरा रखने में मदद कर सकती है।
जस्टिन स्कॉट

जानकारी के लिए धन्यवाद। मैंने SQL लॉग फ़ाइलों को कम करने और उन्हें किसी भी बड़े होने से रोकने के लिए एक अतिरिक्त बैकअप कार्य कार्यान्वित किया। लेकिन मैं सिर्फ मामले में किसी तरह का अलर्ट लगाना चाहूंगा। धन्यवाद।
rmwetmore

हम सभी क्लाइंट और सर्वर पर कम डिस्क स्थान के बारे में सचेत करने के लिए स्पिकवर्क का उपयोग करते हैं।

जवाबों:


37

कम डिस्क स्थान ई-मेल अलर्ट भेजने के लिए विंडोज सर्वर 2008 प्राप्त करने का एक सरल तरीका टास्क शेड्यूलर और सिस्टम लॉग का उपयोग करना है। यदि मुक्त स्थान HKLM \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters \ DiskSpaceThreshold में निर्दिष्ट प्रतिशत से नीचे आता है , तो एक ईवेंट को सिस्टम लॉग में रिकॉर्ड किया जाता है जो ई-मेल संदेश भेजने के लिए कार्य को ट्रिगर कर सकता है।

  1. कार्य शेड्यूलर खोलें और एक नया कार्य बनाएँ।
  2. कार्य के लिए एक नाम दर्ज करें, "भागो कि क्या उपयोगकर्ता लॉग ऑन है या नहीं" का चयन करें, और "पासवर्ड स्टोर न करें।"
  3. ट्रिगर टैब पर एक नया ट्रिगर जोड़ें।
  4. "कार्य प्रारंभ करें" बॉक्स में "एक घटना पर" चुनें।
  5. "सिस्टम", "स्रोत" और इवेंट आईडी से "2013" के लिए लॉग इन करें।
  6. क्रिया टैब पर एक नई क्रिया जोड़ें।
  7. "ई-मेल भेजें" के लिए एक्शन सेट करें और बाकी सेटिंग्स को उचित रूप से भरें।
  8. सिस्टम लॉग में कम डिस्क स्थान घटना दर्ज होने पर कॉन्फ़िगर करने के लिए, रजिस्ट्री संपादक खोलें, HKLM \ SYSTEM \ CurrentControlSet \ Services \ LanmanServer \ Parameters पर नेविगेट करें और "DiskSpace.hreshold" नामक DWORD मान जोड़ें, जो इसे वांछित प्रतिशत पर सेट कर रहा है। जब प्रविष्टि मौजूद नहीं है, तो डिफ़ॉल्ट मान 10 है।

6
क्या यह केवल सिस्टम ड्राइव (आमतौर पर C ड्राइव) के लिए ट्रिगर होता है? क्या होगा अगर मेरे पास 2-3 ड्राइवर हैं और मैं उनमें से प्रत्येक पर अलर्ट सेटअप करना चाहता हूं।
वेद

इवेंट 2013 को किसी भी विभाजन के लिए लॉग किया गया है जो परिभाषित सीमा से नीचे आता है - ध्यान दें कि यह केवल विभाजन के अनुसार एक बार लॉग इन किया जाता है, जब तक कि डिस्क स्थान दहलीज से ऊपर नहीं बढ़ता है या सर्वर रिबूट होता है। support.microsoft.com/kb/112509
paulH

2
विंडोज़ सर्वर के नए संस्करणों में, "ई-मेल भेजें" कार्रवाई को हटा दिया गया है। इसके बजाय, आप "स्टार्ट ए प्रोग्राम" एक्शन का उपयोग कर सकते हैं, powershellकार्यक्रम के लिए और तर्क के लिए निम्नलिखित भरें :-command &{send-mailmessage -from server@domain.org -to notify@domain.com -subject 'Alert from Task Scheduler' -body 'This is an automated message from a task scheduled on the server. Testing powershell email.' -smtpserver x.x.x.x}
बाओडड

1

मैंने अपने (अलग) नैगियोस उदाहरण के लिए स्निप के माध्यम से डिस्क स्पेस मॉनिटरिंग को जोड़ा।


हमारे पास हमारे सामान्य निगरानी पैकेज के भाग के रूप में अच्छी तरह से डिस्क मॉनिटरिंग है, हालांकि हम IPMonitor का उपयोग करते हैं जो हर कुछ मिनट में डिस्क को चबाता है।
जस्टिन स्कॉट

अभी मैं एक अलग मॉनिटरिंग सिस्टम (IPMonitor) की तरह देख रहा हूं, लेकिन इस बीच मुझे अलर्ट करने के लिए मैं सर्वर पर कुछ रखना चाहूंगा। धन्यवाद।
rmwetmore

1

आप हर दिन एक शेड्यूल कार्य के रूप में एक पॉवरशेल स्क्रिप्ट क्यों नहीं चलाते हैं? यदि स्क्रिप्ट को डिस्क की खाली जगह 10% से कम लगती है, तो यह आपको एक ईमेल या सूचना भेजेगा।

यहाँ डिस्क के मुक्त स्थान की जाँच के लिए एक उदाहरण कोड है:

Get-Content ForEach-Object {$ ; Get- WMIObject –computername $ Win32_LogicalDisk -filter "DriveType = 3" | ForEach-Object {$ .DeviceID; $ .FreeSpace / 1GB}}


1
यह स्क्रिप्ट काम नहीं करती है। मुझे त्रुटि संदेश मिलता है कि कोई स्थिति पैरामीटर सेट नहीं है।
रफेल लूथिगर

1

गलत PowerShell सिंटैक्स के कारण दोनों उदाहरण काम नहीं करते हैं। निम्न कोड वर्तमान होस्ट के वॉल्यूम आकारों (पावरशेल 5.0 का उपयोग करके) को सूचीबद्ध करता है:

Get-WmiObject win32_logicalDisk -filter "DriveType=3" | %{ $_.DeviceID; $_.FreeSpace/1GB }

निम्नलिखित कोड सूचियों में सूचीबद्ध मेजबान की मात्रा आकार server.txt :

Get-Content server.txt | %{ Get-WMIObject –computername $_ Win32_LogicalDisk -filter "DriveType=3" | %{ $_.DeviceID; $_.FreeSpace/1GB } }

पक्षीय लेख

ध्यान दें कि बाहरी स्थान धारक $_सर्वर पतों की गणना करता है जबकि आंतरिक स्थान धारक $_उपकरणों की गणना करता है। यह PowerShell newbies के लिए एक लगातार getcha है। यदि आप आंतरिक लूप में सर्वर पते का उपयोग करना चाहते हैं, तो आपको इसे बाहरी लूप में एक नए चर पर असाइन करना होगा।

यहां उपयोग किया जाने वाला फोरम सॉफ्टवेयर त्रुटिपूर्ण है। पोस्ट प्रीव्यू में, यह $_एक $_कोड के रूप में बच जाने पर भी सही ढंग से प्रदर्शित होता है । लेकिन अंतिम पोस्ट अंडरस्कोर को हटा देता है, इस प्रकार पावरशेल उदाहरणों को गलत बनाता है।


मैं पहली कमांड का उपयोग करके ड्राइव स्पेस को शेष देख सकता हूं: Get-WmiObject win32_logicalDisk -filter "DriveType=3" | %{ $_.DeviceID; $_.FreeSpace/1GB }लेकिन एक पीएस नौसिखिया होने के नाते, मुझे यह समझ में नहीं आता है कि अगले चरण में इसे स्वचालित करने के लिए क्या होगा (उदाहरण के लिए, पहला कमांड से आउटपुट कैसे लेगा और यदि ड्राइव कुछ स्पेस थ्रेशोल्ड से नीचे था, ईमेल भेजने और ईमेल करने के लिए एक PS कमांड को वायर करें। मैं देखता हूं कि ईमेल का उपयोग करके एक पोस्ट से बोआड द्वारा भेजा जा सकता है -command &{send-mailmessage ...लेकिन यह सुनिश्चित करने के लिए कि लॉजिक के साथ आपका वायर कैसे वायरल होता है जो उस स्पेस को निर्देशित करता है जिसे मेल भेजने की जरूरत है । Thx।
जेफ मर्गलर

0

आप अपने ईमेल सर्वर का उपयोग करके ईमेल भेजने के लिए इस स्क्रिप्ट का उपयोग कर सकते हैं। बस अपने सर्वर के साथ smtp सर्वर का नाम बदलें। यदि एक ही मशीन पर है तो "लोकलहोस्ट" (smtp सर्वर फंक्शनल होना चाहिए) का उपयोग करें। स्क्रिप्ट यहाँ भी पाई जाती है: https://gallery.technet.microsoft.com/scriptcenter/Disk-Space-Report-Reports-98e64d65

स्क्रिप्ट को स्थानीय ड्राइव में सहेजे जाने के बाद, इसे आसानी से पावरशेल और परीक्षण के जरिए चलाया जा सकता है। एक बार जब स्क्रिप्ट ठीक काम करने लगती है, तो इसे विंडोज़ टास्क शेड्यूलर का उपयोग करके आवश्यकता के आधार पर रोज़ या हर घंटे चलाने के लिए निर्धारित किया जा सकता है। यह आलेख बताता है कि कार्य शेड्यूलर का उपयोग करके स्क्रिप्ट कैसे चलाना है। https://www.metalogix.com/help/Content%20Matrix%20Console/SharePoint%20Edition/002_HowTo/004_SharePointActions/012_SchedulingPowerShell.htm

############################################################################# 
#                                                                                                                                                     # 
#  Check disk space and send an HTML report as the body of an email.                                                   # 
#  Reports only disks on computers that have low disk space.                                                                 # 
#  Author: Mike Carmody                                                                                                                   # 
#  Some ideas extracted from Thiyagu's Exchange DiskspaceHTMLReport module.                                  # 
#  Date: 8/10/2011                                                          # 
#  I have not added any error checking into this script yet.                # 
#                                                                           # 
#                                                                           # 
############################################################################# 
# Continue even if there are errors 
$ErrorActionPreference = "Continue"; 

######################################################################################### 
# Items to change to make it work for you. 
# 
# EMAIL PROPERTIES 
#  - the $users that this report will be sent to. 
#  - near the end of the script the smtpserver, From and Subject. 

# REPORT PROPERTIES 
#  - you can edit the report path and report name of the html file that is the report.  
######################################################################################### 

# Set your warning and critical thresholds 
$percentWarning = 15; 
$percentCritcal = 10; 

# EMAIL PROPERTIES 
 # Set the recipients of the report. 
  $users = "YourDistrolist@company.com" 
    #$users = "You@company.com" # I use this for testing by uing my email address. 
  #$users = "you@company.com", "manager@company.com", "etc@company.com";  # can be sent to individuals. 


# REPORT PROPERTIES 
 # Path to the report 
  $reportPath = "D:\Jobs\DiskSpaceQuery\Reports\"; 

 # Report name 
  $reportName = "DiskSpaceRpt_$(get-date -format ddMMyyyy).html"; 

# Path and Report name together 
$diskReport = $reportPath + $reportName 

#Set colors for table cell backgrounds 
$redColor = "#FF0000" 
$orangeColor = "#FBB917" 
$whiteColor = "#FFFFFF" 

# Count if any computers have low disk space.  Do not send report if less than 1. 
$i = 0; 

# Get computer list to check disk space 
$computers = Get-Content "servers_c.txt"; 
$datetime = Get-Date -Format "MM-dd-yyyy_HHmmss"; 

# Remove the report if it has already been run today so it does not append to the existing report 
If (Test-Path $diskReport) 
    { 
        Remove-Item $diskReport 
    } 

# Cleanup old files.. 
$Daysback = "-7" 
$CurrentDate = Get-Date; 
$DateToDelete = $CurrentDate.AddDays($Daysback); 
Get-ChildItem $reportPath | Where-Object { $_.LastWriteTime -lt $DatetoDelete } | Remove-Item; 

# Create and write HTML Header of report 
$titleDate = get-date -uformat "%m-%d-%Y - %A" 
$header = " 
  <html> 
  <head> 
  <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'> 
  <title>DiskSpace Report</title> 
  <STYLE TYPE='text/css'> 
  <!-- 
  td { 
   font-family: Tahoma; 
   font-size: 11px; 
   border-top: 1px solid #999999; 
   border-right: 1px solid #999999; 
   border-bottom: 1px solid #999999; 
   border-left: 1px solid #999999; 
   padding-top: 0px; 
   padding-right: 0px; 
   padding-bottom: 0px; 
   padding-left: 0px; 
  } 
  body { 
   margin-left: 5px; 
   margin-top: 5px; 
   margin-right: 0px; 
   margin-bottom: 10px; 
   table { 
   border: thin solid #000000; 
  } 
  --> 
  </style> 
  </head> 
  <body> 
  <table width='100%'> 
  <tr bgcolor='#CCCCCC'> 
  <td colspan='7' height='25' align='center'> 
  <font face='tahoma' color='#003399' size='4'><strong>AEM Environment DiskSpace Report for $titledate</strong></font> 
  </td> 
  </tr> 
  </table> 
" 
 Add-Content $diskReport $header 

# Create and write Table header for report 
 $tableHeader = " 
 <table width='100%'><tbody> 
 <tr bgcolor=#CCCCCC> 
    <td width='10%' align='center'>Server</td> 
 <td width='5%' align='center'>Drive</td> 
 <td width='15%' align='center'>Drive Label</td> 
 <td width='10%' align='center'>Total Capacity(GB)</td> 
 <td width='10%' align='center'>Used Capacity(GB)</td> 
 <td width='10%' align='center'>Free Space(GB)</td> 
 <td width='5%' align='center'>Freespace %</td> 
 </tr> 
" 
Add-Content $diskReport $tableHeader 

# Start processing disk space reports against a list of servers 
  foreach($computer in $computers) 
 {  
 $disks = Get-WmiObject -ComputerName $computer -Class Win32_LogicalDisk -Filter "DriveType = 3" 
 $computer = $computer.toupper() 
  foreach($disk in $disks) 
 {         
  $deviceID = $disk.DeviceID; 
        $volName = $disk.VolumeName; 
  [float]$size = $disk.Size; 
  [float]$freespace = $disk.FreeSpace;  
  $percentFree = [Math]::Round(($freespace / $size) * 100, 2); 
  $sizeGB = [Math]::Round($size / 1073741824, 2); 
  $freeSpaceGB = [Math]::Round($freespace / 1073741824, 2); 
        $usedSpaceGB = $sizeGB - $freeSpaceGB; 
        $color = $whiteColor; 

# Set background color to Orange if just a warning 
 if($percentFree -lt $percentWarning)       
  { 
    $color = $orangeColor  

# Set background color to Orange if space is Critical 
      if($percentFree -lt $percentCritcal) 
        { 
        $color = $redColor 
       }         

 # Create table data rows  
    $dataRow = " 
  <tr> 
        <td width='10%'>$computer</td> 
  <td width='5%' align='center'>$deviceID</td> 
  <td width='15%' >$volName</td> 
  <td width='10%' align='center'>$sizeGB</td> 
  <td width='10%' align='center'>$usedSpaceGB</td> 
  <td width='10%' align='center'>$freeSpaceGB</td> 
  <td width='5%' bgcolor=`'$color`' align='center'>$percentFree</td> 
  </tr> 
" 
Add-Content $diskReport $dataRow; 
Write-Host -ForegroundColor DarkYellow "$computer $deviceID percentage free space = $percentFree"; 
    $i++   
  } 
 } 
} 

# Create table at end of report showing legend of colors for the critical and warning 
 $tableDescription = " 
 </table><br><table width='20%'> 
 <tr bgcolor='White'> 
    <td width='10%' align='center' bgcolor='#FBB917'>Warning less than 15% free space</td> 
 <td width='10%' align='center' bgcolor='#FF0000'>Critical less than 10% free space</td> 
 </tr> 
" 
  Add-Content $diskReport $tableDescription 
 Add-Content $diskReport "</body></html>" 

# Send Notification if alert $i is greater then 0 
if ($i -gt 0) 
{ 
    foreach ($user in $users) 
{ 
        Write-Host "Sending Email notification to $user" 

  $smtpServer = "MySMTPServer" 
  $smtp = New-Object Net.Mail.SmtpClient($smtpServer) 
  $msg = New-Object Net.Mail.MailMessage 
  $msg.To.Add($user) 
        $msg.From = "myself@company.com" 
  $msg.Subject = "Environment DiskSpace Report for $titledate" 
        $msg.IsBodyHTML = $true 
        $msg.Body = get-content $diskReport 
  $smtp.Send($msg) 
        $body = "" 
    } 
  } 

-1

मैंने स्क्रिप्ट तय कर ली है। उदाहरण के लिए सर्वरटेक्स्ट नाम की एक टेक्स्ट फाइल बनाएं और उसमें आईपी एड्रेस या सर्वरनेम शामिल करें और फिर आप निम्न स्क्रिप्ट को निष्पादित कर सकते हैं

Get-Content server.txt | foreach-object {Get-WmiObject -ComputerName 192.168.22.208 win32_logicalDisk -filter "DriveType = 3" | ForEach-object {$ .DeviceID; $ .FreeSpace / 1GB}}

सादर, लुइस।


यह वास्तव में मूल पोस्टिंग का जवाब नहीं है, बल्कि एक उत्तर के लिए एक सुधार है। इसके अतिरिक्त आप सर्वर में से तय मान के बजाय एक तय आईपी पते का उपयोग कर रहे हैं।
जॉन उर्फ ​​हॉट 2 युस 15

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.