在使用zabbix做Windows服务器监控的时候遇到一个比较棘手的问题,检测IIS站点状态。

普通情况下,只要用浏览器访问iis站点测试一下返回码是不是200即可判断状态,但是我这次遇到的是iis使用了主机头,也就是说iis上的站点使用的是同一个IP地址,同一个端口号。外部请求是根据域名来判断访问哪个站点,并且IIS前面还有负载均衡器,这样我就不能让zabbix也通过域名的方式测试IIS了,因为这样不能判断是不是所有的IIS都没有问题。

为此,研究了如何在本地使用命令行的方式获取iis站点的运行状态,做成一个批处理文件供zabbix分析如下:

@echo off
C:\Windows\System32\inetsrv\appcmd.exe list site | find "Stopped" >> D:\zabbix\iis.txt
C:\Windows\System32\inetsrv\appcmd.exe list apppool | find "Stopped" >> D:\zabbix\iis.txt
for /f "tokens=1 delims=(" %%1 in (D:\zabbix\iis.txt)do (set x=%%1&& call set x=%%x:"=%%
call echo %%x%%)
cd.>D:\zabbix\iis.txt

脚本说明:

第一行:关闭echo输出。

第二行:获取所有站点的状态,查找状态为stopped的站点,将结果放在iis.txt文件里。

第三行:获取所有应用程序池的状态,查找状态为stopped的程序池,将结果放在iis.txt文件里。

第四行:以左括号为分隔符(delims指定分隔符),截取iis.txt里第一列的数据(tokens=1指定第一列),并去掉双引号(如果有双引号,zabbix使用微信告警的时候,引号后面的内容就没了)

第五行:将iis.txt文件清空。方便下次使用。

如果所有站点都正常,该脚本返回为空。

如果有站点异常,该脚本返回如下:

表示名字为:portal的站点停了,但是portal的程序池没有停

名字为:defaultapppool的程序池停了,但是站点没有停

第一列的site表示站点故障,apppool表示应用程序池故障。

zabbix里调用这个脚本即可实现对iis站点的监控,如何添加监控项这里就不讲了。触发器可以选择:最近获取到的字符串长度大于1即报警。原因为这个脚本只有在iis站点或者程序池有停止的时候,才会返回停止的值。

【zabbix】Windows服务器获取IIS站点以及程序池状态的更多相关文章

  1. [2015-11-23]分享一个批处理脚本,创建iis站点及程序池

    建站批处理 batch_createSites.bat @echo off rem 以管理员身份执行本脚本,可添加多条call 以建立多个站点 call path\to\createSites.bat ...

  2. pageadmin建站软如何修改和设置iis站点应用程序池

    很多用户第一次安装PageAdmin建站系统时候会出现这个错误,主要原因: 1.首选打开iis站点基本设置,可以看到当前站点对应的应用程序池,如下图: 可以看到当前站点用的程序池名为MyAppPool ...

  3. windows服务器下iis的性能优化 服务器

    IIS性能优化 1.调整IIS高速缓存 HKEY_LOCAL_MACHINE SystemCurrentControlSetServicesInetInfoParametersMemoryCacheS ...

  4. 服务器资源共享--IIS站点/虚拟目录中访问共享目录(UNC)

    本文重点描述如何使用IIS访问共享资源来架设站点或执行 ASP.Net 等脚本. 通常情况下,拥有多台服务器的朋友在使用IIS建立站点的时候,会遇到如何把多台服务器的资源合并到一起的问题.如何让A服务 ...

  5. C# 获取IIS站点及虚拟目录信息

    using System; using System.DirectoryServices; using System.Collections.Generic; using System.Text; n ...

  6. IIS监控应用程序池和站点假死,自动重启IIS小工具

    文章技术适合初学者.高级的C#开发工程师这些估计都熟悉到烂了,望不要喷. 第一.C#代码要操作IIS 就必须先导入 Microsoft.Web.Administration.dll ,方便控制台程序做 ...

  7. IIS7.5 用 IIS AppPool\应用程序池名 做账号 将各站点权限分开

    IIS6里面,要把服务器上的各站点权限分开,要建一堆帐号,再一个一个站点绑定.IIS7.5就不用了. 选择 "应用程序用户" 选择 "应用程序用户",启动应用程 ...

  8. 【转载】Windows Server2012安装IIS服务器

    在云服务器的使用过程中,很多人由于习惯或者实际需要,会选择Windows Server系统服务器,较常用的版本有Windows Server2008.Windows Server2012.在Windo ...

  9. 使用appcmd命令创建iis站点及应用程序池

    参考文章:iis7 appcmd的基础命令及简单用法 验证环境:Windows 7    IIS7 AppCmd.exe工具所在目录 C:\windows\sytstem32\inetsrv\目录下, ...

随机推荐

  1. Tiny4412 学习

    平台: Tiny4412ADK + S700 + 4GB FlashU-boot: 友善之臂提供的开源U-boot Linux: linux-3.0.31 Android: android_4_1_2 ...

  2. WinForm 读取Excel 数据显示到窗体中

    最近教学中,需要用到WinForm 读取Excel数据,于是就做了一个简单的,废话不多说,直接codding... //读取Excel的帮助类 class SqExcellHelper { publi ...

  3. dedecms 调用父栏目下的所有子栏目

    效果如下: 代码如下: <div class="productxilie"> <ul> {dede:channelartlist row=6 typeid ...

  4. 【前端阅读】——《JavaScript入门经典》摘记之JavaScript与XML

    前言:这本书除了基础的JavaScript理论体系之外,有一个特别的章节,就是讲解——JavaScript与XML的关系,从中,我更进一步的了解了XML的基础.创建.显示以及使用JavaScript如 ...

  5. Android--数据库数据显示至屏幕

    MainActivity.java 这段代码的作用是从数据库中获取到数据并显示在界面上 import java.util.ArrayList; import java.util.List; impor ...

  6. css:清除浮动 overflow

    是因为overflow除了(visible)会重新给他里面的元素建立块级格式化(block formatting context)floats, position absolute, inline-b ...

  7. 命令行运行java

    运行TestLinuxCommand.java     代码 import java.io.BufferedReader; import java.io.BufferedWriter; import ...

  8. hdu4857 &amp; BestCoder Round #1 逃生(拓扑逆排序+优先队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=4857 ----------------------------------------------- ...

  9. Spring学习三----------注入方式

    © 版权声明:本文为博主原创文章,转载请注明出处 Spring注入方式 本篇博客只讲最常用的两种注入方式:设值注入和构造器注入.代码为完整代码,复制即可使用. 1.目录结构 2.pom.xml < ...

  10. CPU调度算法

    批处理系统中的调度算法: *需要考虑的因素: 1. 吞吐量 2. cpu利用率 3. 周转时间 4. 公平性* 1.先来先服务: FCFS: 优点:实现简单 缺点:可能造成周转时间长 2.最短作业优先 ...