zoukankan      html  css  js  c++  java
  • asp.net 网站监控方案

      前言:监控web网站方法有很多种,这篇文章说一下对windows服务器 asp.net网站的监控

     采用的方案,Powershell + Influxdb + Grafana

    1、PowerShell + Influxdb

     PowerShell用来收集IIS指标,10秒采集一次,然后写入Influxdb,主要代码如下:需要注意PowerShell需要升级到5.0才能支持influxdb

     标签分别是:Server主机名 ,AppName是网站名称

     1 function waitsec{  
     2     $step=10 #设置间隔  
     3     $add=0 #设置延时  
     4     $t=(get-date)  
     5     $step-(($t.Hour*3600+$t.Minute*60+$t.Second)%$step)+$add  
     6 }  
     7 function GetData($cluster,$dept,$group,$project,$type)
     8 {
     9     $commandSet=@(
    10     "Web Service(*)Current Anonymous Users",
    11     "Web Service(*)Current Connections",
    12     "Web Service(*)Current NonAnonymous Users",
    13     "Web Service(*)Current Blocked Async I/O Requests",
    14     "Web Service(*)Maximum Anonymous Users",
    15     "Web Service(*)Measured Async I/O Bandwidth Usage",
    16     "Web Service(*)Total Blocked Async I/O Requests",
    17     "Web Service(*)Total Get Requests",
    18     "Web Service(*)Total Method Requests",
    19     "Web Service(*)Total Method Requests/sec",
    20     "Web Service(*)Total Post Requests",
    21     "Web Service(*)Total Put Requests",
    22     "Web Service(*)Delete Requests/sec",
    23     "Web Service(*)Get Requests/sec",
    24     "Web Service(*)Options Requests/sec",
    25     "Web Service(*)Post Requests/sec",
    26     "Web Service(*)Put Requests/sec",
    27     "Web Service(*)Other Request Methods/sec",
    28     "HTTP Service Request Queues(*)CurrentQueueSize",
    29     "HTTP Service Request Queues(*)RejectedRequests",
    30     ".NET CLR Exceptions(*)# of Exceps Thrown / sec",
    31     "Process(w3wp*)Thread Count",
    32     "Process(w3wp*)\% Processor Time",
    33     "Process(w3wp*)Working Set - Private",
    34     "Process(w3wp*)Working Set",
    35     "Process(w3wp*)Private Bytes"
    36     )
    37     $res= get-counter -counter $commandSet
    38     $index=0
    39     $metricAppName=""
    40     $timestamp=[int] (Get-Date (Get-Date).ToUniversalTime() -uformat "%s")
    41     $host_name = hostname
    42     $table_name=""
    43     while($res.countersamples[$index])
    44     { 
    45         $Metrics1=@{}
    46         $value= $res.countersamples[$index].cookedvalue  
    47         $metric=$res.countersamples[$index].path 
    48         $metricAppName=$res.countersamples[$index].InstanceName
    49         $tempArray=$metric.replace("\","").split("")
    50         $metric=$tempArray[2]
    51         $Metrics1.$metric = $value
    52         if($tempArray[1].startswith('web service'))
    53         {   
    54             $table_name = "iis_web_service"
    55         }
    56         Elseif($tempArray[1].startswith('http service'))
    57         {
    58             $table_name = "iis_http_service"
    59         }
    60         Elseif($tempArray[1].startswith('.net clr exceptions'))
    61         {
    62             $table_name = "iis_net_clr_exceptions"
    63         }
    64         Elseif($tempArray[1].startswith('process(w3wp'))
    65         {
    66             $table_name = "iis_process"
    67         }
    68            Write-Influx -Measure $table_name -Tags @{Server = $host_name;  AppName = $metricAppName;} -Metrics $Metrics1 -Database monitor -Server http://influxdb:9096
    69         $index = $index + 1
    70     }
    71 }
    72 write-host "running...... please wait" (waitsec)"S"
    73 Start-Sleep -s (waitsec) 
    74 while(1){  
    75     #执行代码  
    76     get-date  
    77     (GetData)
    78     #……  
    79     Start-Sleep -s (waitsec)  
    80 }

    写入influxdb后的iis_http_service表的数据格式:

    2、Grafana 配置展示

    这里主要对webapi展示了当前连接数,当前排队数,和请求速率。

    整体效果:

    还可以在grafana告警里面设置一个WebHook,进行处理告警后的逻辑,比如:当这台机器压力比较大时可以对其进行从负载均衡移除 等等。

  • 相关阅读:
    关于EasyUI datagrid 无法在dialog中显示的问题分析及解决方案!
    WPF 矩形框8个控制点伸缩及拖拽
    Socket异步通信及心跳包同时响应逻辑分析(最后附Demo)。
    C#断点续传下载。
    C# 全屏坐标及区域坐标获取。自定义光标及系统光标描边捕捉显示。
    解决项目无法添加VBIDE问题
    python爬虫-入门-了解爬虫
    字符串输入数字
    面试题3--数组中的重复数字(new数组的新写法)
    等号操作符重载为什么不能用友元函数大揭秘,以及函数没有等到重载的时候赋值会出现什么现象(盲点)
  • 原文地址:https://www.cnblogs.com/chenru1988/p/9681703.html
Copyright © 2011-2022 走看看