100分请教各位DBA,你们的数据库服务器是怎么监控的?

pbsh 2008-11-04 10:48:31
请教各位DBA,你们的数据库服务器是怎么监控的?
包括磁盘使用情况、内存使用情况、CPU使用情况等。
以上各项出现问题时如何报警的?
...全文
349 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hans_wu 2008-11-06
  • 打赏
  • 举报
回复
利用系统自带的Monitor进行监控生成报告,然后分析.用.NET写个小程序就可以实现实时监控并及时预警.
pbsh 2008-11-06
  • 打赏
  • 举报
回复
同志们,服务器的性能和安全关系着我们的饭碗阿,大家都积极讨论,共同进步吧。
pbsh 2008-11-05
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 claro 的回复:]
想自动监控呢?担心服务器负载过高。还是设置报警合适。
[/Quote]

报警可以做到一些特殊的事情吗?比如CPU持续5分钟满负荷运行才告警,单点的满负荷没有意义的吧。

我现在在利用WMI来获取CPU的使用情况,windows XP,windows 2003都没有问题.但是监视一台windows2000服务器存在问题,因为windows2000的WMI中没有win32_perfformatteddata_perfos_processor这个类,只有win32_perfrawdata_perfos_processor,从这个类中的Percentprocessortime中,我不知道怎么获取这个点CPU使用的百分比,请高手赐教,多谢。
pbsh 2008-11-04
  • 打赏
  • 举报
回复
再请教下,对于sql server服务器的内存监控来讲,是不是主要观察缓存命中率就可以了?
pbsh 2008-11-04
  • 打赏
  • 举报
回复
多谢邹老大指点,你是众多SQL SERVER DBA的老大~~
zjcxc 2008-11-04
  • 打赏
  • 举报
回复
至于楼主提到的用 SSIS

SSIS 包里面有 事件观察器任务和事件读取器任务, 可以直接读取服务器的各种信息, 你可以直接用它来做警报


当然, 我提到的方法的前提是你要比较熟悉WMI的相关东西, 可以到 technet 脚本中心看看
http://www.microsoft.com/china/technet/community/scriptcenter/default.mspx
zjcxc 2008-11-04
  • 打赏
  • 举报
回复
楼主用的是 sql 2005?

managent studio -- 展开实例 -- sql server 代理 -- 右键"警报" -- 新建警告 -- 类型选择"WMI事件警报" -- 设置你监控用到的WMI查询
最后在响应和选项中设置警报通知的方式
pbsh 2008-11-04
  • 打赏
  • 举报
回复
刚搜到一篇文章,分享一下。

利用typeperf工具收集SQL Server性能数据
http://database.ctocio.com.cn/tips/308/8319808.shtml

其实这个就是使用命令行工具返回性能监视器数据,可以存放在CSV文件中。我的想法是:难道我要做一个SSIS包,定时读取这个CSV文件,导入数据库,然后分析这张表,判断计算的结果集,如果达到某个条件就发送邮件通知?

老大们觉得可行么?
pbsh 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 rucypli 的回复:]
内存满就不用监控了吧,系统可自动调控,剩个七八兆都正常吧,看应用了
[/Quote]


内存的话,主要是想知道SQL SERVER实例总共占用了多少内存。
pbsh 2008-11-04
  • 打赏
  • 举报
回复
这个是我根据网上一位达人写的过程,稍微调整了一下,监控磁盘的,希望对大家有用。


sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
use master

if object_id('P_diskspace_monitor') is not null
drop procedure P_diskspace_monitor
go
CREATE PROCEDURE P_diskspace_monitor
AS
SET NOCOUNT ON

DECLARE @hr int
DECLARE @fso int
DECLARE @drive char(1)
DECLARE @odrive int
DECLARE @TotalSize varchar(20)
DECLARE @MB bigint ; SET @MB = 1048576

CREATE TABLE #drives (drive char(1) PRIMARY KEY,
FreeSpace int NULL,
TotalSize int NULL)

INSERT #drives(drive,FreeSpace)
EXEC master.dbo.xp_fixeddrives

EXEC @hr=master.sys.sp_OACreate 'Scripting.FileSystemObject',@fso OUT

DECLARE dcur CURSOR LOCAL FAST_FORWARD
FOR SELECT drive from #drives
ORDER by drive

OPEN dcur

FETCH NEXT FROM dcur INTO @drive

WHILE @@FETCH_STATUS=0
BEGIN

EXEC @hr = sp_OAMethod @fso,'GetDrive', @odrive OUT, @drive


EXEC @hr = sp_OAGetProperty @odrive,'TotalSize', @TotalSize OUT


UPDATE #drives
SET TotalSize=@TotalSize/@MB
WHERE drive=@drive

FETCH NEXT FROM dcur INTO @drive

END

CLOSE dcur
DEALLOCATE dcur

EXEC @hr=sp_OADestroy @fso


SELECT drive,
FreeSpace as 'Free(MB)',
TotalSize as 'Total(MB)',
CAST((FreeSpace/(TotalSize*1.0))*100.0 as int) as 'Free(%)'
FROM #drives
ORDER BY drive

DROP TABLE #drives

RETURN
go
rucypli 2008-11-04
  • 打赏
  • 举报
回复
内存满就不用监控了吧,系统可自动调控,剩个七八兆都正常吧,看应用了
pbsh 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 szx1999 的回复:]
引用 8 楼 happyflystone 的回复:
刚才有一个人还问这个工具来着:
typeperf.exe

刚才有一个人还问这个过程来着:
sp_monitor
[/Quote]
就是我问的。。。

目前老大要求对数据库服务器自动监控,CPU满负荷持续5分钟、内存满、磁盘可用空间过低时都要自动报警。之前都是人工看得,被批评得一塌糊涂。虽然根据sp_monitor等系统过程写了几个存储过程来读系统表,但总觉得不准确。磁盘的倒是可以从数据库读到数据,就是CPU和内存比较头疼。
prcgolf 2008-11-04
  • 打赏
  • 举报
回复
各位大侠能否写个详细例子,不要一笔带过,我们不是很明白,谢了
prcgolf 2008-11-04
  • 打赏
  • 举报
回复
up
Yang_ 2008-11-04
  • 打赏
  • 举报
回复
.
等不到来世 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 happyflystone 的回复:]
刚才有一个人还问这个工具来着:
typeperf.exe
[/Quote]
刚才有一个人还问这个过程来着:
sp_monitor
水族杰纶 2008-11-04
  • 打赏
  • 举报
回复
以上各项出现问题时如何报警的?
利用SQL MAIL
aloto 2008-11-04
  • 打赏
  • 举报
回复
做了2年的DBA,从来不需要监控数据库服务器.
-狙击手- 2008-11-04
  • 打赏
  • 举报
回复
刚才有一个人还问这个工具来着:
typeperf.exe
hyde100 2008-11-04
  • 打赏
  • 举报
回复
关注
加载更多回复(10)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧