天天看点

用powershell脚本实现zabbix LLD 监控IIS站点

需求:

生产环境中需要实现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,如需转载请自行联系原作者