iT邦幫忙

0

如何在 Zabbix 中使用 MSSQL by ODBC 監控範本

  • 分享至 

  • xImage
  •  

Microsoft SQL Server 被廣泛用於企業的核心服務,在 Zabbix 中使用 MSSQL by ODBC 監控範本,我們可以容易的監控以下項目:

  • 監控 MSSQL 效能計數器指標
  • 監控是否有新增的實例
  • 監控是否有新增的資料庫
  • 監控資料庫備份是否成功
  • 監控資料庫排程是否成功
  • 監控鏡像資料庫
  • 監控資料庫 Always On 狀態

監控帳號建立
新增一個用於監控的 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。

  • {$MSSQL.DSN}:your_database_name
  • {$MSSQL.PORT}:1433
  • {$MSSQL.USER}:zbx_monitor
  • {$MSSQL.PASSWORD}:your_password

如果用不到的 Discovery Rules 可以先禁用,先啟用以下兩項即可。

  • Database Discovery
  • Job Discovery

驗證一下 Last Data 是否有抓到了

然後可以到 Granafa 開心的畫圖了

今天的分享就到這邊,謝謝大家。

參考文件

  1. https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/mssql_odbc/README.md
  2. https://www.zabbix.com/documentation/6.0/en/manual/config/templates_out_of_the_box/odbc_checks
  3. https://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

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言