Microsoft SQL Server 被广泛用于企业的核心服务,在 Zabbix 中使用 MSSQL by ODBC 监控範本,我们可以容易的监控以下项目:
监控 MSSQL 效能计数器指标监控是否有新增的实例监控是否有新增的资料库监控资料库备份是否成功监控资料库排程是否成功监控镜像资料库监控资料库 Always On 状态监控帐号建立
新增一个用于监控的 MSSQL 帐号,例如 zbx_monitor。
USE [master]GOCREATE LOGIN [zbx_monitor] WITH PASSWORD=N'your_password', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFFGO
允许 zbx_monitor 帐号可以登入 master 资料库,并授予读取资料库状态的资料表权限。
USE [master]GOCREATE USER zbx_monitor FOR LOGIN zbx_monitor;GRANT VIEW SERVER STATE TO zbx_monitor;GRANT SELECT ON sys.databases TO zbx_monitor;GRANT SELECT ON sys.availability_groups TO zbx_monitor;GRANT SELECT ON sys.dm_hadr_database_replica_states TO zbx_monitor;GRANT SELECT ON sys.dm_hadr_availability_replica_cluster_states TO zbx_monitor;GRANT SELECT ON sys.dm_hadr_availability_replica_states TO zbx_monitor;GRANT SELECT ON sys.database_mirroring TO zbx_monitor;GO
允许 zbx_monitor 帐号可以登入 msdb 资料库,并授予读取工作排程资料表的权限。
USE [msdb]GOCREATE USER zbx_monitor FOR LOGIN zbx_monitor;GRANT SELECT ON OBJECT::msdb.dbo.sysjobs TO zbx_monitor;GRANT SELECT ON OBJECT::msdb.dbo.sysjobservers TO zbx_monitor;GRANT SELECT ON OBJECT::msdb.dbo.sysjobactivity TO zbx_monitor;GO
以下为可选用的,若要监控使用者资料库的资料表才需要添加。
允许 zbx_monitor 帐号可以登入使用者资料库,并授予读取资料表的权限。
USE [Database]GOCREATE USER zbx_monitor FOR LOGIN zbx_monitor;ALTER ROLE [db_datareader] ADD MEMBER [zbx_monitor]GO
允许 zbx_monitor 帐号可以登入 model 资料库,并授予读取资料表的权限。
USE [model]GOCREATE USER zbx_monitor FOR LOGIN zbx_monitor;ALTER ROLE [db_datareader] ADD MEMBER [zbx_monitor]GO
安装 Microsoft ODBC Driver
新增套件来源档案
sudo sucurl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list > /etc/apt/sources.list.d/mssql-release.listexit
透过以下指令进行安装
sudo apt-get updatesudo ACCEPT_EULA=Y apt-get install -y msodbcsql17# optional: for bcp and sqlcmdsudo ACCEPT_EULA=Y apt-get install -y mssql-tools17echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrcsource ~/.bashrc# optional: for unixODBC development headerssudo apt-get install -y unixodbc-dev
确认一下 ODBC Driver
cat /etc/odbcinst.ini
[ODBC Driver 17 for SQL Server]Description=Microsoft ODBC Driver 17 for SQL ServerDriver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.10.so.2.1UsageCount=1
配置 ODBC 连接讯息
sudo vi /etc/odbc.ini
[your_database_name]Driver = ODBC Driver 17 for SQL ServerServer = your_database_ipPORT = 1433
进行 ODBC 连接测试
isql -v your_database_name zbx_monitor your_password
登入成功,执行 select @@version 看看。
+---------------------------------------+| Connected! || || sql-statement || help [tablename] || quit || |+---------------------------------------+SQL> select @@version+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Microsoft SQL Server 2016 (RTM-GDR) (KB4019088) - 13.0.1742.0 (X64) Jul 5 2017 23:41:17 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows Server 2016 Standard 6.3 <X64> (Build 14393: ) (Hypervisor) |+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+SQLRowCount returns 01 rows fetchedSQL> quit
确认可以透过 ODBC 登入想要监控的资料库伺服器,接下来就可以回到 Zabbix 进行设定。
Zabbix
依照自己的分类与命名习惯建立 Host 主机即可,然后在 Templates 选择 Templates/Databases,勾选 MSSQL by ODBC 。
接下来切换到 Macros 页面,添加以下 Macro。
{$MSSQL.DSN}:your_database_name{$MSSQL.PORT}:1433{$MSSQL.USER}:zbx_monitor{$MSSQL.PASSWORD}:your_password如果用不到的 Discovery Rules 可以先禁用,先启用以下两项即可。
Database DiscoveryJob Discovery验证一下 Last Data 是否有抓到了
然后可以到 Granafa 开心的画图了
今天的分享就到这边,谢谢大家。
参考文件
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mssql_odbc/README.mdhttps://www.zabbix.com/documentation/6.0/en/manual/config/templates_out_of_the_box/odbc_checkshttps://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15&tabs=ubuntu18-install%2Calpine17-install%2Cdebian8-install%2Credhat7-13-install%2Crhel7-offline