需求:
生产环境中需要实现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
<code>$sitearray</code><code>=@()</code>
<code>[System.Collections.ArrayList]</code><code>$arraylist</code><code>=</code><code>$sitearray</code>
<code>$command</code><code>=c:\windows\system32\inetsrv\appcmd.exe list vdir</code>
<code>foreach</code> <code>(</code><code>$i</code> <code>in</code> <code>$command</code><code>)</code>
<code>{</code>
<code> </code><code>$site</code><code>=</code><code>$i</code><code>.split("</code><code>")[1].split("</code><code>/</code><code>")[0].split('\"</code><code>')[1].trim(</code><code>''</code><code>)</code>
<code> </code><code>$arraylist</code><code>.insert(0,</code><code>$site</code><code>)</code>
<code>}</code>
<code>#echo $arraylist</code>
<code>$a</code><code>=</code><code>$arraylist</code><code>.count-1</code>
<code>#echo $a</code>
<code>echo </code><code>"{`n"</code>
<code>echo `t</code><code>'"data"'</code><code>:[</code>
<code>foreach</code> <code>(</code><code>$i</code> <code>in</code> <code>0..</code><code>$a</code><code>)</code>
<code> </code><code>echo `n`t`t</code><code>"{"</code>
<code> </code><code>$web</code><code>=</code><code>$arraylist</code><code>[</code><code>$i</code><code>]</code>
<code> </code><code>$dir</code><code>=</code><code>'"{#SITENAME}"'</code><code>+</code><code>':'</code><code>+</code><code>'"'</code><code>+</code><code>$web</code><code>+</code><code>'"'</code>
<code> </code><code>echo `t`t`t</code><code>$dir</code>
<code> </code><code>echo `t`t</code><code>"}"</code>
<code> </code><code>if</code> <code>(</code><code>$i</code> <code>-lt</code> <code>$a</code><code>)</code>
<code> </code><code>{</code>
<code> </code><code>echo `t`t</code><code>','</code>
<code> </code><code>}</code>
<code>echo `t]</code>
<code>echo </code><code>"}"</code>
get.site.pid
28
29
30
31
32
<code>$pidarray</code><code>=@()</code>
<code>[System.Collections.ArrayList]</code><code>$pidlist</code><code>=</code><code>$pidarray</code>
<code>$command</code><code>=c:\windows\system32\inetsrv\appcmd.exe list wp</code>
<code> </code><code>$site</code><code>=</code><code>$i</code><code>.split(</code><code>':'</code><code>)[1].replace(</code><code>')'</code><code>,</code><code>''</code><code>)</code>
<code> </code><code>$pidlist</code><code>.insert(0,</code><code>$i</code><code>.split()[1])</code>
<code> </code><code>$arraylist</code><code>.insert(0,</code><code>$site</code><code>) </code>
<code>#echo $pidlist</code>
<code>echo </code><code>"{`n"</code>
<code> </code><code>$id</code><code>=</code><code>$pidlist</code><code>[</code><code>$i</code><code>]</code>
<code> </code><code>$dir1</code><code>=</code><code>'"{#WP_NAME}"'</code><code>+</code><code>':'</code><code>+</code><code>'"'</code><code>+</code><code>$web</code><code>+</code><code>'"'</code>
<code> </code><code>$dir2</code><code>=</code><code>'"{#WP_PID}"'</code><code>+</code><code>':'</code><code>+</code><code>$id</code>
<code> </code><code>echo `t`t`t</code><code>$dir1</code><code>','</code><code>$dir2</code>
<code> </code><code>} </code>
<code></code>
本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1857764,如需转载请自行联系原作者