如何在Ubuntu上监控SQL Server
在Ubuntu系统上监控SQL Server(Linux版本),可通过自带命令行工具、图形化管理工具、开源监控方案及自定义脚本等方式,覆盖资源占用、性能指标、实时活动等多维度需求。以下是具体方法:
通过Linux原生工具快速查看SQL Server进程的资源消耗及系统状态,适合快速排查问题:
top/htop:实时显示系统中各个进程的CPU、内存使用情况。通过ps aux | grep mssql过滤出SQL Server主进程(sqlservr),观察其资源占用;htop(需安装:sudo apt install htop)提供更友好的界面和排序功能。vmstat:监控系统虚拟内存、CPU活动及磁盘IO。安装sysstat包(sudo apt install sysstat)后,运行vmstat 1(每秒刷新一次),重点关注cpu us(用户态CPU使用率)、memory free(空闲内存)等指标。iostat:查看磁盘IO负载。通过iostat -x 1(需sysstat包)查看各磁盘的%util(利用率)、await(响应时间),判断是否存在IO瓶颈。netstat/ss:监控网络连接。运行netstat -an | grep mssql或ss -tulnp | grep mssql,查看SQL Server监听的端口(默认1433)及连接状态。SQL Server提供了内置的性能监控工具,可直接获取数据库级别的详细指标:
sys.dm_exec_requests:查看当前正在执行的请求(如查询语句、执行状态、等待类型);sys.dm_exec_sessions:查看所有会话信息(如登录用户、会话状态);sys.dm_os_performance_counters:获取操作系统级别的性能计数器(如页面生命周期、缓冲池命中率)。SELECT TOP 5
r.session_id,
r.status,
r.cpu_time,
r.total_elapsed_time,
t.text AS query_text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
ORDER BY r.total_elapsed_time DESC;
```。
Object Explorer → SQL Server Agent → Performance Monitor)添加计数器(如“SQL Server: Batch Requests/sec”“Processor Time”);对于需要长期存储、可视化及告警的场景,推荐使用以下开源工具组合:
mssql-exporter)将SQL Server指标(如CPU使用率、内存占用、数据库大小)转换为Grafana dashboard(支持自定义图表、告警规则)。sudo apt install prometheus)并配置prometheus.yml,添加SQL Server Exporter作为目标;sudo apt install grafana),导入SQL Server监控模板(如Grafana社区提供的“SQL Server”模板),即可查看实时 dashboard。sudo apt install netdata安装,访问http://<Ubuntu_IP>:19999即可查看SQL Server相关的资源使用情况。若需要特定指标的阈值告警(如CPU使用率超过80%时发送邮件),可编写Shell或Python脚本:
#!/bin/bash
THRESHOLD=80 # CPU阈值(%)
EMAIL="admin@example.com"
CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
if (( $(echo "$CPU_USAGE > $THRESHOLD" | bc -l) )); then
echo "$CURRENT_TIME - CPU使用率超过阈值($THRESHOLD%),当前使用率:$CPU_USAGE%" | mail -s "SQL Server CPU告警" "$EMAIL"
fi
将脚本保存为monitor_cpu.sh,添加执行权限(chmod +x monitor_cpu.sh),并通过cron定时运行(如每5分钟一次:*/5 * * * * /path/to/monitor_cpu.sh)。无论使用哪种监控方式,都应配置告警通知,及时响应问题:
mailx工具发送邮件(安装:sudo apt install mailutils),脚本中调用mail命令(如上述Shell脚本示例);通过上述方法,可全面监控Ubuntu上SQL Server的运行状态,及时发现并解决性能问题,确保数据库稳定运行。