sqlserver实例状态web监控
- 通过 执行 SELECT 1 可以获取 SQL Server 的连通性,根据这个思路,可以编写一个web页面,将 SELECT 1 的执行结果作为页面的返回值添加到 zabbix 监控中,从而达到实时监控的目的。
| 实例状态 |
返回值 |
| 正常 |
{"Status":"UP","Result":1,"Message":""} |
| 失败 |
{"Status":"Down","Result":"0,"Message":"具体错误信息"} |
ASP.NET (C#) 语言
- 可将下面的脚本保存为 mssql_status.ashx,存放到 IIS 站点下面。
<%@ WebHandler Language="C#" Class="SqlStatus" %>
using System;
using System.Data.SqlClient;
using System.Web;
using System.Web.Script.Serialization;
public class SqlStatus : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json; charset=utf-8";
// 数据库连接连接串
string connStr = "Server=192.168.31.104;Database=master;User Id=bigdata_readonly;Password=123456;TrustServerCertificate=True;";
var result = new { Status = "DOWN", Result = 0, Message = "" };
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("SELECT 1", conn))
{
result = new { Status = "UP", Result = (int)cmd.ExecuteScalar(), Message = "" };
}
}
}
catch (Exception ex)
{
result = new { Status = "DOWN", Result = 0, Message = ex.Message };
}
context.Response.Write(new JavaScriptSerializer().Serialize(result));
}
public bool IsReusable { get { return false; } }
}
效果展示

