中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

SQL Server自動(dòng)化運(yùn)維系列——監(jiān)控磁盤(pán)剩余空間及SQL Server錯(cuò)誤日志(Power Shell)
來(lái)源:易賢網(wǎng) 閱讀:1271 次 日期:2015-04-03 11:31:10
溫馨提示:易賢網(wǎng)小編為您整理了“SQL Server自動(dòng)化運(yùn)維系列——監(jiān)控磁盤(pán)剩余空間及SQL Server錯(cuò)誤日志(Power Shell)”,方便廣大網(wǎng)友查閱!

需求描述

在我們的生產(chǎn)環(huán)境中,大部分情況下需要有自己的運(yùn)維體制,包括自己健康狀態(tài)的檢測(cè)等。如果發(fā)生異常,需要提前預(yù)警的,通知形式一般為發(fā)郵件告知。

在所有的自檢流程中最基礎(chǔ)的一個(gè)就是磁盤(pán)剩余空間檢測(cè)。作為一個(gè)高效的DBA不可能每天都要上生產(chǎn)機(jī)上查看磁盤(pán)剩余或者直到磁盤(pán)無(wú)剩余空間報(bào)錯(cuò)后才采取擴(kuò)容措施。

當(dāng)然,作為微軟的服務(wù)器有著自己的監(jiān)控軟件:SCCM(System Center Configuration Manager)。但本篇就介紹如果通過(guò)Power shell實(shí)現(xiàn)狀態(tài)值監(jiān)控,相比SCCM更輕量級(jí)和更具靈活性。

本篇實(shí)現(xiàn)

1、每天檢測(cè)磁盤(pán)剩余空間大小,如果剩余空間超過(guò)了閥值,則發(fā)郵件告訴管理員

2、每天檢測(cè)SQL Server運(yùn)行的錯(cuò)誤日志(Window平臺(tái)的錯(cuò)誤日志),形成郵件附件發(fā)送給管理員

監(jiān)控腳本

首先我們來(lái)解決第一個(gè)問(wèn)題,關(guān)于磁盤(pán)剩余空間的問(wèn)題,對(duì)于磁盤(pán)的監(jiān)控的存在兩個(gè)需要解決的問(wèn)題:

<1>一般監(jiān)控我們需要監(jiān)控很多臺(tái)服務(wù)器的磁盤(pán),所以對(duì)于服務(wù)器的量控制我們需要生成一個(gè)配置文件。

<computernames>

<computername>

wuxuelei-pc

</computername>

</computernames>

配置文件名字:computername.xml,這樣就解決很多服務(wù)器的問(wèn)題,只需要在配置文件中增加就可以,因?yàn)槲以诒镜販y(cè)試,所以就配置了我的本地電腦。

<2>對(duì)于服務(wù)器的磁盤(pán)監(jiān)控也需要定義一個(gè)閥值,用來(lái)動(dòng)態(tài)改變,用來(lái)定義生成預(yù)警的閥值。簡(jiǎn)單點(diǎn)就是定義我們檢測(cè)的磁盤(pán)剩余空間到了多少了就自動(dòng)發(fā)郵件提醒。

<Counters>

<Counter alter = "10" operator = "gt" >C:</Counter>

<Counter alter = "10" operator = "gt" >D:</Counter>

<Counter alter = "10" operator = "gt" >E:</Counter>

<Counter alter = "10" operator = "gt" >F:</Counter>

</Counters>

文件名為:alter_disk.xml,我定義了四個(gè)盤(pán)符:C: D: E: F:

當(dāng)以上四個(gè)盤(pán)符那個(gè)盤(pán)符少于10G了就生成郵件預(yù)警。

實(shí)現(xiàn)代碼如下:

$server = "(local)"

$uid = "sa"

$db="master"

$pwd="password"

$mailprfname = "TestMail"

$recipients = ""

$subject = "老大,快去看看這個(gè)服務(wù)器的磁盤(pán)空間馬上就不夠了!"

$computernamexml = "F:PowerShell發(fā)送郵件computername.xml"

$alter_xml = "F:PowerShell發(fā)送郵件alter_disk.xml"

function GetServerName($xmlpath)

{

$xml = [xml] (Get-Content $xmlpath)

$return = New-Object Collections.Generic.List[string]

for($i = 0;$i -lt $xml.computernames.ChildNodes.Count;$i++)

{

if ( $xml.computernames.ChildNodes.Count -eq 1)

{

$cp = [string]$xml.computernames.computername

}

else

{

$cp = [string]$xml.computernames.computername[$i]

}

$return.Add($cp.Trim())

}

$return

}

function GetAlterCounter($xmlpath)

{

$xml = [xml] (Get-Content $xmlpath)

$return = New-Object Collections.Generic.List[string]

$list = $xml.counters.Counter

$list

}

function CreateAlter($message)

{

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection

$CnnString ="Server = $server; Database = $db;User Id = $uid; Password = $pwd"

$SqlConnection.ConnectionString = $CnnString

$CC = $SqlConnection.CreateCommand();

if (-not ($SqlConnection.State -like "Open")) { $SqlConnection.Open() }

$cc.CommandText=

" EXEC msdb..sp_send_dbmail

@profile_name = '$mailprfname'

,@recipients = '$recipients'

,@body = '$message'

,@subject = '$subject'

"

$cc.ExecuteNonQuery()|out-null

$SqlConnection.Close();

}

$names = GetServerName($computernamexml)

$pfcounters = GetAlterCounter($alter_xml)

foreach($cp in $names)

{

$p = New-Object Collections.Generic.List[string]

$report = ""

foreach ($pfc in $pfcounters)

{

$b = ""

$counter ="\"+$cp+"LogicalDisk("+$pfc.get_InnerText().Trim()+")% Free Space"

$p.Add($counter)

}

$count = Get-Counter $p

#Write-Host $count.CounterSamples.Count;

for ($i = 0; $i -lt $count.CounterSamples.Count; $i++)

{

$v = $count.CounterSamples.Get($i).CookedValue

$pfc = $pfcounters[$i]

#$pfc.get_InnerText()

$b = ""

$lg = ""

if ($pfc.operator -eq "gt")

{

if( $v -le [double]$pfc.alter)

{

$b = "alter"

$lg = "Less Than"

}

if($b -eq "alter")

{

$path = "機(jī)器名:"+$cp+"; 盤(pán)符:"+$pfc.get_InnerText()

$diskFree="; 當(dāng)前剩余空間為:"+[math]::truncate($v).ToString()+"G;"

$aler=" 超過(guò)了你預(yù)定的閥值:"+$pfc.alter.Trim()+"G;速度去處理吧!"

$item = "{0} {1} {2}" -f $path,$diskFree,$aler

$report += $item + "`n"

}

}

}

if($report -ne "")

{

#生產(chǎn)警告 參數(shù) 計(jì)數(shù)器,閥值,當(dāng)前值

CreateAlter $report

}

}

通過(guò)如上腳本,生成跑批任務(wù),就可以自動(dòng)的檢測(cè)磁盤(pán)剩余空間了,而不需要我們?nèi)ナ謩?dòng)檢測(cè)了。

上述代碼中,有兩個(gè)技術(shù)點(diǎn):1、需要自己配置SQL Server郵件代理;2、需要自己配置跑批計(jì)劃,方法自己網(wǎng)上搜,很簡(jiǎn)單。

效果圖如下

名單

名單2

嘿…看到上面的郵件,就是需要聯(lián)系硬件架構(gòu)師,讓其擴(kuò)容或者清除冗余數(shù)據(jù)的時(shí)候了。

在上面的腳本中,的確只有我的F盤(pán)符超了閥值,所以警報(bào)了!

名單3

其次,我們來(lái)解決第二個(gè)問(wèn)題,關(guān)于SQL Server錯(cuò)誤日志的問(wèn)題,作為日常的DBA管理系統(tǒng)中,查看SQL Server錯(cuò)誤日志是一種常用的方式。當(dāng)然,如果系統(tǒng)運(yùn)行正常,不會(huì)產(chǎn)生錯(cuò)誤日志,一單出現(xiàn)問(wèn)題,就會(huì)生成錯(cuò)誤日志,但是對(duì)于SQL Server錯(cuò)誤日志會(huì)產(chǎn)生很多條,為了方便查找,我們會(huì)讓其生成一個(gè)文本文件。

以郵件附件的形式,告知管理員,然后管理員就可以通過(guò)日志文件快速的定位問(wèn)題的源頭。

同樣,本篇也是通過(guò)computername.xml文件,對(duì)多臺(tái)服務(wù)器進(jìn)行錯(cuò)誤日志進(jìn)行篩選

腳本很簡(jiǎn)單,如下

$server = "(local)"

$uid = "sa"

$db="master"

$pwd="password"

$mailprfname = "TestMail"

$recipients = ""

$subject = "老大,快去看看這個(gè)服務(wù)器的SQL Server出問(wèn)題了!"

$Info="附件為SQL Server錯(cuò)誤日志....."

$computernamexml = "F:PowerShell發(fā)送郵件computername.xml"

function GetServerName($xmlpath)

{

$xml = [xml] (Get-Content $xmlpath)

$return = New-Object Collections.Generic.List[string]

for($i = 0;$i -lt $xml.computernames.ChildNodes.Count;$i++)

{

if ( $xml.computernames.ChildNodes.Count -eq 1)

{

$cp = [string]$xml.computernames.computername

}

else

{

$cp = [string]$xml.computernames.computername[$i]

}

$return.Add($cp.Trim())

}

$return

}

function GetAlterCounter($xmlpath)

{

$xml = [xml] (Get-Content $xmlpath)

$return = New-Object Collections.Generic.List[string]

$list = $xml.counters.Counter

$list

}

function CreateAlter($message)

{

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection

$CnnString ="Server = $server; Database = $db;User Id = $uid; Password = $pwd"

$SqlConnection.ConnectionString = $CnnString

$CC = $SqlConnection.CreateCommand();

if (-not ($SqlConnection.State -like "Open")) { $SqlConnection.Open() }

$cc.CommandText=

" EXEC msdb..sp_send_dbmail

@profile_name = '$mailprfname'

,@recipients = '$recipients'

,@body = '$Info'

,@subject = '$subject'

,@file_attachments='$message'

"

$cc.ExecuteNonQuery()|out-null

$SqlConnection.Close();

}

$names = GetServerName($computernamexml)

foreach($cp in $names)

{

#輸出系統(tǒng)日志中某個(gè)特定程序的日志到文件,比如SQL Server,然后選擇錯(cuò)誤類(lèi)型為Error

Get-EventLog -ComputerName $cp application | where-object{$_.source-like "MSSQLSERVER"} | where-object{$_.entryType -eq "error"} >F:PowerShell$cp+"SQLErrLog.txt"

#生產(chǎn)警告 參數(shù) 計(jì)數(shù)器,閥值,當(dāng)前值

CreateAlter F:PowerShell$cp+"SQLErrLog.txt"

}

效果圖如下

名單4

直接下載附件,然后查看錯(cuò)誤日志就可以了。

該錯(cuò)誤日志還是挺詳細(xì)的,發(fā)生時(shí)間,錯(cuò)誤明細(xì)等。

名單5

(查看大圖)

當(dāng)然,上述腳本還欠缺一點(diǎn)邏輯:

比如:篩選一段時(shí)間周期的錯(cuò)誤日志、或者只查看上次啟動(dòng)之后的錯(cuò)誤日志等。

這些邏輯加上也不麻煩,本身PowerShell實(shí)現(xiàn)起來(lái)就很簡(jiǎn)單。這里就不展開(kāi)了,自己靈活實(shí)現(xiàn)。

但是,在我們?nèi)粘5姆治鲋校谌罩居涗浂嗟臅r(shí)候,用文本分析的方式還是比較慢,通常用Excel查看效果會(huì)好很多。

這個(gè)實(shí)現(xiàn)也不麻煩,只需要更改腳本如下:

#輸出系統(tǒng)日志中某個(gè)特定程序的日志到文件,比如SQL Server,然后選擇錯(cuò)誤類(lèi)型為Error

#Get-EventLog -ComputerName $cp application | where-object{$_.source-like "MSSQLSERVER"} | where-object{$_.entryType -eq "error"} >F:PowerShell$cp+"SQLErrLog.txt"

#輸出系統(tǒng)日志中某個(gè)特定程序的日志到文件,比如SQL Server,然后選擇錯(cuò)誤類(lèi)型為Error,支持Excel打開(kāi)

Get-EventLog -ComputerName $cp application | where-object{$_.source-like "MSSQLSERVER"} | where-object{$_.entryType -eq "error"} | Export-Clixml –Path F:PowerShell$cp+"SQLErrLog.xml" –Depth 2

#生產(chǎn)警告 參數(shù) 計(jì)數(shù)器,閥值,當(dāng)前值

CreateAlter F:PowerShell$cp+"SQLErrLog.xml"

我們下載生成的日志文件,然后打開(kāi)Excel,然后選擇:數(shù)據(jù)——>從Xml文件導(dǎo)入:

名單6

(查看大圖)

如此分析就方便多了。

結(jié)語(yǔ)

本篇就列舉了一下利用PowerShell實(shí)現(xiàn)自動(dòng)化運(yùn)維和檢測(cè)。算作拋磚引玉了吧,自己另有需求可以自己靈活實(shí)現(xiàn)。

關(guān)于SQL Server自動(dòng)化運(yùn)維和檢測(cè)的內(nèi)容很廣泛,其中很多都是從日常的經(jīng)驗(yàn)中出發(fā),一步步的從手動(dòng)到自動(dòng)的過(guò)程。

后面的文章,我們將會(huì)更深入關(guān)于SQL Server的自動(dòng)化優(yōu)化運(yùn)維進(jìn)行分析。有興趣的童鞋,可以提前關(guān)注。

更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄

更多信息請(qǐng)查看網(wǎng)頁(yè)制作
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢(xún)回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢(xún)?yōu)闇?zhǔn)!
相關(guān)閱讀網(wǎng)頁(yè)制作

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類(lèi)型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢(xún) | 簡(jiǎn)要咨詢(xún)須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專(zhuān)用圖標(biāo)
聯(lián)系電話(huà):0871-65099533/13759567129 獲取招聘考試信息及咨詢(xún)關(guān)注公眾號(hào):hfpxwx
咨詢(xún)QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專(zhuān)用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
国产精品观看| 欧美另类99xxxxx| 亚洲字幕一区二区| 亚洲无亚洲人成网站77777| 午夜精品理论片| 久久婷婷国产综合国色天香| 欧美人成网站| 国内精品久久久久久久97牛牛| 亚洲激情一区二区三区| 亚洲欧美日韩国产一区| 久久人人97超碰国产公开结果| 欧美福利影院| 欧美国产先锋| 国产日韩在线一区二区三区| 国产日韩视频| 日韩视频中文| 欧美一区1区三区3区公司| 久久综合久久久久88| 欧美成人精品| 国产一区在线观看视频| 夜夜嗨av一区二区三区四区| 欧美一级理论片| 欧美日本在线视频| 国产欧美日韩综合| 中文在线一区| 欧美精品一区二区三区蜜桃| 国产香蕉97碰碰久久人人| 亚洲美女视频在线观看| 久久久久国产免费免费| 欧美日韩亚洲天堂| 亚洲国产美女精品久久久久∴| 欧美一区二区国产| 国产精品国内视频| 亚洲欧美日韩在线一区| 欧美日本精品| 最近中文字幕日韩精品| 午夜欧美大尺度福利影院在线看| 欧美精品aa| 狠狠色噜噜狠狠色综合久| 欧美亚洲网站| 欧美日韩一区三区| 亚洲国产精品成人综合色在线婷婷 | 亚洲自拍16p| 久久精品人人做人人爽电影蜜月| 欧美激情一区在线| 亚洲高清中文字幕| 每日更新成人在线视频| 国产精品视屏| 亚洲国产一区二区三区高清| 久久久99精品免费观看不卡| 欧美性生交xxxxx久久久| 亚洲黄色免费| 欧美母乳在线| 亚洲视频在线观看| 国产精品欧美日韩| 欧美一级精品大片| 国语自产精品视频在线看抢先版结局 | 国产伪娘ts一区| 午夜精品久久久久久久99水蜜桃| 国产精品日韩在线观看| 欧美一区影院| 激情一区二区| 欧美第一黄色网| 亚洲人成艺术| 国产精品hd| 欧美一二三视频| 精品99视频| 欧美黄污视频| 亚洲一区二区在线免费观看视频| 国产欧美日韩一级| 久久久久一区| 99精品国产99久久久久久福利| 欧美性猛交xxxx乱大交蜜桃| 午夜一区在线| 亚洲电影在线| 国产精品久久久久av免费| 欧美在线播放一区| 亚洲黄色一区| 欧美国产三级| 欧美在线免费播放| 亚洲激情在线视频| 好看的av在线不卡观看| 欧美专区日韩专区| 国产亚洲欧美日韩美女| 欧美精品二区三区四区免费看视频| 国产精品免费一区二区三区在线观看| 欧美视频免费在线观看| 亚洲欧美日韩国产综合精品二区| 国产在线拍偷自揄拍精品| 久热精品视频在线观看一区| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲一区一卡| 国产自产2019最新不卡| 欧美风情在线观看| 午夜欧美大片免费观看| 亚洲国产精品久久91精品| 欧美午夜精品久久久| 久久精品人人做人人综合| 亚洲精品欧美| 国产综合色一区二区三区| 欧美不卡视频一区发布| 在线综合视频| 欧美成人一品| 久久综合久久久久88| 国产日本欧美一区二区| 模特精品在线| 先锋亚洲精品| 99国产精品久久久久久久久久| 国产亚洲欧洲一区高清在线观看| 欧美成在线视频| 久久国产主播精品| 在线视频欧美日韩| 在线观看国产成人av片| 国产精品永久| 欧美日韩一区二区在线| 美女主播一区| 亚洲欧美日本国产专区一区| 亚洲精品免费一区二区三区| 黄色精品一区二区| 国产精品羞羞答答xxdd| 欧美日韩在线综合| 欧美高清免费| 久久久国产精彩视频美女艺术照福利 | 国产精品色网| 欧美日韩中文另类| 欧美高清视频在线| 美女主播一区| 裸体丰满少妇做受久久99精品| 性欧美大战久久久久久久久| 亚洲性人人天天夜夜摸| 一本色道久久88亚洲综合88| 亚洲欧洲精品一区二区| 亚洲欧洲一区二区三区在线观看| 黄色成人av网站| 狠狠色综合色区| 黄色成人av网站| 1024精品一区二区三区| 亚洲国产精品欧美一二99| 怡红院精品视频| 在线精品视频一区二区| 在线日韩中文| 亚洲精选久久| 中文国产亚洲喷潮| 亚洲一区二区三区在线观看视频| 亚洲无线视频| 性欧美办公室18xxxxhd| 久久精品理论片| 久久视频在线免费观看| 久久一区二区三区国产精品 | 免费日韩一区二区| 欧美不卡一卡二卡免费版| 欧美成人午夜激情| 欧美极品在线播放| 欧美日韩国产综合久久| 欧美性猛交xxxx乱大交退制版| 欧美色中文字幕| 国产精品一区二区男女羞羞无遮挡 | 国产精品精品视频| 国产精品手机视频| 国产日韩一级二级三级| 激情文学一区| 99精品久久| 性娇小13――14欧美| 久久亚洲精品网站| 欧美另类一区二区三区| 国产精品男女猛烈高潮激情| 黄色成人精品网站| 日韩视频免费大全中文字幕| 中文亚洲字幕| 久久国产精品99国产精| 欧美mv日韩mv亚洲| 欧美天堂亚洲电影院在线观看| 国产欧美精品在线播放| 亚洲高清不卡在线| 亚洲一级一区| 裸体歌舞表演一区二区| 欧美片第一页| 国产乱码精品一区二区三区av| 在线国产精品播放| 亚洲午夜免费福利视频| 久久久免费精品| 欧美日韩亚洲一区二区三区| 国产欧美日韩精品专区| 黄网动漫久久久| 一区二区三区欧美视频| 欧美中文字幕第一页| 欧美精品久久久久久久久老牛影院| 国产精品视频久久久| 亚洲二区三区四区| 午夜视频一区| 欧美国产欧美综合 | 亚洲日韩成人| 欧美一区二区三区免费在线看| 久久久一本精品99久久精品66| 欧美日韩亚洲国产精品| 激情综合色综合久久综合| 亚洲在线观看视频| 欧美mv日韩mv国产网站| 国产午夜精品久久| 亚洲五月六月|