最近大体自己写了点alwayson相关的监控,是通过存储过程的方法,做个笔记如下:

--alwayson启用状态
declare @isenabled sql_variant
SELECT @isenabled=SERVERPROPERTY ( 'IsHadrEnabled' )
if @isenabled=1
begin
print 'is enabled(alwayson启用状态)'
end
---------监控集群的状态
if exists(SELECT * FROM sys.dm_hadr_cluster_members where member_state <>1)
begin
print 'alwayson集群有拖机机器,请查看'
end
------------监控副本同步状态
if exists(select * from sys.dm_hadr_availability_replica_states where synchronization_health<>2)
begin
print 'alwayson集群同步异常,请查看'
end
---------------监控数据库同步状态
if exists(select * from sys.dm_hadr_database_replica_states where synchronization_state_desc NOT IN('SYNCHRONIZED','SYNCHRONIZED'))
begin
print 'alwayson有数据库同步异常,请查看'
end
if exists( select * from sys.dm_tcp_listener_states where state_desc not in('ONLINE'))
begin
print 'alwayson侦听器异常,请查看'
end
-----------------主从延迟的监控 IF EXISTS(
SELECT ag.name AS ag_name, ar.replica_server_name AS ag_replica_server, dr_state.database_id as database_id,
dr_state.log_send_queue_size, is_ag_replica_local = CASE
WHEN ar_state.is_local = 1 THEN N'LOCAL'
ELSE 'REMOTE'
END ,
ag_replica_role = CASE
WHEN ar_state.role_desc IS NULL THEN N'DISCONNECTED'
ELSE ar_state.role_desc
END
FROM (( sys.availability_groups AS ag JOIN sys.availability_replicas AS ar ON ag.group_id = ar.group_id )
JOIN sys.dm_hadr_availability_replica_states AS ar_state ON ar.replica_id = ar_state.replica_id)
JOIN sys.dm_hadr_database_replica_states dr_state on
ag.group_id = dr_state.group_id and dr_state.replica_id = ar_state.replica_id where dr_state.log_send_queue_size>300
)
begin
print 'alwayson主体有超过300M的日志没有同步,请尽快查看'
end if exists(
SELECT ag.name AS ag_name, ar.replica_server_name AS ag_replica_server, dr_state.database_id as database_id,
dr_state.redo_queue_size, is_ag_replica_local = CASE
WHEN ar_state.is_local = 1 THEN N'LOCAL'
ELSE 'REMOTE'
END ,
ag_replica_role = CASE
WHEN ar_state.role_desc IS NULL THEN N'DISCONNECTED'
ELSE ar_state.role_desc
END
FROM (( sys.availability_groups AS ag JOIN sys.availability_replicas AS ar ON ag.group_id = ar.group_id )
JOIN sys.dm_hadr_availability_replica_states AS ar_state ON ar.replica_id = ar_state.replica_id)
JOIN sys.dm_hadr_database_replica_states dr_state on
ag.group_id = dr_state.group_id and dr_state.replica_id = ar_state.replica_id where dr_state.redo_queue_size>300
)
begin
print 'alwayson副本有较多日志未重做,请登录查看'
end
---------------主从状态切换等监控
DECLARE @MASTER VARCHAR(20)
--select @MASTER=a.replica_server_name,a.join_state,a.join_state_desc,b.is_local ,b.role,b.role_desc from sys.dm_hadr_availability_replica_cluster_states a join sys.dm_hadr_availability_replica_states b
--on a.replica_id=b.replica_id where b.role=1 --and a.replica_server_name='ALWAYSON241'
select @MASTER=a.replica_server_name from sys.dm_hadr_availability_replica_cluster_states a join sys.dm_hadr_availability_replica_states b
on a.replica_id=b.replica_id where b.role=1 --and a.replica_server_name='ALWAYSON241'
print @MASTER
IF @MASTER IS NULL
BEGIN
PRINT '主从同步异常'
END
ELSE IF @MASTER<>'ALWAYSON241'
BEGIN
PRINT 'alwayson进行了切换,现在主库是'+@master
END
------------------------监控alwayson数据库状态
if exists(select * from sys.dm_hadr_database_replica_states a where a.database_state<>0 or a.synchronization_state not in(1,2))
begin
print 'alwayson有数据库异常'
end -----------发邮件预警
----declare @name nvarchar(222)
----declare @mailbody nvarchar(4000);
----declare @maillabel nvarchar(100);
----set @maillabel='作业失败'
--EXEC msdb.dbo.sp_send_dbmail @profile_name = 'sendmail',
-- @recipients = '729975475@qq.com',
-- @subject = 'alwayson预警',
-- @body = 'alwayson故障

于alwayson相关的系统视图主要涉及以下一些(这些系统的存储过程能让我们很直观的了解到我们可用性组的状态):

--监控alwayson可用性管理器是否启动
SELECT SERVERPROPERTY ( 'HadrManagerStatus' )
--监控alwayson可用性组是否启动
SELECT SERVERPROPERTY ( 'IsHadrEnabled' )
--查看服务器的集群信息
SELECT * FROM sys.dm_hadr_cluster
SELECT * FROM sys.dm_hadr_cluster_members
select * from sys.dm_hadr_availability_replica_cluster_nodes
SELECT * FROM sys.dm_hadr_name_id_map -----------------------------------------------
SELECT * FROM sys.availability_groups
SELECT * FROM sys.availability_groups_cluster
SELECT * FROM sys.dm_hadr_availability_group_states --监控可用性副本
select * from sys.availability_replicas
--查看只读路由
select * from sys.availability_read_only_routing_lists
---监控可用性副本状态
select * from sys.dm_hadr_availability_replica_cluster_states
select * from sys.dm_hadr_availability_replica_states --synchronization_health的状态为2才算正常。需要监控
--监视可用性数据库
select * from sys.availability_databases_cluster
select * from sys.databases where name in(select database_name from sys.availability_databases_cluster)
--该视图包含对应于给定主/辅助数据库上最新自动页修复尝试的行,每个数据库最多可对应 100 行,如果存储数据就要手动查看
select * from sys.dm_hadr_auto_page_repair
--除了已同步和为同步的alwayson的状态
select * from sys.dm_hadr_database_replica_states where synchronization_state_desc NOT IN('SYNCHRONIZED','SYNCHRONIZED') -------------------------监视可用性组侦听器的监控
select * from sys.availability_group_listener_ip_addresses where state_desc='ONLINE'
select * from sys.availability_group_listeners
-----我们可以用 NOT EXISTS来判断
select dns_name,port,ip_address from sys.availability_group_listener_ip_addresses A JOIN sys.availability_group_listeners B
ON a.listener_id=b.listener_id where a.state_desc='ONLINE' ---------------------------------------
select * from sys.dm_tcp_listener_states where state_desc not in('ONLINE')

alwayson监控的更多相关文章

  1. [AlwaysOn Availability Groups]AG排查和监控指南

    AG排查和监控指南 1. 排查场景 如下表包含了常用排查的场景.根据被分为几个场景类型,比如Configuration,client connectivity,failover和performance ...

  2. [AlwaysOn Availability Groups]使用Powershell监控AlwayOn健康

    使用Powershell监控AlwayOn健康 1.基本命令概述 AlwayOn Dashboard是很有用的查看整体AG健康状况的工具.但是这个工具不是用于7*24监控的.如果应用程序夜间发送严重的 ...

  3. [AlwaysOn Availability Groups]监控AG性能

    监控AG性能 AG的性能的性能方面,在关键任务数据库上进行语句级维护性能是很重要的.理解AG如何传输日志到secondary副本对评估RTO和RPO,表明AG是否性能不好. 1. 数据同步步骤 为了评 ...

  4. AlwaysON同步性能监控的三板斧

    延迟是AlwaysOn最大的敌人之一 延迟是AlwaysON的最大敌人之一.对AlwaysON而言,其首要目标就尽量减少(无法避免)主副本.辅助副本的数据延迟,实现主副本.辅助副本的“数据同步”.只有 ...

  5. Alwayson架构下 服务器 各虚拟IP漂移监控告警的功能实现

    1.需求概括 我们知道,在SQL Server Alwayson 架构中,有多种虚拟IP,例如 WindowsCluster IP,ListenIP,角色高可用性IP(类似于侦听IP).在某些条件下, ...

  6. SQL Server Alwayson架构下 服务器 各虚拟IP漂移监控告警的功能实现 -2(虚拟IP视角)

    1.需求描述 我们知道Windows Cluster 都是多节点的,当虚拟IP漂移的时候,一般都是从一个节点漂移到另外一个节点.如果可以及时捕捉到旧节点信息是什么.新节点信息是什么对我们提供高可用的数 ...

  7. [AlwaysOn Availability Groups] 健康模型 Part 2 ——扩展

    健康模型扩展 第一部分已经介绍了AlwayOn健康模型的概述.现在是创建一个自己的PBM策略,然后设置为制定的归类.创建这些策略,创建之后修改一下配置,dashboard就会自动评估这些策略. 场景, ...

  8. SQL 2014 AlwaysOn 搭建

    AlwaysOn底层依然采用Windows 故障转移群集的机制进行监测和转移,因此也需要先建立Windows Cluster,只不过可用性组中的数据库不一定非要再存放在共享存储上了.可以是存储在本地磁 ...

  9. [AlwaysOn Availability Groups]CLUSTER.LOG(AG)

    CLUSTER.LOG(AG) 作为故障转移资源,在SQL Server和windows故障转移集群服务的资源DLL(hadrres.dll)之间有额外的内部交流,DLL无法被SQL Server监控 ...

随机推荐

  1. Oracle 中分组排序取值的问题

    整理一下排序: 建表语句:create table EXAM(  name    VARCHAR2(32),  subject VARCHAR2(32),  score   INTEGER)数据:IN ...

  2. Nginx反向代理实现会话(session)保持的两种方式 (转)

    http://blog.csdn.net/gaoqiao1988/article/details/53390352 一.ip_hash: ip_hash使用源地址哈希算法,将同一客户端的请求总是发往同 ...

  3. weixin.com域名易主 传交易价格仅次360.com

    据业内人士透露,weixin.com双拼域名今日易主,交易价格在几千万级别,有传闻其交易价格仅次于360.com. 从whois信息查看可知,weixin.com域名信息今日发生变更,目前域名的持有者 ...

  4. $("input[name=name]").val(); 无法获取值问题

    <input type="text" class="text" name="name" placeholder= 例如:上海" ...

  5. 工程中添加工程依赖 Xcode iOS

    有时我们需要在一个主工程中添加其他的子工程,用来对子工程进行编写修改或者是利用子工程中的库文件等等操作,这时候我们需要用到工程的嵌套.   步骤:(看图说话)   1.新建主工程,名为TestTTTT ...

  6. [IDE]快捷键整理

      VS Resharper eclipse 备注 运行 Ctrl+F5 - Ctrl+F11   调试 F5 - F11   逐语句执行 F11 - F5 IE.FF: F11 逐过程执行 F10 ...

  7. windows10下mysql8.0.11忘记密码的解决办法

    首先输入 新开一个cmd窗口,登录mysql,刷新权限表 FLUSH PRIVILEGES; 经过我再次修改密码测试,只用下面这条语句就可以了 ALTER USER 'root'@'localhost ...

  8. JDK安装与环境变量全过程-鹏鹏

    首先先讲下JDK的含义以及用处: JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Jav ...

  9. Graphviz 的命令行参数说明

    所有的Graphviz程序都具有相似的命令行调用方式 cmd [ flags] [input files] 如果没有指定输入文件路径程序从标准输入stdin中读取. 参数设置  -Gname ...

  10. python 软件管理规范

    一.背景 软件开发是一个系统工程,当然编码实现是其中尤其重要的一个环节,关乎到功能需求的实现好坏.这个环节中除了编码这一硬功之外,与之相关的编码风格这一柔道,虽然没有直接决定功能的实现与否,但却在很大 ...