前言

之前有过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 

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

  1. asp毕业设计——基于vb+VB.NET+SQL Server的公文管理系统设计与实现(毕业论文+程序源码)——公文管理系统

    基于vb+VB.NET+SQL Server的公文管理系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于vb+VB.NET+SQL Server的公文管理系统设计与实现 ,文章末尾附有本 ...

  2. 【转】如何实现小型WEB搜索引擎(C# SQL Server全文检索 Asp.net)

    SOSO-----为您量身定做的 WEB搜索引擎 1 引言 21世纪,中国互联网搜索引擎领域可谓群雄逐鹿,百度.Yahoo.中搜.搜狗等等都使出浑身解数吸引着网民的眼球.这些大网站可谓是各有所长,总的 ...

  3. asp毕业设计——基于vb+VB.NET+SQL Server的图书馆管理信息系统设计与实现(毕业论文+程序源码)——图书馆管理信息系统

    基于vb+VB.NET+SQL Server的图书馆管理信息系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于vb+VB.NET+SQL Server的图书馆管理信息系统设计与实现,文章 ...

  4. asp毕业设计——基于vb+VB.NET+SQL Server的web订餐系统设计与实现(毕业论文+程序源码)——订餐系统

    基于vb+VB.NET+SQL Server的web订餐系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于vb+VB.NET+SQL Server的web订餐系统设计与实现,文章末尾附有 ...

  5. asp毕业设计——基于vb+VB.NET+SQL Server的数据存储与交换系统设计与实现(毕业论文+程序源码)——数据存储与交换系统

    基于vb+VB.NET+SQL Server的数据存储与交换系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于vb+VB.NET+SQL Server的数据存储与交换系统设计与实现,文章 ...

  6. asp毕业设计——基于vb+VB.NET+SQL Server的网上图书预约系统设计与实现(毕业论文+程序源码)——图书预约系统

    基于vb+VB.NET+SQL Server的网上图书预约系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于vb+VB.NET+SQL Server的网上图书预约系统设计与实现,文章末尾 ...

  7. ASP.NET2.0数据库入门之SQL Server

    因为Access并不真正为高性能应用程序服务,所以一个希望有多个同时连接用户的站点必须部署一个比Access更适合的数据源.本文将讲述如何从Microsoft SQL Server(一种企业级RDMS ...

  8. 使用SQL Server存储ASP.NET Session变量

    创建和配置ASP.NET Session状态数据库 在基于NLB(网络负载平衡)环境下的ASP.NET Web应用程序开发,我们需要将Session存储在数据库中供多个Web应用程序调用,以下为配置方 ...

  9. Asp.net(C#)中备份还原SQL Server数据库实现

    在web中,安全性主要体现在两个方面:一个是程序安全性,即防止网页在插入恶意代码:另一个是数据库安全性,这个我们可以经常备份数据库来实现. 在文中,我将演示如果在网页中备份和恢复数据库. 其实备份和恢 ...

最新文章

  1. Git 笔记:基本操作工作流程
  2. 结构型模式:外观模式(门面模式)
  3. 基于SEAL库实现PSI-报错实录2
  4. java get key_java – KeyStore getKey()在Android中返回null
  5. MATLAB机器学习系列-9:决策树和随机森林的原理及其例子代码实现
  6. linux下I2C驱动发送IO时序,I2C驱动情景分析——怎样控制I2C时序
  7. 通过Intel XDK编写跨平台app(二)
  8. 【ES6】Set Map数据结构、Iterator遍历器
  9. DHCP中继原理和配置(含常见配置配置误区)
  10. 美国人竟然是这样教育小学
  11. Chm 文件资源编辑软件
  12. Scp全量远程拷贝(推送、拉取)
  13. python机器学习实践和kaggle实践
  14. 白领沉迷EXCEL式生存
  15. 【Autosar Can网络远程唤醒】
  16. 计算机网络谢希仁版(第七版)答案
  17. C#阿里云OSS——存储
  18. 动漫人体比例怎么画?怎样才能画好动漫人体比例?
  19. Curl常见错误返回码
  20. java web initservlet_JavaWeb之 Servlet

热门文章

  1. MySQL添加新用户、为用户创建数据库、为新用户分配权限
  2. 利用python实现批量查询ip地址归属地址
  3. Android ContentProvider支持跨进程数据共享与互斥、同步 杂谈
  4. The import com.sun.tools cannot be resolved
  5. IA-32系统编程指南 - 第三章 保护模式的内存管理【2】
  6. ASP.NET Core自定义响应内容
  7. WPF任务栏同步进度
  8. EPPlus导出Excel感觉很不错~~~
  9. 有温度的技术,改善上亿人的生活
  10. 一名“企业定制化人才”的自诉:“我不愿意,但却无可奈何”