Zabbix 6中MSSQL by ODBC模板配置手冊

来源:https://www.cnblogs.com/kerrycode/archive/2023/04/24/17350713.html
-Advertisement-
Play Games

這裡介紹一下如何在Zabbix 6下麵,使用預設自帶的模板MSSQL by ODBC來監控SQL Server資料庫。官方關於Template DB MSSQL By ODBC的介紹如下鏈接所示: https://www.zabbix.com/integrations/mssql 這個項目對應的gi ...


這裡介紹一下如何在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

具體的配置信息如下:

# cat /etc/odbcinst.ini
[PostgreSQL]
Description=ODBC for PostgreSQL
Driver=/usr/lib/psqlodbcw.so
Setup=/usr/lib/libodbcpsqlS.so
Driver64=/usr/lib64/psqlodbcw.so
Setup64=/usr/lib64/libodbcpsqlS.so
FileUsage=1

[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib/libmyodbc5.so
Setup=/usr/lib/libodbcmyS.so
Driver64=/usr/lib64/libmyodbc5.so
Setup64=/usr/lib64/libodbcmyS.so
FileUsage=1

[FreeTDS]
Description=Free Sybase & MS SQL Driver
Driver=/usr/lib/libtdsodbc.so
Setup=/usr/lib/libtdsS.so
Driver64=/usr/lib64/libtdsodbc.so
Setup64=/usr/lib64/libtdsS.so
Port=1433

[MariaDB]
Description=ODBC for MariaDB
Driver=/usr/lib/libmaodbc.so
Driver64=/usr/lib64/libmaodbc.so
FileUsage=1

[Oracle]
Description=ODBC  for Oracle
Driver=/usr/lib/oracle/19.17/client64/lib/libsqora.so.19.1

[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   ##伺服器的IP地址
Port = 1433					  
Database = master

註意,建議你加上TrustServerCertificate選項,具體配置如下所示,如果不加這個選項,你很有可能遇到錯誤2。

樣例1:

[TEST]
Driver = ODBC Driver 18 for SQL Server
Server = 192.168.7.115
Port = 1433
Database = master
TrustServerCertificate = Yes

樣例2:

[TEST2]
Driver = ODBC Driver 18 for SQL Server
Server = 192.168.7.116,14033
Port = 14033
Database = master
TrustServerCertificate = Yes

然後測試驗證是否可以連接資料庫,用具體的資料庫賬號密碼替換username, password

# isql -v TEST username password
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

配置zabbix監控

在主機的配置中添加模板“MSSQL by ODBC”,然後選擇“巨集“,點擊”繼承以及主機巨集“,然後分別給下麵三個巨集輸入相關值

{$MSSQL.DSN}
{$MSSQL.PASSWORD}
{$MSSQL.USER}

註意事項

1:你必須事先在被監控的SQL Server資料庫上面創建相關賬號並授權。如下所示:

USE [master]
GO
CREATE LOGIN [zbx_monitor] WITH PASSWORD=N'*******', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [msdb]
GO
CREATE USER [zbx_monitor] FOR LOGIN [zbx_monitor]
GO
USE [master]
GO
GRANT VIEW SERVER STATE TO [zbx_monitor];
GRANT VIEW ANY DEFINITION TO  [zbx_monitor];
USE [msdb]
GO
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,然後選擇密文模式(抑或先選擇密文模式),這樣不會顯示賬號密碼的明文了。這樣比較安全。如下截圖所示:

選擇密文保存後,你再次打開查看,此時密碼以密文保存。無法查看明文密碼了。

配置完成後,你要檢查相關的監控選項,自動發現規則下的資料庫監控是否正常,有沒有一些問題出現。如果配置OK,Zabbix就會自動採集數據了。

配置可能遇到的錯誤:

錯誤1:

Cannot connect to ODBC DSN: [SQL_ERROR]:[HYT00][0][[unixODBC][Microsoft][ODBC Driver 18 for SQL Server]Login timeout expired]|[08001][258][[unixODBC][Microsoft][ODBC Driver 18 for SQL Server]TCP Provider: Error code 0x102]|[08001][258][[unixODBC][Microsoft][ODBC Driver 18 for SQL Server]A network-related or instance-specific error has occurred while establishin]

分析: 遇到這個問題是因為防火牆屏蔽了1433埠(也有可能是其他埠,預設是1433,根據實際情況確認)導致,找系統管理員或網路管理人員開放1433埠即可解決。

可以使用下麵命令驗證埠是否開放。

#telnet 192.168.xxx.xxx 1433 

如果埠是正常的情況下,依然報下麵錯誤

Cannot connect to ODBC DSN: [SQL_ERROR]:[HYT00][0][[unixODBC][Microsoft][ODBC Driver 18 for SQL Server]Login timeout expired]|[08001][258][[unixODBC][Microsoft][ODBC Driver 18 for SQL Server]TCP Provider: Error code 0x102]|[08001][258][[unixODBC][Microsoft][ODBC Driver 18 for SQL Server]A network-related or instance-specific error has occurred while establishin]

那麼需要進一步排查,例如,我遇到的案例,是因為odbc配置問題導致,如下所示

驗證SQL是否能連接

# isql -v TEST2 xxxxx xxxx
[S1T00][unixODBC][Microsoft][ODBC Driver 18 for SQL Server]Login timeout expired
[08001][unixODBC][Microsoft][ODBC Driver 18 for SQL Server]TCP Provider: Error code 0x102
[08001][unixODBC][Microsoft][ODBC Driver 18 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.
[ISQL]ERROR: Could not SQLConnect

/etc/odbc.ini中odbc配置如下所示:

[TEST2]
Driver = ODBC Driver 18 for SQL Server
Server = 192.168.7.116
Port = 14033
Database = master
TrustServerCertificate = Yes

改為下麵配置就正常了,似乎參數Port不生效。

[TEST2]
Driver = ODBC Driver 18 for SQL Server
Server = 192.168.7.116,14033
Port = 14033
Database = master
TrustServerCertificate = Yes

錯誤2:

Cannot connect to ODBC DSN: [SQL_ERROR]:[08001][-1][[unixODBC][Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:1416F086:SSL routines:tls_process_server_certificate:c]|[08001][-1][[unixODBC][Microsoft][ODBC Driver 18 for SQL Server]Client unable to establish connection]

遇到這個錯誤是因為加密使用的是資料庫上的證書。這個證書需要通過證書機構的驗證,除非設置了信任證書的屬性(SQL_COPT_SS_TRUST_SERVER_CERTIFICATE, SQL_TRUST_SERVER_CERTIFICATE_YES)或者,鏈接字元串包含TrustServerCertificate=yes。只要其中任意一項是 true,並且資料庫上沒有證書的話,那麼資料庫伺服器就能用自己生成並簽名的證書來加密鏈接。

修改/etc/odbc.ini配置文件,增加紅色部分(TrustServerCertificate = Yes)即可解決問題。

# cat /etc/odbc.ini
[TEST]
Driver = ODBC Driver 18 for SQL Server
Server = 192.168.63.115
Port = 1433
Database = master
TDS_Version = 8.0
TrustServerCertificate = Yes
掃描上面二維碼關註我 如果你真心覺得文章寫得不錯,而且對你有所幫助,那就不妨幫忙“推薦"一下,您的“推薦”和”打賞“將是我最大的寫作動力! 本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接.
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 飛騰愛好者技術交流群碼公眾號“烏拉大喵喵” 顆粒線序配置輔助工具 B站講解視頻: 正文內容: 一、 飛騰X100顯存使用LPDDR4時,需要工程師在X100的固件中去配置線序交換說明,就類似下麵這個: 圖1 我們需要輸入每個slice中DQ的線序,也需要輸入slice之間的交換關係,這個工作量也不小 ...
  • 一、 前言 搭建和維護集群環境中時鐘同步是非常重要一環。如果集群的時間不統一,例如ceph集群就會報錯無法更新數據、CDH集群無法添加客戶端等等。目前主流在Linux系統搭建集群用到NTP和chrony軟體,本文簡單介紹兩者的集群搭建。 二、 NTP和chrony區別 根據chrony官網描述,主要 ...
  • 使用華為雲鯤鵬彈性雲伺服器部署Discuz 華為雲配置地址: 實驗目的與基本要求 實驗目的: Discuz!是一套通用社區論壇軟體系統,用戶在不需要任何編程的基礎上,通過簡單的設置和安裝,在互聯網上搭建起具備完善功能、很強負載能力和可高度定製的論壇服務。實驗將在華為雲鯤鵬彈性雲伺服器CentOS系統 ...
  • 伺服器環境:windows server,phpstudy,Apache 一、阿裡雲下載SSL證書 1、前往阿裡雲官網 登錄進入控制台,搜索“SSL證書(應用安全)”,點擊左側“SSL證書”菜單,點擊“免費證書” 2、購買證書 點擊“立即購買”,選擇配置,支付金額為0元,即為免費。 3、創建證書 購 ...
  • 前言 錄這套教程主要幫助那些對Linux瞭解很少但又想做一個初步學習的小伙伴,因為我們一般在找開發相關的工作面試時偶爾也會被問到,而且做為一名開發人員如果不會操作Linux操作系統確實也有些說不過去,因為一般我們在企業中用到的中間件、服務的部署等都是在Linux上,本期教程就帶著大家來入門下Linu ...
  • 一款輕量級、高性能、功能強大的內網穿透代理伺服器。支持tcp、udp、socks5、http等幾乎所有流量轉發,並帶有功能強大的web管理端。 ...
  • 記錄 mongo 資料庫用原生自帶的命令工具使用 json 文件方式進行導入、導出的操作! 在一次數據更新中,同事把老數據進行了清空操作,但是新的邏輯數據由於某種原因(好像是她的電腦中病毒了),一直無法正常連接資料庫進行數據插入,然後下午2點左右要給甲方演示,所以要緊急恢複本地的部分數據到生產庫。 ...
  • 功能03-優惠券秒殺01 4.功能03-優惠券秒殺 4.1全局唯一ID 4.1.1全局ID生成器 每個店鋪都可以發佈優惠券: 當用戶搶購時,就會生成訂單,並保存到tb_voucher_order這張表中。訂單表如果使用資料庫的自增id就存在一些問題: id的規律性太明顯:用戶可以根據id猜測一些信息 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...