这里介绍一下如何在Zabbix 6下面,使用默认自带的模板MSSQL by ODBC来监控SQL Server数据库。官方关于Template DB MSSQL By ODBC的介绍如下链接所示:
https://www.zabbix.com/integrations/mssql
这个项目对应的github地址为:
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mssql_odbc?at=release/6.2
安装ODBC
当前安装Zabbix 6.2的服务器为RHEL 8,具体版本为:
# more /etc/redhat-release
Red Hat Enterprise Linux release 8.6 (Ootpa)
在Zabbix Server或Zabbix Proxy Server上安装ODBC驱动,一般来说,安装Zabbix Server时已经安装了unixODBC等相关包
# yum list installed | grep unixODBC
unixODBC.x86_64 2.3.7-1.el8 @local-rhel-8-for-x86_64-appstream-rpms
unixODBC-devel.x86_64 2.3.7-1.el8 @local-rhel-8-for-x86_64-appstream-rpms
如果没有安装的的话,使用下面命令安装。
#yum –y install unixODBC unixODBC-devel
安装Microsoft ODBC 18
这里我们不打算安装freetds,我们安装Microsoft ODBC 18。具体可以参考下面链接:
https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15
https://learn.microsoft.com/zh-cn/sql/connect/odbc/linux-mac/known-issues-in-this-version-of-the-driver?view=sql-server-ver15#connectivity
我们去下面链接下载对应的安装包:
https://packages.microsoft.com/rhel/8/prod/
本地安装:
#yum localinstall msodbcsql18-18.1.2.1-1.x86_64.rpm
配置ODBC数据源
检查/etc/odbcinst.ini,你会看到已经配置了ODBC Driver信息
[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.1.so.2.1
UsageCount=1
在/etc/odbc.ini中配置数据源,一般是你要监控的SQL Server数据库服务器。我们这里简单测试一下:
[TEST]
Driver = ODBC Driver 18 for SQL Server
Server = 192.168.7.115
Port = 1433
Database = master
注意,建议你加上TrustServerCertificate选项,具体配置如下所示,如果不加这个选项,你很有可能遇到错误。
[TEST]
Driver = ODBC Driver 18 for SQL Server
Server = 192.168.7.115
Port = 1433
Database = master
TrustServerCertificate = Yes
然后测试验证是否可以连接数据库,用具体的数据库账号密码替换username, password
# isql -v TEST username password
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
配置zabbix监控
当前Zabbix中默认自带模板“MSSQL by ODBC”,所以不用导入添加这个模板。我们只需在主机的配置中添加模板“MSSQL by ODBC”,然后选择“宏“,点击”继承以及主机宏“,然后分别给下面三个宏输入相关值
{$MSSQL.DSN}
{$MSSQL.PASSWORD}
{$MSSQL.USER}
注意事项:
1:你必须事先在被监控的SQL Server数据库上面创建相关账号并授权。
USE [master]
GO
CREATE LOGIN [zbx_monitor] WITH PASSWORD=N'KDjyT23765&$-864', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [msdb]
GO
CREATE USER [zbx_monitor] FOR LOGIN [zbx_monitor]
GO
GRANT VIEW SERVER STATE TO [zbx_monitor];
GRANT VIEW ANY DEFINITION TO [zbx_monitor];
GRANT SELECT ON msdb.dbo.sysjobs TO zbx_monitor;
GRANT SELECT ON msdb.dbo.sysjobservers TO zbx_monitor;
GRANT SELECT ON msdb.dbo.sysjobactivity TO zbx_monitor;
GRANT EXECUTE ON msdb.dbo.agent_datetime TO zbx_monitor;
2:你输入了账号密码后,最好点击右边的T,然后选择密文模式,这样不会显示账号密码的明文了。这样比较安全。
监控指标图形和告警
下面是Template MSSQL by ODBC这个模板的一些监控指标和告警的截图,至于监控的详细指标信息,建议参考官方文档[1],如果你想深入了解一下监控采集的具体数据以及想扩展一些指标,建议参考github上的项目[2]
参考资料
MSSQL by ODBC: https://www.zabbix.com/integrations/mssql
[2]github: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mssql_odbc?at=release/6.2