惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
About on SuperTechFans
Y
Y Combinator Blog
V
V2EX
Engineering at Meta
Engineering at Meta
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
博客园 - 叶小钗
博客园 - 聂微东
阮一峰的网络日志
阮一峰的网络日志
H
Help Net Security
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The GitHub Blog
The GitHub Blog
WordPress大学
WordPress大学
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MongoDB | Blog
MongoDB | Blog
B
Blog
G
Google Developers Blog
J
Java Code Geeks
博客园 - 三生石上(FineUI控件)
IT之家
IT之家
N
Netflix TechBlog - Medium
腾讯CDC

博客园 - fogwu

豆包加开源工具apache jmeter 生成网站测试报告 windows 服务器 防止黑客利用漏洞上传可执行文件的免费方法 解决js每次刷新都需要实时从服务端获取的方法 powerdesinger 生成数据库结构表图并导出pdf windows 系统查看文件或文件夹被哪个进程占用并解除的方法 windows server 2022 通过命令行更改远程端口 sqlsever 2008 全文索引的使用 uni-app 开发微信小程序 onLaunch后再执行页面onLoad ASP.NET ”未显示页面,因为请求实体过大“的问题处理 ubutu 安装雷池waf 宝塔 nginx 安装 免费防护墙ModSecurity 模块 laravel postman api 请求, 表单验证不通过,不返回错误信息的json 而是返回302重定向 Windows Server 下 IIS 申请部署 Let's Encrypt 证书实现 免费 HTTPS h5 自适应页面背景图无法自动适应的问题 iis 部署SSL 出现错误的处理方法推荐 think\db\Raw could not be converted to string 错误的处理方式 - fogwu 解决使用js 打印当前页面时会多出一页空白纸张的问题 windiows 显卡安装指定旧版驱动 mysql 5.6 升级到 5.7 教程 winows 下iis+nginx +php 部署 windows cmd 命令中使用grep 查找 mediawiki 调用外站内容方法
iis 应用程序池通过钉钉机器人进行监控
fogwu · 2026-02-26 · via 博客园 - fogwu

最近发现服务器上的网站关联的一些应用程序池在未知错误的情况下,会被自动停用。导致网站无法访问,于是所加了一个对应用自动停止的监控。

钉钉上面的操作(需要在钉钉电脑版上设置):

  1. 打开钉钉群‌:在电脑端钉钉App中,进入你希望接收告警通知的群聊。
  2. ‌进入群设置‌:点击群聊界面右上角的 ‌“设置”‌ 图标。
  3. ‌添加机器人‌:选择 ‌“机器人”‌,然后点击 ‌“添加机器人”‌。
  4. ‌选择自定义‌:在机器人类型中,选择 ‌“自定义”‌。
  5. ‌配置机器人‌:
    • ‌机器人名称‌:输入一个易识别的名称,例如“监控告警”。
    • ‌安全设置‌:这是关键步骤,有三种方式,推荐使用 ‌“自定义关键词”‌:
      • ‌自定义关键词‌:必填。输入一个或多个关键词,例如 告警监控DataWorks 等。只有消息内容包含这些关键词时,机器人才会接收。‌(注意:部分服务如DataWorks要求关键词必须为DataWorks)‌ ‌110
      • 加签(可选):如果选择此项,系统会生成一个密钥(Secret),你需要在后续的告警服务配置中填写此密钥以进行签名验证,安全性更高。 ‌13
      • IP地址(可选):一般不建议设置,除非你明确知道告警服务的服务器IP。 ‌1
  6. ‌完成创建‌:勾选同意服务条款,点击 ‌“完成”‌。
  7. ‌复制Webhook地址‌:创建成功后,系统会显示一个类似 https://oapi.dingtalk.com/robot/send?access_token=xxxxxx 的链接。‌请立即复制并妥善保存‌,这是后续配置告警服务的核心地址

     调试:

         如果无法发送成功,可以通过以JSON格式post请求调试

{
  "msgtype": "text",
  "text": {
    "content": "【IIS告警】这是测试消息"
  }
}

打开vs创建控制端程序做好后打包成exe,代码如下:

using System;
using System.Net.Http;
using System.Text;
using Microsoft.Web.Administration;
using Newtonsoft.Json;
using System.Configuration;
class IISMonitor
{
    // 钉钉机器人WebHook
    
    private static readonly string DingTalkWebHook = ConfigurationManager.AppSettings["hookToken"];
  
    static void Main(string[] args)
    {
        string poolList=ConfigurationManager.AppSettings["poollist"];
        Console.WriteLine(poolList);
        // 1. 获取IIS应用程序池状态
        using (ServerManager serverManager = new ServerManager())
        {
            foreach (ApplicationPool pool in serverManager.ApplicationPools)
            {
                // 跳过默认池(可选)
                if (pool.Name == "DefaultAppPool") continue;
                // Console.WriteLine(pool.Name);

                // 检查状态
                if (pool.State != ObjectState.Started && poolList.Contains(pool.Name+","))
                {
                    string alertContent = $"【IIS告警】服务器:{Environment.MachineName},应用池:{pool.Name},状态:{pool.State},时间:{DateTime.Now:yyyy-MM-dd HH:mm:ss}";
                    // 2. 发送钉钉消息
                    SendDingTalkMessage(alertContent);
                }
            }
        }
    }

    // 发送钉钉消息方法
    static void SendDingTalkMessage(string content)
    {
        var httpClient = new HttpClient();
        var message = new
        {
            msgtype = "text",
            text = new { content = content }
        };
        string json = JsonConvert.SerializeObject(message);
        var contentBytes = new StringContent(json, Encoding.UTF8, "application/json");

        try
        {
            var response = httpClient.PostAsync(DingTalkWebHook, contentBytes).Result;
            if (response.IsSuccessStatusCode)
            {
                Console.WriteLine("钉钉消息发送成功");
           
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"发送失败:{ex.Message}");
        }
    }
}

为了灵活,请求地址和指定的应用程序池名称放在配置文件中。

在windows 任务计划中添加:

txt

  另外也可以在事件管理中选择应用程序池禁用事件,当该事件发生时自动发送警告提醒到钉钉:

微信截图_20260227093055

右键点击该事件:

微信图片_20260227093237

设置任务事件提醒

微信截图_20260227093617

微信图片_20260314105058

报警效果