温馨提示×

ubuntu sqlserver如何监控

小樊
37
2026-10-03 20:43:04
栏目: 云计算

在 Ubuntu 上监控 SQL Server(Microsoft SQL Server on Linux),可以从 系统层、数据库层、日志、第三方工具 四个维度来做。下面给你一套实用方案。


一、系统层监控(Ubuntu)

1. 基础系统资源

top
htop
free -h
df -h
iostat -x 1

2. SQL Server 进程

ps aux | grep sqlservr

重点关注:

  • CPU 占用
  • 内存占用
  • 是否有 OOM(dmesg)

二、SQL Server 自带监控方式

1. 使用 sqlcmd 查看状态

sqlcmd -S localhost -U sa -P '密码'

常用 DMV(动态管理视图):

-- 当前连接
SELECT * FROM sys.dm_exec_connections;

-- 正在执行的语句
SELECT
    r.session_id,
    r.status,
    r.command,
    t.text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t;

-- 等待统计
SELECT * FROM sys.dm_os_wait_stats
ORDER BY wait_time_ms DESC;

三、SQL Server 日志(非常重要)

1. SQL Server 错误日志

cat /var/opt/mssql/log/errorlog

2. Ubuntu 系统日志

journalctl -u mssql-server
journalctl -u mssql-server -f

四、开启 SQL Server 扩展事件(XEvent)

适合深入分析:

  • 慢查询
  • 死锁
  • 登录失败

示例(记录慢查询):

CREATE EVENT SESSION [SlowQueries]
ON SERVER
ADD EVENT sqlserver.sql_statement_completed
(ACTION(sqlserver.sql_text)
 WHERE duration > 5000000)
ADD TARGET package0.event_file(SET filename=N'/var/opt/mssql/log/slow.xel')
WITH (STARTUP_STATE=ON);

五、第三方监控方案(推荐)

1. Prometheus + node_exporter + sql_exporter

最常用方案

组件:

  • node_exporter(系统)
  • sql_exporter(SQL Server)
  • Prometheus
  • Grafana

示例 sql_exporter 查询:

metrics:
  - sql: |
      SELECT cntr_value
      FROM sys.dm_os_performance_counters
      WHERE counter_name = 'Batch Requests/sec'
    metrics:
      - batch_requests:
          usage: "GAUGE"

2. Grafana 官方 Dashboard

  • SQL Server Dashboard
  • Linux Host Dashboard

六、常用监控指标(重点)

✅ CPU 使用率
✅ 内存使用(SQL Server 会占用大量内存)
✅ 磁盘 IO(日志 / 数据文件)
✅ 连接数
✅ 慢查询
✅ 死锁
✅ 错误日志异常


七、常见问题排查

SQL Server 突然变慢

SELECT * FROM sys.dm_os_wait_stats
ORDER BY wait_time_ms DESC;

内存爆了

free -h
cat /var/opt/mssql/log/errorlog | grep memory

八、总结(推荐组合)

生产环境推荐:

Ubuntu 系统监控
+ journalctl
+ DMV
+ Prometheus + Grafana
+ XEvent(慢查询)

如果你是:

  • 个人测试
  • 小公司
  • 云服务器

我也可以帮你 直接给一套可复制的监控部署方案(含命令)。

0 踩