如何监控CentOS上的SQL Server状态
导读:监控思路总览 从四个层面入手:服务可用性、SQL 内部指标、操作系统资源、日志与告警,形成闭环监控与快速排障路径。 一 快速检查与内置查询 服务状态与日志 检查服务:运行命令:systemctl status mssql-serve...
监控思路总览
- 从四个层面入手:服务可用性、SQL 内部指标、操作系统资源、日志与告警,形成闭环监控与快速排障路径。
一 快速检查与内置查询
- 服务状态与日志
- 检查服务:运行命令:systemctl status mssql-server;异常时可用:systemctl start mssql-server。
- 查看错误日志:路径为 /var/log/mssql/errorlog,用于定位启动失败、登录失败、资源不足等问题。
- 连通性验证
- 端口连通:使用 nc -vz < 端口> 或 telnet < 端口> 验证实例端口可达。
- 基础连通与版本
- 命令行快速探测:sqlcmd -S < host_or_ip> , -U -P -Q “SELECT @@VERSION; ”。
- SQL 内部关键查询
- 活跃会话与请求:
- 查看当前会话与请求:SELECT session_id, request_id, loginame, program_name, status, command, start_time, cpu_time, reads, writes FROM sys.dm_exec_sessions s LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id ORDER BY cpu_time DESC;
- 查看正在阻塞与等待:SELECT session_id, blocking_session_id, wait_type, wait_time, wait_resource FROM sys.dm_exec_requests WHERE blocking_session_id < > 0 OR wait_time > 0;
- 日志空间:DBCC SQLPERF(LOGSPACE);
- 连接与资源快照:SELECT @@CONNECTIONS, @@CPU_BUSY, @@PACKET_ERRORS;
- 活跃会话与请求:
- 可视化辅助
- 使用 SSMS 活动监视器 观察活跃查询、进程、等待与 I/O。
二 操作系统与网络监控
- 进程与资源
- 进程定位:pidof sqlservr;资源占用:top -p $(pidof sqlservr) 或 htop。
- 系统整体:vmstat 1、iostat -x 1、free -m、nmon、dstat、sar、glances。
- 存储与空间
- 磁盘空间:df -h;I/O 性能:iostat。
- 网络
- 连接与端口:ss -lntp | grep sqlservr、netstat -anp | grep sqlservr;连通性:ping、nc/telnet。
三 第三方监控与可视化
- Prometheus + Grafana
- 部署 prometheus-mssql-exporter 采集 SQL Server 指标,Prometheus 拉取后由 Grafana 展示与告警。
- Zabbix
- 通过 Zabbix Agent 或 ODBC 采集 MSSQL 指标,配置触发器实现阈值告警与可视化。
- Nagios
- 使用 check_sqlserver 等插件对连接、备份、作业与性能计数器进行监控与告警。
- 其他
- 商业与专业工具:SolarWinds DPA、Redgate SQL Monitor 等,用于深度性能分析与瓶颈定位。
四 告警与日志联动
- 日志集中与解析
- 持续 tail -f /var/log/mssql/errorlog,将关键错误(如 ERROR、FATAL)通过 rsyslog 或 Fluent Bit 发送到 Elasticsearch + Kibana 或 Loki 进行检索与可视化。
- 告警规则示例
- 服务宕机:当 systemctl is-active mssql-server 返回非 active 时触发。
- 错误日志新出现“FATAL/ERROR”:基于日志采集平台的 关键字告警。
- 连接异常:连续 3 次 nc 探测端口失败触发。
- 资源阈值:如 CPU > 80% 持续 5 分钟、可用内存 < 10%、磁盘使用率 > 85%、iostat await > 20ms。
- SQL 内部异常:如 阻塞会话 > 0 持续 2 分钟、长事务/高 CPU 查询、日志空间使用率 > 80%。
五 排障与性能优化建议
- 定位阻塞与慢查询
- 使用 sys.dm_exec_requests 与 sys.dm_exec_sessions 找出阻塞链与高成本查询;结合 sys.dm_exec_query_stats 与执行计划分析优化。
- 长事务与锁竞争
- 通过 扩展事件(Extended Events) 捕获 long_running_query、deadlock、lock_timeout 等事件,保存为文件供离线分析。
- 存储与空间
- 用 df -h 检查数据/日志盘空间,用 iostat 评估 I/O 瓶颈;必要时扩容或优化文件布局。
- 配置与版本
- 复核 mssql.conf 等配置项是否符合最佳实践;保持 SQL Server 与 Linux 内核/驱动为稳定版本。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何监控CentOS上的SQL Server状态
本文地址: https://pptw.com/jishu/749876.html
