2018年4月23日 星期一
08:17
其實(shí)腳本早就寫好了,但是一直沒有根據(jù)知識(shí)體系進(jìn)行拆分(我都寫到一塊去了)
需求
需要監(jiān)控Windows中計(jì)劃任務(wù)的執(zhí)行狀態(tài),主要包括上一次的執(zhí)行結(jié)果和計(jì)劃任務(wù)狀態(tài)浓领。如下圖所示。
思路
計(jì)劃任務(wù)的監(jiān)控很簡單也可以很難役首。簡單在于你可以直接監(jiān)控某任務(wù)虫啥,復(fù)雜在于自動(dòng)發(fā)現(xiàn)并進(jìn)行監(jiān)控。
和運(yùn)維人員了解了下坑赡,大家監(jiān)控的計(jì)劃任務(wù)不止一個(gè)烙如,為了省時(shí)省力,減少配置工作量毅否,所以計(jì)劃采用自動(dòng)發(fā)現(xiàn)的方式來監(jiān)控了亚铁。
上面這條的主要原因就是,端口監(jiān)控被團(tuán)隊(duì)的一個(gè)人員搞得慘不忍睹螟加。
自動(dòng)發(fā)現(xiàn)(Discover)
如何進(jìn)行自動(dòng)發(fā)現(xiàn)徘溢,這是個(gè)Zabbix的詞匯吞琐,也暴露了我們內(nèi)部使用的監(jiān)控系統(tǒng)了。
Zabbix自動(dòng)發(fā)現(xiàn)原理就是調(diào)用Agent一個(gè)Key然爆,Agent返回自動(dòng)發(fā)現(xiàn)腳本執(zhí)行的結(jié)果站粟。
通常,自動(dòng)發(fā)現(xiàn)的結(jié)果如下曾雕,是個(gè)JSON格式的東東:
{
"data" : [
{"{#NAME}": "Name1"},
{"{#NAME}": "Name2"}
]
}
這里的{#NAME}
就是我們在Zabbix中要引用的Key奴烙,我們要保證盡量不重名(雖然沒這個(gè)規(guī)定,但是沒看過代碼翻默,不確定Zabbix會(huì)不會(huì)抽個(gè)瘋)缸沃。
我這里計(jì)劃返回的結(jié)果是這樣子的:
{
"data" : [
{"{#SCHTASKNAME}": "TaskName1"},
{"{#SCHTASKNAME}": "TaskName2"}
]
}
如何實(shí)現(xiàn)?
上面簡單的介紹了下自動(dòng)發(fā)現(xiàn)的原理修械,后面就好辦了趾牧。因?yàn)閆abbix沒有自帶的計(jì)劃任務(wù)接口,所以得我們自己編寫腳本肯污。
實(shí)現(xiàn)步驟分為三步:
- 通過腳本獲取符合條件的計(jì)劃任務(wù)列表翘单;
- 通過腳本查詢指定計(jì)劃任務(wù)的狀態(tài)和上次運(yùn)行結(jié)果;
- 根據(jù)返回的結(jié)果蹦渣,設(shè)置合適的觸發(fā)器進(jìn)行告警哄芜;
具體實(shí)施
各位看官,我本來計(jì)劃用一篇文章全部說完的柬唯,但是沒想到认臊,Windows的各種問題導(dǎo)致我用了幾種方法才解決。
具體方法如下:
- batch通過schtasks.exe進(jìn)行計(jì)劃任務(wù)進(jìn)行采集锄奢;
- powershell通過cmdlet進(jìn)行計(jì)劃任務(wù)信息采集失晴;
- powershell通過COM對象進(jìn)行計(jì)劃任務(wù)信息采集;
第3條路再不通的話拘央,我計(jì)劃試試vbs或者直接DotNet寫程序了涂屁。
因?yàn)閱栴}解決了,所以就不再絮絮叨叨了灰伟。
參考
其實(shí)參考內(nèi)容挺多的拆又,主要是各種疑難雜癥的處理。
- Get-ScheduledTask
- Get-ScheduledTaskInfo
- 批處理命令中的chcp 命令字符集與別名匯總
- Status of Scheduled Task
- 批處理中如何判斷傳進(jìn)來的參數(shù)是否為空
- Zabbix監(jiān)控(八):自動(dòng)監(jiān)控windows端口
- DOS批處理命令-字符串操作
- Dos批處理命令拼接字符串的問題
- How can I retrieve the status of a scheduled task using schtasks?
- Schtasks 計(jì)劃任務(wù)參數(shù) 詳解
- 常用批處理命令總結(jié)3之Find和FindStr
- schtasks錯(cuò)誤: 無法加載列資源栏账。
- 困擾了我數(shù)個(gè)晝夜的Windows 7 “幽靈現(xiàn)象”【仍未解決帖族,待高人指點(diǎn)】
- Get scheduled tasks from remote computer