Microsoft SQL Server 被廣泛用於企業的核心服務,在 Zabbix 中使用 MSSQL by ODBC 監控範本,我們可以容易的監控以下項目:
監控帳號建立
新增一個用於監控的 MSSQL 帳號,例如 zbx_monitor。
USE [master]
GO
CREATE LOGIN [zbx_monitor] WITH PASSWORD=N'your_password', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
允許 zbx_monitor 帳號可以登入 master 資料庫,並授予讀取資料庫狀態的資料表權限。
USE [master]
GO
CREATE 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]
GO
CREATE 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]
GO
CREATE USER zbx_monitor FOR LOGIN zbx_monitor;
ALTER ROLE [db_datareader] ADD MEMBER [zbx_monitor]
GO
允許 zbx_monitor 帳號可以登入 model 資料庫,並授予讀取資料表的權限。
USE [model]
GO
CREATE USER zbx_monitor FOR LOGIN zbx_monitor;
ALTER ROLE [db_datareader] ADD MEMBER [zbx_monitor]
GO
安裝 Microsoft ODBC Driver
新增套件來源檔案
sudo su
curl 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.list
exit
透過以下指令進行安裝
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools17
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo 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 Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.10.so.2.1
UsageCount=1
配置 ODBC 連接訊息
sudo vi /etc/odbc.ini
[your_database_name]
Driver = ODBC Driver 17 for SQL Server
Server = your_database_ip
PORT = 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 0
1 rows fetched
SQL> quit
確認可以透過 ODBC 登入想要監控的資料庫伺服器,接下來就可以回到 Zabbix 進行設定。
Zabbix
依照自己的分類與命名習慣建立 Host 主機即可,然後在 Templates 選擇 Templates/Databases,勾選 MSSQL by ODBC 。
接下來切換到 Macros 頁面,添加以下 Macro。
如果用不到的 Discovery Rules 可以先禁用,先啟用以下兩項即可。
驗證一下 Last Data 是否有抓到了
然後可以到 Granafa 開心的畫圖了
今天的分享就到這邊,謝謝大家。
參考文件