采用Opserver来监控你的ASP.NET项目系列(二、监控SQL Server与Asp.Net项目)

之前有过2篇关于如何监控ASP.NET core项目的文章,有兴趣的也可以看看.

  •  ASP.NET Core之跨平台的实时性能监控

  • ASP.NET Core之跨平台的实时性能监控(2.健康检查)

今天我们主要来介绍一下,如何使用Opserver监控我们的SQL Server 和ASP.NET项目的异常监控

 监控效果如下:

SQL Server的:

 

 

 

 ASP.NET异常情况的监控:

 

监控SQL Server

首先我们来讲解一下如何监控我们的SQL Server.

上篇内容我们已经提到过 Opeserver的项目有很多的配置文件.

我们找到我们的SQLSettings.example.json文件,改名为SQLSettings.json文件

修改其中的配置项如下:

/* Configuration for the SQL Server dashboard */

{

  "defaultConnectionString": "",

  "refreshIntervalSeconds": 30,

  "clusters": [

    {

      "name": "192.168.1.120",

      "refreshIntervalSeconds": 20,

      "nodes": [

        { "name": "192.168.1.121" },

        { "name": "192.168.1.122" },

        { "name": "192.168.1.123" }

      ]

    }

  ],

  "instances": [

    {

      "name": "实例名称",

      "connectionString": "数据库连接字符串",

      "refreshIntervalSeconds": 200

    }

  ]

}

解释一下其中的意义,参照如下:

defaultConnectionString  (默认的连接字符串,用于单台数据库监控)
refreshIntervalSeconds   (轮询数据库情况的刷新时间,如果不设置,默认为60秒)
instances (当有多台单独的数据库实例需要监控时候的数据库实例设置)
clusters (当你的数据库是集群部署的时候的设置)

后面的内容都一样,我就不一一解释了,多台数据库实例,可以自行在instances 中添加多个节点,集群就在clusters中加入节点地址即可

然后,我们直接运行OpSever项目,就可以观察到数据库的变化情况了.

监控ASP.NET项目的异常情况

 下面我们来讲讲如何监控我们的ASP.NET项目异常的情况

   1.我们需要在在web项目中通过nuget安装StackExchange.Exceptional组件(它依赖于dapper)

   2.在web.config中的configSections节点下增加section节点 “Exceptional”,如下:

       

<configSections><section name="Exceptional" type="StackExchange.Exceptional.Settings" /></configSections>

 

      

   3.在web.config中增加Exceptional节点,如下:

<Exceptional applicationName="应用名称">

   

    <!--<ErrorStore type="Memory" />-->

    <!--连接opserver数据库时开启-->

    <ErrorStore type="存储类型" connectionString="连接字符串" />

  </Exceptional>

ErrorStore 错误存储有4种实现方式,Memory,JSON,SQL,MySQL,如下是官方的说明译文:

<!--如果没有设置ErrorStore,将默认使用内存的形式来记录错误-->

    <!--<ErrorStore type="Memory" />-->

    <!-- 其他的存储类型, 相关的设置属性如下:

         - rollupSeconds:页面上异常的更新秒数,默认为600秒

         - backupQueueSize: 设置缓存多少错误,默认为1000条-->

    <!-- JSON:Size是设置Json存储的文件数量,默认为200-->

    <!--<ErrorStore type="JSON" path="~/Errors" size="200" />-->

    <!-- SQL: 只需要设置数据库连接字符串如下: -->

    <!--<ErrorStore type="SQL" connectionString="Server=.;Database=Exceptions;Uid=Exceptions;Pwd=myPassword!" />-->

    <!--<ErrorStore type="SQL" connectionStringName="MyConnectionString" />-->

    <!--你也可以设置为Mysql如下 -->

    <!--<ErrorStore type="MySQL" connectionString="Server=.;Database=Exceptions;Username=Exceptions;Pwd=myPassword!" />-->

    <!--<ErrorStore type="MySQL" connectionStringName="MyConnectionString" />-->

这里我们采用SQL的形式,直接存在数据库里.

4.修改web.config的system.webServer节点,添加新的handlers,modules配置如下:

<system.webServer>


 <validation validateIntegratedModeConfiguration="false" />

    <handlers>

      <add name="Exceptional" path="exceptions.axd" verb="POST,GET,HEAD" type="StackExchange.Exceptional.HandlerFactory, StackExchange.Exceptional" preCondition="integratedMode" />

    </handlers>

    <modules>

      <add name="ErrorLog" type="StackExchange.Exceptional.ExceptionalModule, StackExchange.Exceptional" />

    </modules>

  </system.webServer>

5.因为我这里采用的SQL存储,所以需要给数据库添加存储错误信息的表,SQL语句如下:

USE [OpServerTest]

GO


/****** Object:  Table [dbo].[Exceptions]    Script Date: 2016/11/16 16:28:56 ******/

SET ANSI_NULLS ON

GO


SET QUOTED_IDENTIFIER ON

GO


SET ANSI_PADDING ON

GO


CREATE TABLE [dbo].[Exceptions](

    [Id] [bigint] IDENTITY(1,1) NOT NULL,

    [GUID] [uniqueidentifier] NOT NULL,

    [ApplicationName] [nvarchar](50) NOT NULL,

    [MachineName] [nvarchar](50) NOT NULL,

    [CreationDate] [datetime] NOT NULL,

    [Type] [nvarchar](100) NOT NULL,

    [IsProtected] [bit] NOT NULL,

    [Host] [nvarchar](100) NULL,

    [Url] [nvarchar](500) NULL,

    [HTTPMethod] [nvarchar](10) NULL,

    [IPAddress] [varchar](40) NULL,

    [Source] [nvarchar](100) NULL,

    [Message] [nvarchar](1000) NULL,

    [Detail] [nvarchar](max) NULL,

    [StatusCode] [int] NULL,

    [SQL] [nvarchar](max) NULL,

    [DeletionDate] [datetime] NULL,

    [FullJson] [nvarchar](max) NULL,

    [ErrorHash] [int] NULL,

    [DuplicateCount] [int] NOT NULL,

 CONSTRAINT [PK_Exceptions] PRIMARY KEY CLUSTERED 

(

    [Id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]


GO


SET ANSI_PADDING OFF

GO


ALTER TABLE [dbo].[Exceptions] ADD  DEFAULT ((0)) FOR [IsProtected]

GO


ALTER TABLE [dbo].[Exceptions] ADD  DEFAULT ((1)) FOR [DuplicateCount]

GO

6.最后回到OpServer项目修改ExceptionsSettings.example.json文件为ExceptionsSettings.json,并添加配置如下:

{ "stores": [ //异常日志存储位置

    {

      "name": "ExceptionDB",

      "queryTimeoutMs": 2000,

      "pollIntervalSeconds": 10,

      "connectionString": "错误存储的地址"

    }

  ]

}

7.想增加自定义的错误信息,可以编写如下代码:

try

 {

                throw new Exception("Just a try/catch test");

 }

  catch (Exception ex)

  {

                // logged, but caught so we don't crash

                ErrorStore.LogExceptionWithoutContext(ex);

  }

这样,异常也会记录到存储里面去了.

 

写在最后

本篇到此结束,下篇介绍如何监控我们的服务器状态

原文:http://www.cnblogs.com/GuZhenYin/p/8064860.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 参数校验 Validation 入门

转载自 芋道 Spring Boot 参数校验 Validation 入门 本文在提供完整代码示例&#xff0c;可见 https://github.com/YunaiV/SpringBoot-Labs 的 lab-22 目录。 原创不易&#xff0c;给点个 Star 嘿&#xff0c;一起冲鸭&#xff01; 1. 概述 在想标题的时候&#xff0c;到底应该…

用turtle画皮卡丘

如何绘制皮卡丘 画左偏曲线函数 setheading属性的作用是什么&#xff1f; def radian_left(ang,dis,step,n):for i in range(n):disstep #dis增大stept.lt(ang) #向左转ang度t.fd(dis) #向前走dis的步长画右偏曲线函数 def radian_right(ang,dis,step,n):for i in range(n)…

nssl1317-灵魂分流药剂【分组背包,二维费用背包】

正题 题目大意 一个二维费用的分组背包 NoNoNo解题思路 codecodecode #include<cstdio> #include<algorithm> using namespace std; const int N110; int n,m,A,B,w[N],v[N],t[N],p[N],f[11][N][N]; int main() {scanf("%d%d%d%d",&n,&m,&…

Orchard Core一分钟搭建ASP.NET Core CMS

Orchard Core 是Orchard CMS的ASP.NET Core版本。Orchard Core是全新一代的ASP.NET Core CMS。官方文档介绍&#xff1a;http://orchardcore.readthedocs.io/en/latest/GitHub: https://github.com/OrchardCMS/OrchardCore下面快速开始搭建CMS新建项目打开VS2017 新建一个CMSWe…

在Linux系统上部署java web项目

将Spring boot项目打成jar包后放在服务器进行运行&#xff1a; 部署命令&#xff1a; nohup java -jar mybatis-0.0.1-SNAPSHOT.jar >output 2>&1 &查看进程&#xff1a; ps aux杀死服务器进程&#xff1a; kill -9 PID

nssl1318-地铁重组【dp】

正题 题目大意 n个东西依次进入一个容量为p的栈&#xff0c;求出栈的序列数量。 解题思路 设fi,jf_{i,j}fi,j​表示iii个已经进过栈了(不管还有没有出)&#xff0c;jjj个还在栈里。 首先是将现在这个进栈fi−1,j−1f_{i-1,j-1}fi−1,j−1​&#xff0c;然后是出栈fi,j1f_{i,…

面试:你说你精通Java并发,给我讲讲Java并发之J.U.C

转载自 面试&#xff1a;你说你精通Java并发&#xff0c;给我讲讲Java并发之J.U.C J.U.C J.U.C即java.util.concurrent包&#xff0c;为我们提供了很多高性能的并发类&#xff0c;可以说是java并发的核心。 J.U.C和CAS和Unsafe和AQS Concurrent包下所有类底层都是依靠CAS操…

.Net Core配置与自动更新

.Net Core 将之前Web.Config中的配置迁移到了appsettings.json文件中&#xff0c;并使用ConfigurationBuilder来读取这个配置文件。并可设置在配置文件变化以后&#xff0c;自动重新加载&#xff0c;这样可不用重启你的程序。12345var builder new ConfigurationBuilder().Set…

校园中介骗子

五一不回去就想着做个兼职&#xff0c;正好在学校群里看到了相关信息&#xff0c;就想丰富下自己的阅历。但是遇到了个黑心中介&#xff0c;专骗押金的。 我真的非常生气&#xff0c;不是说押金多少&#xff0c;而是这个行为&#xff0c;你发的信息上说的好的可以做一天&#x…

nssl1319-埃雷萨拉斯寻宝【SPFA,建图】

正题 题目大意 从第一列出发&#xff0c;到最后一列&#xff0c;然后可以传送到相同的魔法格里&#xff0c;经过不同的魔法格会损伤不同的生命(如果之前经过过就不会)。求最大剩余生命。 解题思路 因为相同的魔法格可以传送&#xff0c;所以你肯定不会回到相同的魔法格两次&a…

闲话权限系统的设计

一、权限的本质权限管理&#xff0c;首先要理清权限的本质&#xff1a;权限就是对受保护资源的有限许可访问。理解了权限的本质&#xff0c;就好谈权限的管理了。权限就是对受保护资源的有限许可访问--这句话包含两层含义&#xff1a;1&#xff0c;受保护的资源2&#xff0c;有…

初级Java开发与架构之间的差距不仅仅是开发时间

转载自 初级Java开发与架构之间的差距不仅仅是开发时间 一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器&#xff08;G1&#xff09;、GC算法…

欢乐SSL初二组周六赛【2019.4.27】

前言 AK???AK???AK??? 成绩 只放前101010&#xff0c;然后T3T3T3数据锅了一会 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCCDDD1112017WYC2017WYC2017WYC4004004001001001001001001001001001001001001002222016LJW2016LJW2016LJW39039039010010010010010…

gi如果某次提交错误,如何撤回

回退到指定commit版本 git reset --hard commit版本号强制推送到远程修改远程的commit git push --force

ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现

很长一段时间以来&#xff0c;我都在思考如何在ASP.NET Core的框架下&#xff0c;实现一套完整的事件驱动型架构。这个问题看上去有点大&#xff0c;其实主要目标是为了实现一个基于ASP.NET Core的微服务&#xff0c;它能够非常简单地订阅来自于某个渠道的事件消息&#xff0c;…

面试了 N 个候选人后,我总结出这份 Java 面试准备技巧

转载自 面试了 N 个候选人后&#xff0c;我总结出这份 Java 面试准备技巧 目录&#xff1a; 框架是重点&#xff0c;但别让人感觉你只会山寨别人的代码 别只看单机版的框架&#xff0c;分布式也需要了解 对于数据库&#xff0c;别只知道增删改查&#xff0c;得了解性能优化…

和某ZYC巨佬的随机挑战1总结

瞎搞事情经过 时间 忘了 地点 机房 人物 WYCWYCWYC蒟蒻和ZYCZYCZYC巨佬 起因 想瞎搞 经过 做题 结果 做完了 规则 luoguluoguluogu随机跳题&#xff0c;跳三道紫色题目来做。一个看脸的挑战。 题目 P2834−P2834-P2834−能力测验【数论&#xff0c;整除分块】 博客…

Scratc3.0作品转化成exe文件

Scratch 3的作品&#xff08;sb3格式的文件&#xff09;怎么生成可执行exe文件 Scratch 3.0和Scratch 2.0软件相比&#xff0c;界面和内部实现机制有了较大变化。 与以前2.0版本不同&#xff0c;Scratch3.0版本改用H5和JS语言编写&#xff1b;软件界面有较大变化&#xff0c;将…

来腾讯云开发者实验室 学习.NET Core 2.0

腾讯云开发者实验室为开发者提供了一个零门槛的在线实验平台,开发者实验室提供的能力&#xff1a;零门槛扫码即可免费领取实验机器&#xff0c;支持使用自有机器参与&#xff0c;实验完成后支持保留实验成果&#xff1b;在线 WEB IDE 支持 shell 命令操作&#xff0c;支持机器文…

Redis面试题(2020最新版)

转载自 Redis面试题&#xff08;2020最新版&#xff09; 概述 什么是Redis Redis(Remote Dictionary Server) 是一个使用 C 语言编写的&#xff0c;开源的&#xff08;BSD许可&#xff09;高性能非关系型&#xff08;NoSQL&#xff09;的键值对数据库。 Redis 可以存储键和五…