iT邦幫忙

1

Zabbix 6.0 使用MSSQL by ODBC 監控範本的問題

  • 分享至 

  • xImage

Server : Ubuntu 22.04.2 LTS
PHP Version :PHP 8.1.2-1ubuntu2.13 (cli)
Web Server : Apache/2.4.52
Database Server : mysql Ver 8.0.34-0ubuntu0.22.04.1
Zabbix: 6.0.19

Server: Windows Server 2019
Database Server : MS SQL 2016

在zabbix 選擇 Templates/Databases,並勾選 MSSQL by ODBC。
有些資料能撈到,如MSSQL: Uptime、Version、State和backup等,
但大多都是空白跟驚嘆號,而驚嘆號錯誤分類如下:
1.Preprocessing failed...
2.Cannot evaluate function: not enough data at...

想請問各位高手,這些問題是出在哪裡呢? 謝謝!!

不明
【**此則訊息已被站方移除**】
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
Ivan Cheng
iT邦研究生 5 級 ‧ 2023-08-24 13:35:23
最佳解答

Zabbix 透過 ODBC 範本監控 MSSQL 取不到資料,常見有以下幾種狀況:

1) 權限不足問題
針對這個問題可以參考 如何在 Zabbix 中使用 MSSQL by ODBC 監控範本,裡面已經有權限範例供大家參考。

2) SQL Server 安裝時使用非預設的 Instance Name,造成預處理失敗。
找一個預處理失敗的項目,例如 Log bytes flushed per second。
https://ithelp.ithome.com.tw/upload/images/20230824/20159730DURyYWLvoK.png
查看 Preprocessing,可以得知是透過 JSONPATH 的方式取得監控項,counter_name=='Log Bytes Flushed/sec'

$[?(@.object_name=='{$MSSQL.INSTANCE}:Databases' && @.counter_name=='Log Bytes Flushed/sec' && @.instance_name=='{#DBNAME}')].cntr_value.first()

接下來我們會需要 MSSQL: Get performance counters 的資料
https://ithelp.ithome.com.tw/upload/images/20230824/20159730ljgNHldi0x.png
我們可以直接到資料庫執行 SQL query 或者到該主機執行 MSSQL: Get performance counters 取得結果。
https://ithelp.ithome.com.tw/upload/images/20230824/20159730lrF2KR3T5N.png
將 RESULT 的資料取出查找,實際上是有 Log Bytes Flushed/sec 的項目的。
https://ithelp.ithome.com.tw/upload/images/20230824/20159730uzKIbWjiRF.png
其中 object_name 為 "MSSQL$SQL2016:Databases",而 SQL2016 則為該資料庫的 Instance Name。

但是 Zabbix 預設使用的 Instance Name 為 SQLServer,所以造成 Preprocessing failed 找不到該項目。
https://ithelp.ithome.com.tw/upload/images/20230824/20159730ckJO40bRDD.png

只需要在主機的 Macros > Host macros 添加您的 Instance Name 即可
例如 {$MSSQL.INSTANCE} => MSSQL$SQL2016
https://ithelp.ithome.com.tw/upload/images/20230824/201597301ZkZB5Epz3.png

等監控項目能夠正常抓到,Not enough data 造成的 Cannot evaluate 自然也就消失了。

3) 資料長度超過 65,535 被截斷
主要發生在 Zabbix Proxy 代理伺服器,也是最靠北的一種情況。

針對這個問題可以參考 如何在 Zabbix Proxy 中使用 MSSQL by ODBC 監控範本,裡面已經有詳細的解法供大家參考。

Ivan大,您提供的方法能解決這些問題,感謝您的幫忙!!/images/emoticon/emoticon32.gif

不明
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答