• 【zabbix】Windows服务器获取IIS站点以及程序池状态


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

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

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

    @echo off
    C:WindowsSystem32inetsrvappcmd.exe list site | find "Stopped" >> D:zabbixiis.txt
    C:WindowsSystem32inetsrvappcmd.exe list apppool | find "Stopped" >> D:zabbixiis.txt
    for /f "tokens=1 delims=(" %%1 in (D:zabbixiis.txt)do (set x=%%1&& call set x=%%x:"=%%
    call echo %%x%%)
    cd.>D:zabbixiis.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站点或者程序池有停止的时候,才会返回停止的值。

  • 相关阅读:
    Ubuntu配置sublime text 3的c编译环境
    ORA-01078错误举例:SID的大写和小写错误
    linux下多进程的文件拷贝与进程相关的一些基础知识
    ASM(四) 利用Method 组件动态注入方法逻辑
    基于Redis的三种分布式爬虫策略
    Go语言并发编程总结
    POJ2406 Power Strings 【KMP】
    nyoj 会场安排问题
    Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
    Java的String、StringBuffer和StringBuilder的区别
  • 原文地址:https://www.cnblogs.com/zhenglisai/p/6673352.html
Copyright © 2020-2023  润新知