需求:
生产环境中需要实现IIS 站点监控自动化,需要获取到站点名和站点进程的PID。有了站点名可以用windows内置的key获取相关监控项的值。例如站点的get、post请求数,站点的版本信息等。但是还需要监控IIS站点的SQL连接数,这需要IIS站点被访问,并且有SQL进程。然后通过进程号来判断是各个站点的SQL连接数。
脚本内容:
get.sitename
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
$sitearray
=@()
[System.Collections.ArrayList]
$arraylist
=
$sitearray
$command
=c:\windows\system32\inetsrv\appcmd.exe list vdir
foreach
(
$i
in
$command
)
{
$site
=
$i
.split("
")[1].split("
/
")[0].split('\"
')[1].trim(
''
)
$arraylist
.insert(0,
$site
)
}
#echo $arraylist
$a
=
$arraylist
.count-1
#echo $a
echo
"{`n"
echo `t
'"data"'
:[
foreach
(
$i
in
0..
$a
)
{
echo `n`t`t
"{"
$web
=
$arraylist
[
$i
]
$dir
=
'"{#SITENAME}"'
+
':'
+
'"'
+
$web
+
'"'
echo `t`t`t
$dir
echo `t`t
"}"
if
(
$i
-lt
$a
)
{
echo `t`t
','
}
}
echo `t]
echo
"}"
|
get.site.pid
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
$sitearray
=@()
$pidarray
=@()
[System.Collections.ArrayList]
$arraylist
=
$sitearray
[System.Collections.ArrayList]
$pidlist
=
$pidarray
$command
=c:\windows\system32\inetsrv\appcmd.exe list wp
foreach
(
$i
in
$command
)
{
$site
=
$i
.split(
':'
)[1].replace(
')'
,
''
)
$pidlist
.insert(0,
$i
.split()[1])
$arraylist
.insert(0,
$site
)
}
$a
=
$arraylist
.count-1
#echo $arraylist
#echo $pidlist
echo
"{`n"
echo `t
'"data"'
:[
foreach
(
$i
in
0..
$a
)
{
echo `n`t`t
"{"
$web
=
$arraylist
[
$i
]
$id
=
$pidlist
[
$i
]
$dir1
=
'"{#WP_NAME}"'
+
':'
+
'"'
+
$web
+
'"'
$dir2
=
'"{#WP_PID}"'
+
':'
+
$id
echo `t`t`t
$dir1
','
$dir2
echo `t`t
"}"
if
(
$i
-lt
$a
)
{
echo `t`t
','
}
}
echo `t]
echo
"}"
|
本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1857764,如需转载请自行联系原作者